RTEMS-6
Annotated Report
libimfs
Sun Feb 28 23:45:50 2021

001079cc <IMFS_add_node>:                                                                 
#endif                                                                                    
                                                                                          
#include <rtems/imfs.h>                                                                   
                                                                                          
int IMFS_add_node( const char *path, IMFS_jnode_t *node, void *arg )                      
{                                                                                         
  1079cc:   b5f0        push    {r4, r5, r6, r7, lr}                                      
  1079ce:   b095        sub sp, #84 ; 0x54                                                
  rtems_filesystem_eval_path_context_t    ctx;                                            
  const rtems_filesystem_location_info_t *currentloc;                                     
  int                                     eval_flags;                                     
  int                                     rv;                                             
                                                                                          
  mode = node->st_mode;                                                                   
  1079d0:   694c        ldr r4, [r1, #20]                                                 
{                                                                                         
  1079d2:   460d        mov r5, r1                                                        
  1079d4:   4606        mov r6, r0                                                        
  1079d6:   4617        mov r7, r2                                                        
  mode &= ~rtems_filesystem_umask;                                                        
  1079d8:   f7ff fece   bl  107778 <rtems_current_user_env_get>                           
  1079dc:   6883        ldr r3, [r0, #8]                                                  
  1079de:   ea24 0403   bic.w   r4, r4, r3                                                
                                                                                          
  switch (mode & S_IFMT) {                                                                
  1079e2:   f404 4370   and.w   r3, r4, #61440  ; 0xf000                                  
  1079e6:   f5b3 4fc0   cmp.w   r3, #24576  ; 0x6000                                      
  1079ea:   d014        beq.n   107a16 <IMFS_add_node+0x4a>                               <== ALWAYS TAKEN
  1079ec:   d90d        bls.n   107a0a <IMFS_add_node+0x3e>                               <== NEVER TAKEN
  1079ee:   f404 4330   and.w   r3, r4, #45056  ; 0xb000                                  <== NOT EXECUTED
  1079f2:   f5b3 4f00   cmp.w   r3, #32768  ; 0x8000                                      <== NOT EXECUTED
  1079f6:   d00e        beq.n   107a16 <IMFS_add_node+0x4a>                               <== NOT EXECUTED
    case S_IFIFO:                                                                         
    case S_IFREG:                                                                         
    case S_IFSOCK:                                                                        
      break;                                                                              
    default:                                                                              
      errno = EINVAL;                                                                     
  1079f8:   f008 fe98   bl  11072c <__errno>                                              
      return -1;                                                                          
  1079fc:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
      errno = EINVAL;                                                                     
  107a00:   2316        movs    r3, #22                                                   
  107a02:   6003        str r3, [r0, #0]                                                  
    rv = -1;                                                                              
  }                                                                                       
                                                                                          
  rtems_filesystem_eval_path_cleanup( &ctx );                                             
  return rv;                                                                              
}                                                                                         
  107a04:   4620        mov r0, r4                                                        
  107a06:   b015        add sp, #84 ; 0x54                                                
  107a08:   bdf0        pop {r4, r5, r6, r7, pc}                                          
  switch (mode & S_IFMT) {                                                                
  107a0a:   f5a3 5380   sub.w   r3, r3, #4096   ; 0x1000                                  
  107a0e:   f423 5380   bic.w   r3, r3, #4096   ; 0x1000                                  
  107a12:   2b00        cmp r3, #0                                                        
  107a14:   d1f0        bne.n   1079f8 <IMFS_add_node+0x2c>                               
  currentloc = rtems_filesystem_eval_path_start( &ctx, path, eval_flags );                
  107a16:   2218        movs    r2, #24                                                   
  107a18:   4631        mov r1, r6                                                        
  107a1a:   eb0d 0002   add.w   r0, sp, r2                                                
  107a1e:   f7ff fb73   bl  107108 <rtems_filesystem_eval_path_start>                     
  return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;                               
  107a22:   6943        ldr r3, [r0, #20]                                                 
  107a24:   68db        ldr r3, [r3, #12]                                                 
  if ( IMFS_is_imfs_instance( currentloc ) ) {                                            
  107a26:   6a5a        ldr r2, [r3, #36]   ; 0x24                                        
  107a28:   f248 6345   movw    r3, #34373  ; 0x8645                                      
  107a2c:   f2c0 0310   movt    r3, #16                                                   
  107a30:   429a        cmp r2, r3                                                        
  107a32:   d00b        beq.n   107a4c <IMFS_add_node+0x80>                               
    rtems_filesystem_eval_path_error( &ctx, ENOTSUP );                                    
  107a34:   2186        movs    r1, #134    ; 0x86                                        
  107a36:   a806        add r0, sp, #24                                                   
    rv = -1;                                                                              
  107a38:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
    rtems_filesystem_eval_path_error( &ctx, ENOTSUP );                                    
  107a3c:   f7ff fbc8   bl  1071d0 <rtems_filesystem_eval_path_error>                     
  rtems_filesystem_eval_path_cleanup( &ctx );                                             
  107a40:   a806        add r0, sp, #24                                                   
  107a42:   f7ff fbe5   bl  107210 <rtems_filesystem_eval_path_cleanup>                   
}                                                                                         
  107a46:   4620        mov r0, r4                                                        
  107a48:   b015        add sp, #84 ; 0x54                                                
  107a4a:   bdf0        pop {r4, r5, r6, r7, pc}                                          
  ctx->flags = flags;                                                                     
  107a4c:   2360        movs    r3, #96 ; 0x60                                            
    rtems_filesystem_eval_path_continue( &ctx );                                          
  107a4e:   a806        add r0, sp, #24                                                   
  107a50:   930a        str r3, [sp, #40]   ; 0x28                                        
    rtems_filesystem_eval_path_set_path( &ctx, node->name, node->namelen );               
  107a52:   8a2b        ldrh    r3, [r5, #16]                                             
  ctx->pathlen = pathlen;                                                                 
  107a54:   9307        str r3, [sp, #28]                                                 
  ctx->path = path;                                                                       
  107a56:   68eb        ldr r3, [r5, #12]                                                 
  107a58:   9306        str r3, [sp, #24]                                                 
    rtems_filesystem_eval_path_continue( &ctx );                                          
  107a5a:   f7ff fac1   bl  106fe0 <rtems_filesystem_eval_path_continue>                  
  return ctx->token;                                                                      
  107a5e:   9b08        ldr r3, [sp, #32]                                                 
    if ( rtems_filesystem_eval_path_get_token( &ctx ) == node->name ) {                   
  107a60:   68ea        ldr r2, [r5, #12]                                                 
  107a62:   429a        cmp r2, r3                                                        
  107a64:   d007        beq.n   107a76 <IMFS_add_node+0xaa>                               
      if ( rtems_filesystem_eval_path_get_token( &ctx ) != NULL ) {                       
  107a66:   b17b        cbz r3, 107a88 <IMFS_add_node+0xbc>                               
        rtems_filesystem_eval_path_error( &ctx, EINVAL );                                 
  107a68:   2116        movs    r1, #22                                                   
  107a6a:   a806        add r0, sp, #24                                                   
      rv = -1;                                                                            
  107a6c:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
        rtems_filesystem_eval_path_error( &ctx, EINVAL );                                 
  107a70:   f7ff fbae   bl  1071d0 <rtems_filesystem_eval_path_error>                     
  107a74:   e7e4        b.n 107a40 <IMFS_add_node+0x74>                                   
      node = IMFS_initialize_node(                                                        
  107a76:   9701        str r7, [sp, #4]                                                  
  107a78:   4628        mov r0, r5                                                        
  107a7a:   8a2b        ldrh    r3, [r5, #16]                                             
  107a7c:   9400        str r4, [sp, #0]                                                  
  107a7e:   6ba9        ldr r1, [r5, #56]   ; 0x38                                        
  107a80:   f000 fdb0   bl  1085e4 <IMFS_initialize_node>                                 
      if ( node != NULL ) {                                                               
  107a84:   4603        mov r3, r0                                                        
  107a86:   b910        cbnz    r0, 107a8e <IMFS_add_node+0xc2>                           
        rv = -1;                                                                          
  107a88:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
  107a8c:   e7d8        b.n 107a40 <IMFS_add_node+0x74>                                   
        parent = currentloc->node_access;                                                 
  107a8e:   9d0e        ldr r5, [sp, #56]   ; 0x38                                        
        rv = 0;                                                                           
  107a90:   2400        movs    r4, #0                                                    
  old_last = tail->previous;                                                              
  107a92:   6caa        ldr r2, [r5, #72]   ; 0x48                                        
  return &the_chain->Tail.Node;                                                           
  107a94:   f105 0144   add.w   r1, r5, #68 ; 0x44                                        
  entry_node->Parent = dir_node;                                                          
  107a98:   6085        str r5, [r0, #8]                                                  
  the_node->next = tail;                                                                  
  107a9a:   6001        str r1, [r0, #0]                                                  
  _Timecounter_Getbintime( &now );                                                        
  107a9c:   a802        add r0, sp, #8                                                    
  tail->previous = the_node;                                                              
  107a9e:   64ab        str r3, [r5, #72]   ; 0x48                                        
  old_last->next = the_node;                                                              
  107aa0:   6013        str r3, [r2, #0]                                                  
  the_node->previous = old_last;                                                          
  107aa2:   605a        str r2, [r3, #4]                                                  
  107aa4:   f002 f90c   bl  109cc0 <_Timecounter_Getbintime>                              
  return now.sec;                                                                         
  107aa8:   e9dd 2302   ldrd    r2, r3, [sp, #8]                                          
  jnode->stat_mtime = now;                                                                
  107aac:   e9c5 230a   strd    r2, r3, [r5, #40]   ; 0x28                                
  jnode->stat_ctime = now;                                                                
  107ab0:   e9c5 230c   strd    r2, r3, [r5, #48]   ; 0x30                                
}                                                                                         
  107ab4:   e7c4        b.n 107a40 <IMFS_add_node+0x74>                                   
  107ab6:   bf00        nop                                                               
                                                                                          

00108674 <IMFS_do_nothing_destroy>: void IMFS_do_nothing_destroy( IMFS_jnode_t *node ) { (void) node; }
  108674:   4770        bx  lr                                                            <== NOT EXECUTED
  108676:   bf00        nop                                                               
                                                                                          

00105510 <IMFS_eval_path_devfs>: return NULL; } void IMFS_eval_path_devfs( rtems_filesystem_eval_path_context_t *ctx ) {
  105510:   e92d 43f8   stmdb   sp!, {r3, r4, r5, r6, r7, r8, r9, lr}                     
  return ctx->pathlen;                                                                    
  105514:   2301        movs    r3, #1                                                    
  105516:   e9d0 8500   ldrd    r8, r5, [r0]                                              
  10551a:   4606        mov r6, r0                                                        
  rtems_filesystem_location_info_t *currentloc;                                           
  IMFS_directory_t                 *dir;                                                  
  IMFS_jnode_t                     *entry;                                                
                                                                                          
  currentloc = rtems_filesystem_eval_path_get_currentloc( ctx );                          
  dir = currentloc->node_access;                                                          
  10551c:   4c26        ldr r4, [pc, #152]  ; (1055b8 <IMFS_eval_path_devfs+0xa8>)        
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;                         
  10551e:   429d        cmp r5, r3                                                        
  dir = currentloc->node_access;                                                          
  105520:   6a07        ldr r7, [r0, #32]                                                 
  for ( i = 0; i < RTEMS_ARRAY_SIZE( IMFS_devfs_dirs ); ++i ) {                           
  105522:   f104 0910   add.w   r9, r4, #16                                               
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;                         
  105526:   d006        beq.n   105536 <IMFS_eval_path_devfs+0x26>                        <== ALWAYS TAKEN
  for ( i = 0; i < RTEMS_ARRAY_SIZE( IMFS_devfs_dirs ); ++i ) {                           
  105528:   3404        adds    r4, #4                                                    
  10552a:   45a1        cmp r9, r4                                                        
  10552c:   d013        beq.n   105556 <IMFS_eval_path_devfs+0x46>                        
    match = IMFS_devfs_dirs[ i ].len == pathlen                                           
  10552e:   f814 3c01   ldrb.w  r3, [r4, #-1]                                             
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;                         
  105532:   429d        cmp r5, r3                                                        
  105534:   d1f8        bne.n   105528 <IMFS_eval_path_devfs+0x18>                        
  105536:   462a        mov r2, r5                                                        
  105538:   4641        mov r1, r8                                                        
  10553a:   4620        mov r0, r4                                                        
  10553c:   f005 fae0   bl  10ab00 <memcmp>                                               
  105540:   2800        cmp r0, #0                                                        
  105542:   d1f1        bne.n   105528 <IMFS_eval_path_devfs+0x18>                        <== ALWAYS TAKEN
      eval_flags &= ~RTEMS_FS_EXCLUSIVE;                                                  
  105544:   6933        ldr r3, [r6, #16]                                                 
  105546:   463d        mov r5, r7                                                        
  ctx->pathlen = 0;                                                                       
  105548:   6070        str r0, [r6, #4]                                                  
  10554a:   f023 0340   bic.w   r3, r3, #64 ; 0x40                                        
  ctx->flags = flags;                                                                     
  10554e:   6133        str r3, [r6, #16]                                                 
                                                                                          
  entry = IMFS_devfs_is_dir( ctx, dir );                                                  
                                                                                          
  if ( entry != NULL ) {                                                                  
  105550:   b10f        cbz r7, 105556 <IMFS_eval_path_devfs+0x46>                        
      rtems_filesystem_eval_path_get_path( ctx ),                                         
      rtems_filesystem_eval_path_get_pathlen( ctx )                                       
    );                                                                                    
    rtems_filesystem_eval_path_clear_path( ctx );                                         
  }                                                                                       
}                                                                                         
  105552:   e8bd 83f8   ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}                     
  return _Chain_Immutable_head( the_chain )->next;                                        
  105556:   6c3c        ldr r4, [r7, #64]   ; 0x40                                        
  return &the_chain->Tail.Node;                                                           
  105558:   f107 0944   add.w   r9, r7, #68 ; 0x44                                        
  while ( current != tail ) {                                                             
  10555c:   454c        cmp r4, r9                                                        
  10555e:   d103        bne.n   105568 <IMFS_eval_path_devfs+0x58>                        <== NEVER TAKEN
  105560:   e025        b.n 1055ae <IMFS_eval_path_devfs+0x9e>                            <== NOT EXECUTED
  return the_node->next;                                                                  
  105562:   6824        ldr r4, [r4, #0]                                                  
  105564:   45a1        cmp r9, r4                                                        
  105566:   d022        beq.n   1055ae <IMFS_eval_path_devfs+0x9e>                        
    match = entry->namelen == pathlen                                                     
  105568:   8a23        ldrh    r3, [r4, #16]                                             
      && memcmp( entry->name, path, pathlen ) == 0;                                       
  10556a:   42ab        cmp r3, r5                                                        
  10556c:   d1f9        bne.n   105562 <IMFS_eval_path_devfs+0x52>                        
  10556e:   68e0        ldr r0, [r4, #12]                                                 
  105570:   462a        mov r2, r5                                                        
  105572:   4641        mov r1, r8                                                        
  105574:   f005 fac4   bl  10ab00 <memcmp>                                               
  105578:   2800        cmp r0, #0                                                        
  10557a:   d1f2        bne.n   105562 <IMFS_eval_path_devfs+0x52>                        
    if ( ( eval_flags & RTEMS_FS_EXCLUSIVE ) == 0 ) {                                     
  10557c:   6933        ldr r3, [r6, #16]                                                 
  10557e:   f013 0340   ands.w  r3, r3, #64 ; 0x40                                        
  105582:   d10e        bne.n   1055a2 <IMFS_eval_path_devfs+0x92>                        <== ALWAYS TAKEN
      --dir->Node.reference_count;                                                        
  105584:   8b3a        ldrh    r2, [r7, #24]                                             
  loc->handlers = node->control->handlers;                                                
  105586:   6ba1        ldr r1, [r4, #56]   ; 0x38                                        
  105588:   3a01        subs    r2, #1                                                    
  10558a:   833a        strh    r2, [r7, #24]                                             
      ++entry->reference_count;                                                           
  10558c:   8b22        ldrh    r2, [r4, #24]                                             
  10558e:   6809        ldr r1, [r1, #0]                                                  
  105590:   3201        adds    r2, #1                                                    
  105592:   8322        strh    r2, [r4, #24]                                             
      currentloc->node_access_2 = IMFS_generic_get_context_by_node( entry );              
  105594:   6c22        ldr r2, [r4, #64]   ; 0x40                                        
      currentloc->node_access = entry;                                                    
  105596:   6234        str r4, [r6, #32]                                                 
  105598:   62b1        str r1, [r6, #40]   ; 0x28                                        
  ctx->pathlen = 0;                                                                       
  10559a:   6073        str r3, [r6, #4]                                                  
      currentloc->node_access_2 = IMFS_generic_get_context_by_node( entry );              
  10559c:   6272        str r2, [r6, #36]   ; 0x24                                        
}                                                                                         
  10559e:   e8bd 83f8   ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, pc}                     
      rtems_filesystem_eval_path_error( ctx, EEXIST );                                    
  1055a2:   4630        mov r0, r6                                                        <== NOT EXECUTED
  1055a4:   2111        movs    r1, #17                                                   <== NOT EXECUTED
}                                                                                         
  1055a6:   e8bd 43f8   ldmia.w sp!, {r3, r4, r5, r6, r7, r8, r9, lr}                     <== NOT EXECUTED
      rtems_filesystem_eval_path_error( ctx, EEXIST );                                    
  1055aa:   f7ff bbdd   b.w 104d68 <rtems_filesystem_eval_path_error>                     <== NOT EXECUTED
  1055ae:   2300        movs    r3, #0                                                    
  ctx->tokenlen = tokenlen;                                                               
  1055b0:   e9c6 8502   strd    r8, r5, [r6, #8]                                          
  ctx->pathlen = 0;                                                                       
  1055b4:   6073        str r3, [r6, #4]                                                  
}                                                                                         
  1055b6:   e7cc        b.n 105552 <IMFS_eval_path_devfs+0x42>                            
  1055b8:   0010ba21    .word   0x0010ba21                                                
                                                                                          

00108878 <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 ) {
  108878:   b570        push    {r4, r5, r6, lr}                                          
  10887a:   b086        sub sp, #24                                                       
   /*                                                                                     
    * Traverse tree that starts at the mt_fs_root and deallocate memory                   
    * associated memory space                                                             
    */                                                                                    
                                                                                          
   loc = temp_mt_entry->mt_fs_root->location;                                             
  10887c:   6a46        ldr r6, [r0, #36]   ; 0x24                                        
  10887e:   466d        mov r5, sp                                                        
  108880:   ce0f        ldmia   r6!, {r0, r1, r2, r3}                                     
  108882:   c50f        stmia   r5!, {r0, r1, r2, r3}                                     
   jnode = (IMFS_jnode_t *)loc.node_access;                                               
  108884:   4614        mov r4, r2                                                        
  return S_ISDIR( node->st_mode );                                                        
  108886:   6953        ldr r3, [r2, #20]                                                 
   loc = temp_mt_entry->mt_fs_root->location;                                             
  108888:   e896 0003   ldmia.w r6, {r0, r1}                                              
  10888c:   f403 4370   and.w   r3, r3, #61440  ; 0xf000                                  
  108890:   e885 0003   stmia.w r5, {r0, r1}                                              
  loc->handlers = node->control->handlers;                                                
  108894:   6ba2        ldr r2, [r4, #56]   ; 0x38                                        
   do {                                                                                   
     next = jnode->Parent;                                                                
     loc.node_access = (void *)jnode;                                                     
     IMFS_Set_handlers( &loc );                                                           
                                                                                          
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {               
  108896:   f5b3 4f80   cmp.w   r3, #16384  ; 0x4000                                      
     next = jnode->Parent;                                                                
  10889a:   68a5        ldr r5, [r4, #8]                                                  
     loc.node_access = (void *)jnode;                                                     
  10889c:   9402        str r4, [sp, #8]                                                  
  10889e:   6812        ldr r2, [r2, #0]                                                  
  1088a0:   9204        str r2, [sp, #16]                                                 
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {               
  1088a2:   d10b        bne.n   1088bc <IMFS_fsunmount+0x44>                              
  return _Chain_Immutable_head( the_chain )->next;                                        
  1088a4:   6c22        ldr r2, [r4, #64]   ; 0x40                                        
  return &the_chain->Tail.Node;                                                           
  1088a6:   f104 0344   add.w   r3, r4, #68 ; 0x44                                        
  1088aa:   429a        cmp r2, r3                                                        
  1088ac:   d006        beq.n   1088bc <IMFS_fsunmount+0x44>                              
       if ( IMFS_is_directory( jnode ) ) {                                                
         if ( jnode_has_children( jnode ) )                                               
           jnode = jnode_get_first_child( jnode );                                        
       }                                                                                  
     }                                                                                    
   } while (jnode != NULL);                                                               
  1088ae:   b1da        cbz r2, 1088e8 <IMFS_fsunmount+0x70>                              
  return S_ISDIR( node->st_mode );                                                        
  1088b0:   6953        ldr r3, [r2, #20]                                                 
  1088b2:   4615        mov r5, r2                                                        
  1088b4:   f403 4370   and.w   r3, r3, #61440  ; 0xf000                                  
  1088b8:   462c        mov r4, r5                                                        
  1088ba:   e7eb        b.n 108894 <IMFS_fsunmount+0x1c>                                  
        result = IMFS_rmnod( NULL, &loc );                                                
  1088bc:   4669        mov r1, sp                                                        
  1088be:   2000        movs    r0, #0                                                    
  1088c0:   f7fe f80e   bl  1068e0 <IMFS_rmnod>                                           
        if ( result != 0 )                                                                
  1088c4:   b990        cbnz    r0, 1088ec <IMFS_fsunmount+0x74>                          
        IMFS_node_destroy( jnode );                                                       
  1088c6:   4620        mov r0, r4                                                        
  1088c8:   f7fd ff80   bl  1067cc <IMFS_node_destroy>                                    
     if ( jnode != NULL ) {                                                               
  1088cc:   b165        cbz r5, 1088e8 <IMFS_fsunmount+0x70>                              
  1088ce:   696b        ldr r3, [r5, #20]                                                 
  1088d0:   f403 4370   and.w   r3, r3, #61440  ; 0xf000                                  
       if ( IMFS_is_directory( jnode ) ) {                                                
  1088d4:   f5b3 4f80   cmp.w   r3, #16384  ; 0x4000                                      
  1088d8:   d1ee        bne.n   1088b8 <IMFS_fsunmount+0x40>                              <== ALWAYS TAKEN
  return _Chain_Immutable_head( the_chain )->next;                                        
  1088da:   6c2a        ldr r2, [r5, #64]   ; 0x40                                        
  return &the_chain->Tail.Node;                                                           
  1088dc:   f105 0144   add.w   r1, r5, #68 ; 0x44                                        
         if ( jnode_has_children( jnode ) )                                               
  1088e0:   428a        cmp r2, r1                                                        
  1088e2:   d1e4        bne.n   1088ae <IMFS_fsunmount+0x36>                              
  1088e4:   462c        mov r4, r5                                                        
  1088e6:   e7d5        b.n 108894 <IMFS_fsunmount+0x1c>                                  
}                                                                                         
  1088e8:   b006        add sp, #24                                                       
  1088ea:   bd70        pop {r4, r5, r6, pc}                                              
      rtems_fatal_error_occurred( 0xdeadbeef );                                           
  1088ec:   f64b 60ef   movw    r0, #48879  ; 0xbeef                                      <== NOT EXECUTED
  1088f0:   f6cd 60ad   movt    r0, #57005  ; 0xdead                                      <== NOT EXECUTED
  1088f4:   f7fe f924   bl  106b40 <rtems_fatal_error_occurred>                           <== NOT EXECUTED
                                                                                          

00107eb4 <IMFS_make_node>: mode_t mode, const IMFS_node_control *node_control, size_t node_size, void *context ) {
  107eb4:   e92d 41f0   stmdb   sp!, {r4, r5, r6, r7, r8, lr}                             
  107eb8:   b096        sub sp, #88 ; 0x58                                                
  107eba:   460c        mov r4, r1                                                        
  107ebc:   4680        mov r8, r0                                                        
  107ebe:   4616        mov r6, r2                                                        
  107ec0:   461f        mov r7, r3                                                        
  int rv = 0;                                                                             
                                                                                          
  mode &= ~rtems_filesystem_umask;                                                        
  107ec2:   f7ff fc59   bl  107778 <rtems_current_user_env_get>                           
  107ec6:   6881        ldr r1, [r0, #8]                                                  
  107ec8:   ea24 0401   bic.w   r4, r4, r1                                                
                                                                                          
  switch (mode & S_IFMT) {                                                                
  107ecc:   f404 4c70   and.w   ip, r4, #61440  ; 0xf000                                  
  107ed0:   f5bc 4fc0   cmp.w   ip, #24576  ; 0x6000                                      
  107ed4:   d015        beq.n   107f02 <IMFS_make_node+0x4e>                              
  107ed6:   d90e        bls.n   107ef6 <IMFS_make_node+0x42>                              
  107ed8:   f404 4330   and.w   r3, r4, #45056  ; 0xb000                                  
  107edc:   f5b3 4f00   cmp.w   r3, #32768  ; 0x8000                                      
  107ee0:   d00f        beq.n   107f02 <IMFS_make_node+0x4e>                              <== NEVER TAKEN
    case S_IFIFO:                                                                         
    case S_IFREG:                                                                         
    case S_IFSOCK:                                                                        
      break;                                                                              
    default:                                                                              
      errno = EINVAL;                                                                     
  107ee2:   f008 fc23   bl  11072c <__errno>                                              
      rv = -1;                                                                            
  107ee6:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
      errno = EINVAL;                                                                     
  107eea:   2316        movs    r3, #22                                                   
  107eec:   6003        str r3, [r0, #0]                                                  
                                                                                          
    rtems_filesystem_eval_path_cleanup( &ctx );                                           
  }                                                                                       
                                                                                          
  return rv;                                                                              
}                                                                                         
  107eee:   4620        mov r0, r4                                                        
  107ef0:   b016        add sp, #88 ; 0x58                                                
  107ef2:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
  switch (mode & S_IFMT) {                                                                
  107ef6:   f5ac 5c80   sub.w   ip, ip, #4096   ; 0x1000                                  
  107efa:   f42c 5580   bic.w   r5, ip, #4096   ; 0x1000                                  
  107efe:   2d00        cmp r5, #0                                                        
  107f00:   d1ef        bne.n   107ee2 <IMFS_make_node+0x2e>                              
      rtems_filesystem_eval_path_start( &ctx, path, eval_flags );                         
  107f02:   2278        movs    r2, #120    ; 0x78                                        
  107f04:   4641        mov r1, r8                                                        
  107f06:   a808        add r0, sp, #32                                                   
  107f08:   f7ff f8fe   bl  107108 <rtems_filesystem_eval_path_start>                     
  return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;                               
  107f0c:   6942        ldr r2, [r0, #20]                                                 
    if ( IMFS_is_imfs_instance( currentloc ) ) {                                          
  107f0e:   f248 6345   movw    r3, #34373  ; 0x8645                                      
  107f12:   f2c0 0310   movt    r3, #16                                                   
      rtems_filesystem_eval_path_start( &ctx, path, eval_flags );                         
  107f16:   4605        mov r5, r0                                                        
  107f18:   68d2        ldr r2, [r2, #12]                                                 
    if ( IMFS_is_imfs_instance( currentloc ) ) {                                          
  107f1a:   6a52        ldr r2, [r2, #36]   ; 0x24                                        
  107f1c:   429a        cmp r2, r3                                                        
  107f1e:   d00c        beq.n   107f3a <IMFS_make_node+0x86>                              
      rtems_filesystem_eval_path_error( &ctx, ENOTSUP );                                  
  107f20:   2186        movs    r1, #134    ; 0x86                                        
  107f22:   a808        add r0, sp, #32                                                   
      rv = -1;                                                                            
  107f24:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
      rtems_filesystem_eval_path_error( &ctx, ENOTSUP );                                  
  107f28:   f7ff f952   bl  1071d0 <rtems_filesystem_eval_path_error>                     
    rtems_filesystem_eval_path_cleanup( &ctx );                                           
  107f2c:   a808        add r0, sp, #32                                                   
  107f2e:   f7ff f96f   bl  107210 <rtems_filesystem_eval_path_cleanup>                   
}                                                                                         
  107f32:   4620        mov r0, r4                                                        
  107f34:   b016        add sp, #88 ; 0x58                                                
  107f36:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
      IMFS_jnode_t *new_node = IMFS_create_node(                                          
  107f3a:   9b1c        ldr r3, [sp, #112]  ; 0x70                                        
  107f3c:   463a        mov r2, r7                                                        
  107f3e:   9401        str r4, [sp, #4]                                                  
  107f40:   4631        mov r1, r6                                                        
        rv = -1;                                                                          
  107f42:   f04f 34ff   mov.w   r4, #4294967295 ; 0xffffffff                              
      IMFS_jnode_t *new_node = IMFS_create_node(                                          
  107f46:   9302        str r3, [sp, #8]                                                  
  107f48:   9b0b        ldr r3, [sp, #44]   ; 0x2c                                        
  107f4a:   9300        str r3, [sp, #0]                                                  
  107f4c:   9b0a        ldr r3, [sp, #40]   ; 0x28                                        
  107f4e:   f006 f801   bl  10df54 <IMFS_create_node>                                     
      if ( new_node != NULL ) {                                                           
  107f52:   2800        cmp r0, #0                                                        
  107f54:   d0ea        beq.n   107f2c <IMFS_make_node+0x78>                              
  _Timecounter_Getbintime( &now );                                                        
  107f56:   a804        add r0, sp, #16                                                   
        IMFS_jnode_t *parent = currentloc->node_access;                                   
  107f58:   68ad        ldr r5, [r5, #8]                                                  
  107f5a:   f001 feb1   bl  109cc0 <_Timecounter_Getbintime>                              
  return now.sec;                                                                         
  107f5e:   e9dd 2304   ldrd    r2, r3, [sp, #16]                                         
  int rv = 0;                                                                             
  107f62:   2400        movs    r4, #0                                                    
  jnode->stat_mtime = now;                                                                
  107f64:   e9c5 230a   strd    r2, r3, [r5, #40]   ; 0x28                                
  jnode->stat_ctime = now;                                                                
  107f68:   e9c5 230c   strd    r2, r3, [r5, #48]   ; 0x30                                
}                                                                                         
  107f6c:   e7de        b.n 107f2c <IMFS_make_node+0x78>                                  
  107f6e:   bf00        nop                                                               
                                                                                          

00108418 <IMFS_memfile_write>: {
  108418:   e92d 43f0   stmdb   sp!, {r4, r5, r6, r7, r8, r9, lr}                         
  10841c:   b085        sub sp, #20                                                       
  10841e:   9d0d        ldr r5, [sp, #52]   ; 0x34                                        
  108420:   461e        mov r6, r3                                                        
  108422:   4614        mov r4, r2                                                        
  108424:   4681        mov r9, r0                                                        
  if ( last_byte > memfile->File.size ) {                                                 
  108426:   6c03        ldr r3, [r0, #64]   ; 0x40                                        
  last_byte = start + my_length;                                                          
  108428:   18aa        adds    r2, r5, r2                                                
{                                                                                         
  10842a:   9f0c        ldr r7, [sp, #48]   ; 0x30                                        
  if ( last_byte > memfile->File.size ) {                                                 
  10842c:   4293        cmp r3, r2                                                        
  10842e:   d342        bcc.n   1084b6 <IMFS_memfile_write+0x9e>                          
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                                    
  108430:   f647 03cc   movw    r3, #30924  ; 0x78cc                                      
  108434:   4620        mov r0, r4                                                        
  108436:   f2c0 0311   movt    r3, #17                                                   
  10843a:   4631        mov r1, r6                                                        
  10843c:   681c        ldr r4, [r3, #0]                                                  
  10843e:   4622        mov r2, r4                                                        
  108440:   17e3        asrs    r3, r4, #31                                               
  108442:   f007 ff57   bl  1102f4 <__aeabi_ldivmod>                                      
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                                           
  108446:   4606        mov r6, r0                                                        
  if ( start_offset )  {                                                                  
  108448:   4690        mov r8, r2                                                        
  10844a:   2a00        cmp r2, #0                                                        
  10844c:   d141        bne.n   1084d2 <IMFS_memfile_write+0xba>                          
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {                                   
  10844e:   42a5        cmp r5, r4                                                        
  108450:   d206        bcs.n   108460 <IMFS_memfile_write+0x48>                          
  108452:   e015        b.n 108480 <IMFS_memfile_write+0x68>                              
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                                           
  108454:   6800        ldr r0, [r0, #0]                                                  
  108456:   44a0        add r8, r4                                                        
  108458:   f008 eb32   blx 110ac0 <memcpy>                                               
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {                                   
  10845c:   42ac        cmp r4, r5                                                        
  10845e:   d80f        bhi.n   108480 <IMFS_memfile_write+0x68>                          
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );                      
  108460:   4631        mov r1, r6                                                        
  108462:   2200        movs    r2, #0                                                    
  108464:   4648        mov r0, r9                                                        
    my_length -= to_copy;                                                                 
  108466:   1b2d        subs    r5, r5, r4                                                
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );                      
  108468:   f7ff fe02   bl  108070 <IMFS_memfile_get_block_pointer>                       
    block++;                                                                              
  10846c:   3601        adds    r6, #1                                                    
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                                           
  10846e:   4639        mov r1, r7                                                        
  108470:   4622        mov r2, r4                                                        
    src += to_copy;                                                                       
  108472:   4427        add r7, r4                                                        
    if ( !block_ptr )                                                                     
  108474:   2800        cmp r0, #0                                                        
  108476:   d1ed        bne.n   108454 <IMFS_memfile_write+0x3c>                          <== NEVER TAKEN
}                                                                                         
  108478:   4640        mov r0, r8                                                        
  10847a:   b005        add sp, #20                                                       
  10847c:   e8bd 83f0   ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}                         
  if ( my_length ) {                                                                      
  108480:   b165        cbz r5, 10849c <IMFS_memfile_write+0x84>                          
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );                      
  108482:   4631        mov r1, r6                                                        
  108484:   2200        movs    r2, #0                                                    
  108486:   4648        mov r0, r9                                                        
  108488:   f7ff fdf2   bl  108070 <IMFS_memfile_get_block_pointer>                       
    if ( !block_ptr )                                                                     
  10848c:   2800        cmp r0, #0                                                        
  10848e:   d0f3        beq.n   108478 <IMFS_memfile_write+0x60>                          <== ALWAYS TAKEN
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                                         
  108490:   6800        ldr r0, [r0, #0]                                                  
  108492:   462a        mov r2, r5                                                        
  108494:   4639        mov r1, r7                                                        
    copied += to_copy;                                                                    
  108496:   44a8        add r8, r5                                                        
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                                         
  108498:   f008 eb12   blx 110ac0 <memcpy>                                               
  _Timecounter_Getbintime( &now );                                                        
  10849c:   4668        mov r0, sp                                                        
  10849e:   f001 fc0f   bl  109cc0 <_Timecounter_Getbintime>                              
  return now.sec;                                                                         
  1084a2:   e9dd 2300   ldrd    r2, r3, [sp]                                              
}                                                                                         
  1084a6:   4640        mov r0, r8                                                        
  jnode->stat_mtime = now;                                                                
  1084a8:   e9c9 230a   strd    r2, r3, [r9, #40]   ; 0x28                                
  jnode->stat_ctime = now;                                                                
  1084ac:   e9c9 230c   strd    r2, r3, [r9, #48]   ; 0x30                                
  1084b0:   b005        add sp, #20                                                       
  1084b2:   e8bd 83f0   ldmia.w sp!, {r4, r5, r6, r7, r8, r9, pc}                         
    bool zero_fill = start > memfile->File.size;                                          
  1084b6:   42a3        cmp r3, r4                                                        
    status = IMFS_memfile_extend( memfile, zero_fill, last_byte );                        
  1084b8:   f04f 0300   mov.w   r3, #0                                                    
    bool zero_fill = start > memfile->File.size;                                          
  1084bc:   eb73 0106   sbcs.w  r1, r3, r6                                                
    status = IMFS_memfile_extend( memfile, zero_fill, last_byte );                        
  1084c0:   bfb4        ite lt                                                            
  1084c2:   2101        movlt   r1, #1                                                    
  1084c4:   4619        movge   r1, r3                                                    
  1084c6:   f7ff fe87   bl  1081d8 <IMFS_memfile_extend>                                  
    if ( status )                                                                         
  1084ca:   4680        mov r8, r0                                                        
  1084cc:   2800        cmp r0, #0                                                        
  1084ce:   d0af        beq.n   108430 <IMFS_memfile_write+0x18>                          
  1084d0:   e7d2        b.n 108478 <IMFS_memfile_write+0x60>                              
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );                      
  1084d2:   2200        movs    r2, #0                                                    
  1084d4:   4631        mov r1, r6                                                        
  1084d6:   4648        mov r0, r9                                                        
  1084d8:   f7ff fdca   bl  108070 <IMFS_memfile_get_block_pointer>                       
    if ( !block_ptr )                                                                     
  1084dc:   b170        cbz r0, 1084fc <IMFS_memfile_write+0xe4>                          
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );                                
  1084de:   6800        ldr r0, [r0, #0]                                                  
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;                                
  1084e0:   eba4 0208   sub.w   r2, r4, r8                                                
  1084e4:   42aa        cmp r2, r5                                                        
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );                                
  1084e6:   4639        mov r1, r7                                                        
  1084e8:   bf28        it  cs                                                            
  1084ea:   462a        movcs   r2, r5                                                    
    block++;                                                                              
  1084ec:   3601        adds    r6, #1                                                    
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );                                
  1084ee:   4440        add r0, r8                                                        
    my_length -= to_copy;                                                                 
  1084f0:   1aad        subs    r5, r5, r2                                                
    src += to_copy;                                                                       
  1084f2:   4417        add r7, r2                                                        
    copied += to_copy;                                                                    
  1084f4:   4690        mov r8, r2                                                        
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );                                
  1084f6:   f008 eae4   blx 110ac0 <memcpy>                                               
    copied += to_copy;                                                                    
  1084fa:   e7a8        b.n 10844e <IMFS_memfile_write+0x36>                              
      return copied;                                                                      
  1084fc:   4680        mov r8, r0                                                        <== NOT EXECUTED
  1084fe:   e7bb        b.n 108478 <IMFS_memfile_write+0x60>                              <== NOT EXECUTED
                                                                                          

001085a8 <IMFS_mount>: #include <rtems/imfs.h> int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
  1085a8:   6a02        ldr r2, [r0, #32]                                                 
{                                                                                         
  1085aa:   b508        push    {r3, lr}                                                  
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;                     
  1085ac:   6891        ldr r1, [r2, #8]                                                  
  return S_ISDIR( node->st_mode );                                                        
  1085ae:   694a        ldr r2, [r1, #20]                                                 
  1085b0:   f402 4270   and.w   r2, r2, #61440  ; 0xf000                                  
                                                                                          
  if ( IMFS_is_directory( node ) ) {                                                      
  1085b4:   f5b2 4f80   cmp.w   r2, #16384  ; 0x4000                                      
  1085b8:   d10c        bne.n   1085d4 <IMFS_mount+0x2c>                                  
    IMFS_directory_t *dir = (IMFS_directory_t *) node;                                    
                                                                                          
    if ( dir->mt_fs == NULL ) {                                                           
  1085ba:   4603        mov r3, r0                                                        
  1085bc:   6cc8        ldr r0, [r1, #76]   ; 0x4c                                        
  1085be:   b908        cbnz    r0, 1085c4 <IMFS_mount+0x1c>                              
      dir->mt_fs = mt_entry;                                                              
  1085c0:   64cb        str r3, [r1, #76]   ; 0x4c                                        
    errno = ENOTDIR;                                                                      
    rv = -1;                                                                              
  }                                                                                       
                                                                                          
  return rv;                                                                              
}                                                                                         
  1085c2:   bd08        pop {r3, pc}                                                      
      errno = EBUSY;                                                                      
  1085c4:   f008 f8b2   bl  11072c <__errno>                                              <== NOT EXECUTED
  1085c8:   2210        movs    r2, #16                                                   <== NOT EXECUTED
  1085ca:   4603        mov r3, r0                                                        <== NOT EXECUTED
  1085cc:   601a        str r2, [r3, #0]                                                  <== NOT EXECUTED
      rv = -1;                                                                            
  1085ce:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              <== NOT EXECUTED
}                                                                                         
  1085d2:   bd08        pop {r3, pc}                                                      <== NOT EXECUTED
    errno = ENOTDIR;                                                                      
  1085d4:   f008 f8aa   bl  11072c <__errno>                                              
  1085d8:   2214        movs    r2, #20                                                   
  1085da:   4603        mov r3, r0                                                        
  1085dc:   601a        str r2, [r3, #0]                                                  
    rv = -1;                                                                              
  1085de:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              
}                                                                                         
  1085e2:   bd08        pop {r3, pc}                                                      
                                                                                          

0010dfe4 <IMFS_node_remove_directory>: IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) { IMFS_directory_t *dir = (IMFS_directory_t *) node; if ( !rtems_chain_is_empty( &dir->Entries ) ) {
  10dfe4:   6c02        ldr r2, [r0, #64]   ; 0x40                                        
{                                                                                         
  10dfe6:   b508        push    {r3, lr}                                                  
  return &the_chain->Tail.Node;                                                           
  10dfe8:   f100 0344   add.w   r3, r0, #68 ; 0x44                                        
  if ( !rtems_chain_is_empty( &dir->Entries ) ) {                                         
  10dfec:   429a        cmp r2, r3                                                        
  10dfee:   d006        beq.n   10dffe <IMFS_node_remove_directory+0x1a>                  
    errno = ENOTEMPTY;                                                                    
  10dff0:   f002 fb9c   bl  11072c <__errno>                                              
  10dff4:   4603        mov r3, r0                                                        
    dir = NULL;                                                                           
  10dff6:   2000        movs    r0, #0                                                    
    errno = ENOTEMPTY;                                                                    
  10dff8:   225a        movs    r2, #90 ; 0x5a                                            
  10dffa:   601a        str r2, [r3, #0]                                                  
    errno = EBUSY;                                                                        
    dir = NULL;                                                                           
  }                                                                                       
                                                                                          
  return &dir->Node;                                                                      
}                                                                                         
  10dffc:   bd08        pop {r3, pc}                                                      
  } else if ( IMFS_is_mount_point( dir ) ) {                                              
  10dffe:   6cc3        ldr r3, [r0, #76]   ; 0x4c                                        
  10e000:   2b00        cmp r3, #0                                                        
  10e002:   d0fb        beq.n   10dffc <IMFS_node_remove_directory+0x18>                  <== NEVER TAKEN
    errno = EBUSY;                                                                        
  10e004:   f002 fb92   bl  11072c <__errno>                                              <== NOT EXECUTED
  10e008:   2210        movs    r2, #16                                                   <== NOT EXECUTED
  10e00a:   4603        mov r3, r0                                                        <== NOT EXECUTED
  10e00c:   601a        str r2, [r3, #0]                                                  <== NOT EXECUTED
    dir = NULL;                                                                           
  10e00e:   2000        movs    r0, #0                                                    <== NOT EXECUTED
}                                                                                         
  10e010:   bd08        pop {r3, pc}                                                      <== NOT EXECUTED
  10e012:   bf00        nop                                                               
                                                                                          

00108890 <IMFS_readlink>: {
  108890:   b410        push    {r4}                                                      
  sym_link = loc->node_access;                                                            
  108892:   6884        ldr r4, [r0, #8]                                                  
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )                           
  108894:   b172        cbz r2, 1088b4 <IMFS_readlink+0x24>                               
  108896:   3901        subs    r1, #1                                                    
  108898:   2000        movs    r0, #0                                                    
  10889a:   e004        b.n 1088a6 <IMFS_readlink+0x16>                                   
  10889c:   3001        adds    r0, #1                                                    
    buf[i] = sym_link->name[i];                                                           
  10889e:   f801 3f01   strb.w  r3, [r1, #1]!                                             
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )                           
  1088a2:   4290        cmp r0, r2                                                        
  1088a4:   d003        beq.n   1088ae <IMFS_readlink+0x1e>                               
  1088a6:   6c23        ldr r3, [r4, #64]   ; 0x40                                        
  1088a8:   5c1b        ldrb    r3, [r3, r0]                                              
  1088aa:   2b00        cmp r3, #0                                                        
  1088ac:   d1f6        bne.n   10889c <IMFS_readlink+0xc>                                
}                                                                                         
  1088ae:   f85d 4b04   ldr.w   r4, [sp], #4                                              
  1088b2:   4770        bx  lr                                                            
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )                           
  1088b4:   4610        mov r0, r2                                                        <== NOT EXECUTED
  1088b6:   e7fa        b.n 1088ae <IMFS_readlink+0x1e>                                   <== NOT EXECUTED
                                                                                          

00108698 <IMFS_rename>: const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) {
  108698:   e92d 4ff0   stmdb   sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}                 
  10869c:   461e        mov r6, r3                                                        
  /*                                                                                      
   * FIXME: Due to insufficient checks we can create inaccessible nodes with              
   * this operation.                                                                      
   */                                                                                     
                                                                                          
  node = oldloc->node_access;                                                             
  10869e:   688c        ldr r4, [r1, #8]                                                  
{                                                                                         
  1086a0:   b085        sub sp, #20                                                       
  1086a2:   9f0e        ldr r7, [sp, #56]   ; 0x38                                        
  new_parent = newparentloc->node_access;                                                 
                                                                                          
  if ( node->Parent == NULL ) {                                                           
  1086a4:   68a3        ldr r3, [r4, #8]                                                  
  new_parent = newparentloc->node_access;                                                 
  1086a6:   f8d2 8008   ldr.w   r8, [r2, #8]                                              
  if ( node->Parent == NULL ) {                                                           
  1086aa:   2b00        cmp r3, #0                                                        
  1086ac:   d04d        beq.n   10874a <IMFS_rename+0xb2>                                 <== ALWAYS TAKEN
    rtems_set_errno_and_return_minus_one( EINVAL );                                       
  }                                                                                       
                                                                                          
  if ( namelen >= IMFS_NAME_MAX ) {                                                       
  1086ae:   2ffe        cmp r7, #254    ; 0xfe                                            
  1086b0:   d843        bhi.n   10873a <IMFS_rename+0xa2>                                 
    rtems_set_errno_and_return_minus_one( ENAMETOOLONG );                                 
  }                                                                                       
                                                                                          
  control = malloc( sizeof( *control ) + namelen );                                       
  1086b2:   f107 0014   add.w   r0, r7, #20                                               
  1086b6:   f7fd ff77   bl  1065a8 <malloc>                                               
  if ( control == NULL ) {                                                                
  1086ba:   4605        mov r5, r0                                                        
  1086bc:   2800        cmp r0, #0                                                        
  1086be:   d04c        beq.n   10875a <IMFS_rename+0xc2>                                 <== ALWAYS TAKEN
    rtems_set_errno_and_return_minus_one( ENOMEM );                                       
  }                                                                                       
                                                                                          
  memcpy( control->name, name, namelen );                                                 
  1086c0:   f100 0a14   add.w   sl, r0, #20                                               
  1086c4:   4631        mov r1, r6                                                        
  1086c6:   463a        mov r2, r7                                                        
  1086c8:   4650        mov r0, sl                                                        
  1086ca:   f008 e9fa   blx 110ac0 <memcpy>                                               
                                                                                          
  if ( node->control->node_destroy == IMFS_renamed_destroy ) {                            
  1086ce:   6ba6        ldr r6, [r4, #56]   ; 0x38                                        
  1086d0:   f248 697d   movw    r9, #34429  ; 0x867d                                      
  1086d4:   f2c0 0910   movt    r9, #16                                                   
  1086d8:   68f3        ldr r3, [r6, #12]                                                 
  1086da:   454b        cmp r3, r9                                                        
  1086dc:   d026        beq.n   10872c <IMFS_rename+0x94>                                 
    IMFS_restore_replaced_control( node );                                                
  }                                                                                       
                                                                                          
  control->Base = *node->control;                                                         
  1086de:   e896 000f   ldmia.w r6, {r0, r1, r2, r3}                                      
  return &the_chain->Tail.Node;                                                           
  1086e2:   f108 0e44   add.w   lr, r8, #68 ; 0x44                                        
  previous       = the_node->previous;                                                    
  1086e6:   e9d4 bc00   ldrd    fp, ip, [r4]                                              
  1086ea:   e885 000f   stmia.w r5, {r0, r1, r2, r3}                                      
  _Timecounter_Getbintime( &now );                                                        
  1086ee:   4668        mov r0, sp                                                        
  control->Base.node_destroy = IMFS_renamed_destroy;                                      
  1086f0:   e9c5 9603   strd    r9, r6, [r5, #12]                                         
  control->replaced = node->control;                                                      
  node->control = &control->Base;                                                         
  1086f4:   63a5        str r5, [r4, #56]   ; 0x38                                        
  node->name = control->name;                                                             
  1086f6:   f8c4 a00c   str.w   sl, [r4, #12]                                             
  node->namelen = namelen;                                                                
  1086fa:   8227        strh    r7, [r4, #16]                                             
  next->previous = previous;                                                              
  1086fc:   f8cb c004   str.w   ip, [fp, #4]                                              
  old_last = tail->previous;                                                              
  108700:   f8d8 3048   ldr.w   r3, [r8, #72]   ; 0x48                                    
  previous->next = next;                                                                  
  108704:   f8cc b000   str.w   fp, [ip]                                                  
  entry_node->Parent = dir_node;                                                          
  108708:   f8c4 8008   str.w   r8, [r4, #8]                                              
  the_node->next = tail;                                                                  
  10870c:   f8c4 e000   str.w   lr, [r4]                                                  
  tail->previous = the_node;                                                              
  108710:   f8c8 4048   str.w   r4, [r8, #72]   ; 0x48                                    
  old_last->next = the_node;                                                              
  108714:   601c        str r4, [r3, #0]                                                  
  the_node->previous = old_last;                                                          
  108716:   6063        str r3, [r4, #4]                                                  
  _Timecounter_Getbintime( &now );                                                        
  108718:   f001 fad2   bl  109cc0 <_Timecounter_Getbintime>                              
  return now.sec;                                                                         
  10871c:   e9dd 2300   ldrd    r2, r3, [sp]                                              
                                                                                          
  IMFS_remove_from_directory( node );                                                     
  IMFS_add_to_directory( new_parent, node );                                              
  IMFS_update_ctime( node );                                                              
                                                                                          
  return 0;                                                                               
  108720:   2000        movs    r0, #0                                                    
  jnode->stat_ctime = _IMFS_get_time();                                                   
  108722:   e9c4 230c   strd    r2, r3, [r4, #48]   ; 0x30                                
}                                                                                         
  108726:   b005        add sp, #20                                                       
  108728:   e8bd 8ff0   ldmia.w sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}                 
  node->control = control->replaced;                                                      
  10872c:   6933        ldr r3, [r6, #16]                                                 
  free( control );                                                                        
  10872e:   4630        mov r0, r6                                                        
  node->control = control->replaced;                                                      
  108730:   63a3        str r3, [r4, #56]   ; 0x38                                        
  free( control );                                                                        
  108732:   f7fd fd61   bl  1061f8 <free>                                                 
  control->Base = *node->control;                                                         
  108736:   6ba6        ldr r6, [r4, #56]   ; 0x38                                        
}                                                                                         
  108738:   e7d1        b.n 1086de <IMFS_rename+0x46>                                     
    rtems_set_errno_and_return_minus_one( ENAMETOOLONG );                                 
  10873a:   f007 fff7   bl  11072c <__errno>                                              
  10873e:   225b        movs    r2, #91 ; 0x5b                                            
  108740:   4603        mov r3, r0                                                        
  108742:   601a        str r2, [r3, #0]                                                  
  108744:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              
  108748:   e7ed        b.n 108726 <IMFS_rename+0x8e>                                     
    rtems_set_errno_and_return_minus_one( EINVAL );                                       
  10874a:   f007 ffef   bl  11072c <__errno>                                              <== NOT EXECUTED
  10874e:   2216        movs    r2, #22                                                   <== NOT EXECUTED
  108750:   4603        mov r3, r0                                                        <== NOT EXECUTED
  108752:   601a        str r2, [r3, #0]                                                  <== NOT EXECUTED
  108754:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              <== NOT EXECUTED
  108758:   e7e5        b.n 108726 <IMFS_rename+0x8e>                                     <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( ENOMEM );                                       
  10875a:   f007 ffe7   bl  11072c <__errno>                                              <== NOT EXECUTED
  10875e:   220c        movs    r2, #12                                                   <== NOT EXECUTED
  108760:   4603        mov r3, r0                                                        <== NOT EXECUTED
  108762:   601a        str r2, [r3, #0]                                                  <== NOT EXECUTED
  108764:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              <== NOT EXECUTED
  108768:   e7dd        b.n 108726 <IMFS_rename+0x8e>                                     <== NOT EXECUTED
  10876a:   bf00        nop                                                               
                                                                                          

001088b8 <IMFS_unmount>: #endif #include <rtems/imfs.h> int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
  1088b8:   b508        push    {r3, lr}                                                  
  int rv = 0;                                                                             
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;                     
  1088ba:   6a03        ldr r3, [r0, #32]                                                 
  1088bc:   689a        ldr r2, [r3, #8]                                                  
  return S_ISDIR( node->st_mode );                                                        
  1088be:   6953        ldr r3, [r2, #20]                                                 
  1088c0:   f403 4370   and.w   r3, r3, #61440  ; 0xf000                                  
                                                                                          
  if ( IMFS_is_directory( node ) ) {                                                      
  1088c4:   f5b3 4f80   cmp.w   r3, #16384  ; 0x4000                                      
  1088c8:   d10e        bne.n   1088e8 <IMFS_unmount+0x30>                                <== ALWAYS TAKEN
    IMFS_directory_t *dir = (IMFS_directory_t *) node;                                    
                                                                                          
    if ( dir->mt_fs == mt_entry ) {                                                       
  1088ca:   6cd3        ldr r3, [r2, #76]   ; 0x4c                                        
  1088cc:   4283        cmp r3, r0                                                        
  1088ce:   d103        bne.n   1088d8 <IMFS_unmount+0x20>                                <== ALWAYS TAKEN
      dir->mt_fs = NULL;                                                                  
  1088d0:   2300        movs    r3, #0                                                    
  int rv = 0;                                                                             
  1088d2:   4618        mov r0, r3                                                        
      dir->mt_fs = NULL;                                                                  
  1088d4:   64d3        str r3, [r2, #76]   ; 0x4c                                        
    errno = ENOTDIR;                                                                      
    rv = -1;                                                                              
  }                                                                                       
                                                                                          
  return rv;                                                                              
}                                                                                         
  1088d6:   bd08        pop {r3, pc}                                                      
      errno = EINVAL;                                                                     
  1088d8:   f007 ff28   bl  11072c <__errno>                                              <== NOT EXECUTED
  1088dc:   2216        movs    r2, #22                                                   <== NOT EXECUTED
  1088de:   4603        mov r3, r0                                                        <== NOT EXECUTED
  1088e0:   601a        str r2, [r3, #0]                                                  <== NOT EXECUTED
      rv = -1;                                                                            
  1088e2:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              <== NOT EXECUTED
}                                                                                         
  1088e6:   bd08        pop {r3, pc}                                                      <== NOT EXECUTED
    errno = ENOTDIR;                                                                      
  1088e8:   f007 ff20   bl  11072c <__errno>                                              <== NOT EXECUTED
  1088ec:   2214        movs    r2, #20                                                   <== NOT EXECUTED
  1088ee:   4603        mov r3, r0                                                        <== NOT EXECUTED
  1088f0:   601a        str r2, [r3, #0]                                                  <== NOT EXECUTED
    rv = -1;                                                                              
  1088f2:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              <== NOT EXECUTED
}                                                                                         
  1088f6:   bd08        pop {r3, pc}                                                      <== NOT EXECUTED
                                                                                          

0010df50 <device_ftruncate>: rtems_libio_t *iop, off_t length ) { return 0; }
  10df50:   2000        movs    r0, #0                                                    <== NOT EXECUTED
  10df52:   4770        bx  lr                                                            <== NOT EXECUTED
                                                                                          

00106fb8 <rtems_tarfs_load>: int rtems_tarfs_load( const char *mountpoint, uint8_t *tar_image, size_t tar_size ) {
  106fb8:   e92d 41f0   stmdb   sp!, {r4, r5, r6, r7, r8, lr}                             
  106fbc:   b0ee        sub sp, #440    ; 0x1b8                                           
  106fbe:   4607        mov r7, r0                                                        
  106fc0:   460d        mov r5, r1                                                        
  106fc2:   4616        mov r6, r2                                                        
  char                                  buf[ 156 + UNTAR_FILE_NAME_SIZE ];                
  size_t                                len;                                              
  Untar_HeaderContext                   ctx;                                              
  unsigned long                         ptr;                                              
                                                                                          
  len = strlen( mountpoint );                                                             
  106fc4:   f011 f8fc   bl  1181c0 <strlen>                                               
  if ( len >= sizeof( buf ) - UNTAR_FILE_NAME_SIZE - 2 ) {                                
  106fc8:   2899        cmp r0, #153    ; 0x99                                            
  106fca:   d830        bhi.n   10702e <rtems_tarfs_load+0x76>                            <== ALWAYS TAKEN
    return -1;                                                                            
  }                                                                                       
                                                                                          
  eval_flags = RTEMS_FS_FOLLOW_LINK;                                                      
  loc = rtems_filesystem_eval_path_start( &eval_ctx, mountpoint, eval_flags );            
  106fcc:   2218        movs    r2, #24                                                   
  106fce:   4639        mov r1, r7                                                        
  106fd0:   4604        mov r4, r0                                                        
  106fd2:   4668        mov r0, sp                                                        
  106fd4:   f7fe fe92   bl  105cfc <rtems_filesystem_eval_path_start>                     
  return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;                               
  106fd8:   6943        ldr r3, [r0, #20]                                                 
  is_imfs = IMFS_is_imfs_instance( loc );                                                 
  rtems_filesystem_eval_path_cleanup( &eval_ctx );                                        
  106fda:   4668        mov r0, sp                                                        
  106fdc:   68db        ldr r3, [r3, #12]                                                 
  106fde:   f8d3 8024   ldr.w   r8, [r3, #36]   ; 0x24                                    
  106fe2:   f7fe ff0f   bl  105e04 <rtems_filesystem_eval_path_cleanup>                   
  if ( !is_imfs ) {                                                                       
  106fe6:   f647 0311   movw    r3, #30737  ; 0x7811                                      
  106fea:   f2c0 0310   movt    r3, #16                                                   
  106fee:   4598        cmp r8, r3                                                        
  106ff0:   d11d        bne.n   10702e <rtems_tarfs_load+0x76>                            
    return -1;                                                                            
  }                                                                                       
                                                                                          
  ctx.printer = NULL;                                                                     
  106ff2:   2300        movs    r3, #0                                                    
  ctx.file_path = memcpy( buf, mountpoint, len );                                         
  106ff4:   4639        mov r1, r7                                                        
  106ff6:   4622        mov r2, r4                                                        
  106ff8:   a82e        add r0, sp, #184    ; 0xb8                                        
  ctx.printer = NULL;                                                                     
  106ffa:   932d        str r3, [sp, #180]  ; 0xb4                                        
  ctx.file_path = memcpy( buf, mountpoint, len );                                         
  106ffc:   f00f e840   blx 116080 <memcpy>                                               
  107000:   900e        str r0, [sp, #56]   ; 0x38                                        
                                                                                          
  if ( len > 0 && ctx.file_path[ len - 1 ] != '/') {                                      
  107002:   b9cc        cbnz    r4, 107038 <rtems_tarfs_load+0x80>                        
    ctx.file_path[ len ] = '/';                                                           
    ctx.file_name = ctx.file_path + len + 1;                                              
  } else {                                                                                
    ctx.file_name = ctx.file_path + len;                                                  
  107004:   900f        str r0, [sp, #60]   ; 0x3c                                        
  107006:   2400        movs    r4, #0                                                    
  107008:   e006        b.n 107018 <rtems_tarfs_load+0x60>                                
  ptr = 0;                                                                                
                                                                                          
  while ( ptr + 512 <= tar_size ) {                                                       
    int retval;                                                                           
                                                                                          
    retval = Untar_ProcessHeader( &ctx, (const char *) &tar_image[ ptr ] );               
  10700a:   f000 febf   bl  107d8c <Untar_ProcessHeader>                                  
    if ( retval != UNTAR_SUCCESSFUL ) {                                                   
  10700e:   b970        cbnz    r0, 10702e <rtems_tarfs_load+0x76>                        
      return -1;                                                                          
    }                                                                                     
                                                                                          
    ptr += 512;                                                                           
                                                                                          
    if ( ctx.linkflag == REGTYPE ) {                                                      
  107010:   f89d 30b0   ldrb.w  r3, [sp, #176]  ; 0xb0                                    
  107014:   2b30        cmp r3, #48 ; 0x30                                                
  107016:   d01a        beq.n   10704e <rtems_tarfs_load+0x96>                            
  while ( ptr + 512 <= tar_size ) {                                                       
  107018:   4621        mov r1, r4                                                        
  10701a:   f504 7400   add.w   r4, r4, #512    ; 0x200                                   
  10701e:   42b4        cmp r4, r6                                                        
    retval = Untar_ProcessHeader( &ctx, (const char *) &tar_image[ ptr ] );               
  107020:   4429        add r1, r5                                                        
  107022:   a80e        add r0, sp, #56 ; 0x38                                            
  while ( ptr + 512 <= tar_size ) {                                                       
  107024:   d9f1        bls.n   10700a <rtems_tarfs_load+0x52>                            
                                                                                          
      ptr += 512 * ctx.nblocks;                                                           
    }                                                                                     
  }                                                                                       
                                                                                          
  return 0;                                                                               
  107026:   2000        movs    r0, #0                                                    
}                                                                                         
  107028:   b06e        add sp, #440    ; 0x1b8                                           
  10702a:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
    return -1;                                                                            
  10702e:   f04f 30ff   mov.w   r0, #4294967295 ; 0xffffffff                              
}                                                                                         
  107032:   b06e        add sp, #440    ; 0x1b8                                           
  107034:   e8bd 81f0   ldmia.w sp!, {r4, r5, r6, r7, r8, pc}                             
    ctx.file_path[ len ] = '/';                                                           
  107038:   1903        adds    r3, r0, r4                                                
  if ( len > 0 && ctx.file_path[ len - 1 ] != '/') {                                      
  10703a:   f813 2c01   ldrb.w  r2, [r3, #-1]                                             
  10703e:   2a2f        cmp r2, #47 ; 0x2f                                                
  107040:   d011        beq.n   107066 <rtems_tarfs_load+0xae>                            <== NEVER TAKEN
    ctx.file_name = ctx.file_path + len + 1;                                              
  107042:   1c63        adds    r3, r4, #1                                                <== NOT EXECUTED
  107044:   4403        add r3, r0                                                        <== NOT EXECUTED
  107046:   930f        str r3, [sp, #60]   ; 0x3c                                        <== NOT EXECUTED
    ctx.file_path[ len ] = '/';                                                           
  107048:   232f        movs    r3, #47 ; 0x2f                                            <== NOT EXECUTED
  10704a:   5503        strb    r3, [r0, r4]                                              <== NOT EXECUTED
    ctx.file_name = ctx.file_path + len + 1;                                              
  10704c:   e7db        b.n 107006 <rtems_tarfs_load+0x4e>                                <== NOT EXECUTED
      retval = IMFS_make_linearfile(                                                      
  10704e:   e9dd 1329   ldrd    r1, r3, [sp, #164]  ; 0xa4                                
  107052:   192a        adds    r2, r5, r4                                                
  107054:   980e        ldr r0, [sp, #56]   ; 0x38                                        
  107056:   f000 f867   bl  107128 <IMFS_make_linearfile>                                 
      if ( retval != 0 ) {                                                                
  10705a:   2800        cmp r0, #0                                                        
  10705c:   d1e7        bne.n   10702e <rtems_tarfs_load+0x76>                            <== ALWAYS TAKEN
      ptr += 512 * ctx.nblocks;                                                           
  10705e:   9b2b        ldr r3, [sp, #172]  ; 0xac                                        
  107060:   eb04 2443   add.w   r4, r4, r3, lsl #9                                        
  107064:   e7d8        b.n 107018 <rtems_tarfs_load+0x60>                                
  107066:   4618        mov r0, r3                                                        
  107068:   e7cc        b.n 107004 <rtems_tarfs_load+0x4c>                                
  10706a:   bf00        nop