RTEMS-5
Annotated Report
libimfs
Sat Apr 11 19:18:44 2020

40004d08 <IMFS_add_node>:
                                            
#endif
                                                               

                                                                     
#include <rtems/imfs.h>
                                              

                                                                     
int IMFS_add_node( const char *path, IMFS_jnode_t *node, void *arg )
 
{
                                                                    
40004d08:	9d e3 bf 58 	save  %sp, -168, %sp
                          
  const rtems_filesystem_location_info_t *currentloc;
                
  int                                     eval_flags;
                
  int                                     rv;
                        

                                                                     
  mode = node->st_mode;
                                              
  mode &= ~rtems_filesystem_umask;
                                   
40004d0c:	7f ff ff 59 	call  40004a70 <rtems_current_user_env_get>
   
40004d10:	fa 06 60 14 	ld  [ %i1 + 0x14 ], %i5
                       
40004d14:	c2 02 20 08 	ld  [ %o0 + 8 ], %g1
                          
40004d18:	ba 2f 40 01 	andn  %i5, %g1, %i5
                           

                                                                     
  switch (mode & S_IFMT) {
                                           
40004d1c:	05 00 00 18 	sethi  %hi(0x6000), %g2
                       
40004d20:	03 00 00 3c 	sethi  %hi(0xf000), %g1
                       
40004d24:	82 0f 40 01 	and  %i5, %g1, %g1
                            
40004d28:	80 a0 40 02 	cmp  %g1, %g2
                                 
40004d2c:	02 80 00 0c 	be  40004d5c <IMFS_add_node+0x54>
             
40004d30:	94 10 20 18 	mov  0x18, %o2
                                
40004d34:	08 80 00 1c 	bleu  40004da4 <IMFS_add_node+0x9c>
           
40004d38:	05 00 00 04 	sethi  %hi(0x1000), %g2
                       
40004d3c:	05 00 00 20 	sethi  %hi(0x8000), %g2
                       <== NOT EXECUTED
40004d40:	80 a0 40 02 	cmp  %g1, %g2
                                 <== NOT EXECUTED
40004d44:	02 80 00 06 	be  40004d5c <IMFS_add_node+0x54>
             <== NOT EXECUTED
40004d48:	05 00 00 30 	sethi  %hi(0xc000), %g2
                       <== NOT EXECUTED
40004d4c:	80 a0 40 02 	cmp  %g1, %g2
                                 <== NOT EXECUTED
40004d50:	12 80 00 1b 	bne  40004dbc <IMFS_add_node+0xb4>
            <== NOT EXECUTED
40004d54:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
      errno = EINVAL;
                                                
      return -1;
                                                     
  }
                                                                  

                                                                     
  eval_flags = RTEMS_FS_FOLLOW_LINK;
                                 
  currentloc = rtems_filesystem_eval_path_start( &ctx, path, eval_flags );

40004d58:	94 10 20 18 	mov  0x18, %o2	! 18 <_TLS_Alignment+0x17>
     <== NOT EXECUTED
40004d5c:	92 10 00 18 	mov  %i0, %o1
                                 
40004d60:	7f ff fd 76 	call  40004338 <rtems_filesystem_eval_path_start>

40004d64:	90 07 bf c8 	add  %fp, -56, %o0
                            

                                                                     
static inline bool IMFS_is_imfs_instance(
                            
  const rtems_filesystem_location_info_t *loc
                        
)
                                                                    
{
                                                                    
  return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;
          
40004d68:	c2 02 20 14 	ld  [ %o0 + 0x14 ], %g1
                       
40004d6c:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        

                                                                     
  if ( IMFS_is_imfs_instance( currentloc ) ) {
                       
40004d70:	c4 00 60 24 	ld  [ %g1 + 0x24 ], %g2
                       
40004d74:	03 10 00 18 	sethi  %hi(0x40006000), %g1
                   
40004d78:	82 10 60 f0 	or  %g1, 0xf0, %g1	! 400060f0 <IMFS_node_clone>

40004d7c:	80 a0 80 01 	cmp  %g2, %g1
                                 
40004d80:	02 80 00 15 	be  40004dd4 <IMFS_add_node+0xcc>
             
40004d84:	92 10 20 86 	mov  0x86, %o1
                                
      }
                                                              

                                                                     
      rv = -1;
                                                       
    }
                                                                
  } else {
                                                           
    rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
               
40004d88:	90 07 bf c8 	add  %fp, -56, %o0
                            
40004d8c:	7f ff fc b0 	call  4000404c <rtems_filesystem_eval_path_error>

40004d90:	b0 10 3f ff 	mov  -1, %i0
                                  
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  rtems_filesystem_eval_path_cleanup( &ctx );
                        
40004d94:	7f ff fd 75 	call  40004368 <rtems_filesystem_eval_path_cleanup>

40004d98:	90 07 bf c8 	add  %fp, -56, %o0
                            
  return rv;
                                                         
}
                                                                    
40004d9c:	81 c7 e0 08 	ret 
                                          
40004da0:	81 e8 00 00 	restore 
                                      
  switch (mode & S_IFMT) {
                                           
40004da4:	80 a0 40 02 	cmp  %g1, %g2
                                 
40004da8:	02 bf ff ec 	be  40004d58 <IMFS_add_node+0x50>
             
40004dac:	05 00 00 08 	sethi  %hi(0x2000), %g2
                       
40004db0:	80 a0 40 02 	cmp  %g1, %g2
                                 
40004db4:	02 bf ff ea 	be  40004d5c <IMFS_add_node+0x54>
             
40004db8:	94 10 20 18 	mov  0x18, %o2
                                
      errno = EINVAL;
                                                
40004dbc:	40 00 29 81 	call  4000f3c0 <__errno>
                      
40004dc0:	b0 10 3f ff 	mov  -1, %i0
                                  
40004dc4:	82 10 20 16 	mov  0x16, %g1
                                
40004dc8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
      return -1;
                                                     
40004dcc:	81 c7 e0 08 	ret 
                                          
40004dd0:	81 e8 00 00 	restore 
                                      
  ctx->path = path;
                                                  
40004dd4:	c4 06 60 0c 	ld  [ %i1 + 0xc ], %g2
                        
    rtems_filesystem_eval_path_set_path( &ctx, node->name, node->namelen );

40004dd8:	c2 16 60 10 	lduh  [ %i1 + 0x10 ], %g1
                     
40004ddc:	c4 27 bf c8 	st  %g2, [ %fp + -56 ]
                        
  ctx->flags = flags;
                                                
40004de0:	84 10 20 60 	mov  0x60, %g2
                                
  ctx->pathlen = pathlen;
                                            
40004de4:	c2 27 bf cc 	st  %g1, [ %fp + -52 ]
                        
    rtems_filesystem_eval_path_continue( &ctx );
                     
40004de8:	90 07 bf c8 	add  %fp, -56, %o0
                            
40004dec:	7f ff fc e0 	call  4000416c <rtems_filesystem_eval_path_continue>

40004df0:	c4 27 bf d8 	st  %g2, [ %fp + -40 ]
                        
    if ( rtems_filesystem_eval_path_get_token( &ctx ) == node->name ) {

40004df4:	c2 07 bf d0 	ld  [ %fp + -48 ], %g1
                        
40004df8:	d4 06 60 0c 	ld  [ %i1 + 0xc ], %o2
                        
40004dfc:	80 a2 80 01 	cmp  %o2, %g1
                                 
40004e00:	02 80 00 0b 	be  40004e2c <IMFS_add_node+0x124>
            
40004e04:	80 a0 60 00 	cmp  %g1, 0
                                   
      if ( rtems_filesystem_eval_path_get_token( &ctx ) != NULL ) {
  
40004e08:	02 80 00 12 	be  40004e50 <IMFS_add_node+0x148>
            
40004e0c:	90 07 bf c8 	add  %fp, -56, %o0
                            
        rtems_filesystem_eval_path_error( &ctx, EINVAL );
            
40004e10:	7f ff fc 8f 	call  4000404c <rtems_filesystem_eval_path_error>

40004e14:	92 10 20 16 	mov  0x16, %o1
                                
      rv = -1;
                                                       
40004e18:	b0 10 3f ff 	mov  -1, %i0
                                  
  rtems_filesystem_eval_path_cleanup( &ctx );
                        
40004e1c:	7f ff fd 53 	call  40004368 <rtems_filesystem_eval_path_cleanup>

40004e20:	90 07 bf c8 	add  %fp, -56, %o0
                            
}
                                                                    
40004e24:	81 c7 e0 08 	ret 
                                          
40004e28:	81 e8 00 00 	restore 
                                      
      node = IMFS_initialize_node(
                                   
40004e2c:	d6 16 60 10 	lduh  [ %i1 + 0x10 ], %o3
                     
40004e30:	d2 06 60 38 	ld  [ %i1 + 0x38 ], %o1
                       
40004e34:	9a 10 00 1a 	mov  %i2, %o5
                                 
40004e38:	98 10 00 1d 	mov  %i5, %o4
                                 
40004e3c:	40 00 04 8d 	call  40006070 <IMFS_initialize_node>
         
40004e40:	90 10 00 19 	mov  %i1, %o0
                                 
      if ( node != NULL ) {
                                          
40004e44:	82 92 20 00 	orcc  %o0, 0, %g1
                             
40004e48:	12 80 00 07 	bne  40004e64 <IMFS_add_node+0x15c>
           
40004e4c:	fa 07 bf e8 	ld  [ %fp + -24 ], %i5
                        
        rv = -1;
                                                     
40004e50:	b0 10 3f ff 	mov  -1, %i0
                                  
  rtems_filesystem_eval_path_cleanup( &ctx );
                        
40004e54:	7f ff fd 45 	call  40004368 <rtems_filesystem_eval_path_cleanup>

40004e58:	90 07 bf c8 	add  %fp, -56, %o0
                            
}
                                                                    
40004e5c:	81 c7 e0 08 	ret 
                                          
40004e60:	81 e8 00 00 	restore 
                                      
  old_last = tail->previous;
                                         
40004e64:	c4 07 60 48 	ld  [ %i5 + 0x48 ], %g2
                       
  return &the_chain->Tail.Node;
                                      
40004e68:	86 07 60 44 	add  %i5, 0x44, %g3
                           
  IMFS_jnode_t *entry_node
                                           
)
                                                                    
{
                                                                    
  IMFS_directory_t *dir = (IMFS_directory_t *) dir_node;
             

                                                                     
  entry_node->Parent = dir_node;
                                     
40004e6c:	fa 20 60 08 	st  %i5, [ %g1 + 8 ]
                          
  _Timecounter_Getbintime( &now );
                                   
40004e70:	90 07 bf b8 	add  %fp, -72, %o0
                            
  the_node->next = tail;
                                             
40004e74:	c6 20 40 00 	st  %g3, [ %g1 ]
                              
        rv = 0;
                                                      
40004e78:	b0 10 20 00 	clr  %i0
                                      
  tail->previous = the_node;
                                         
40004e7c:	c2 27 60 48 	st  %g1, [ %i5 + 0x48 ]
                       
  old_last->next = the_node;
                                         
40004e80:	c2 20 80 00 	st  %g1, [ %g2 ]
                              
40004e84:	40 00 17 f2 	call  4000ae4c <_Timecounter_Getbintime>
      
40004e88:	c4 20 60 04 	st  %g2, [ %g1 + 4 ]
                          
  return now.sec;
                                                    
40004e8c:	c4 1f bf b8 	ldd  [ %fp + -72 ], %g2
                       
  jnode->stat_mtime = now;
                                           
40004e90:	c4 3f 60 28 	std  %g2, [ %i5 + 0x28 ]
                      
40004e94:	10 bf ff c0 	b  40004d94 <IMFS_add_node+0x8c>
              
40004e98:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      

                                                                     

4000c260 <IMFS_create_node>: const char *name, size_t namelen, mode_t mode, void *arg ) {
4000c260:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  IMFS_jnode_t *allocated_node;
                                      
  char         *allocated_name;
                                      
  IMFS_jnode_t *node;
                                                

                                                                     
  allocated_node = calloc( 1, node_size + namelen );
                 
4000c264:	90 10 20 01 	mov  1, %o0
                                   
4000c268:	7f ff fd df 	call  4000b9e4 <calloc>
                       
4000c26c:	92 06 80 1c 	add  %i2, %i4, %o1
                            
  if ( allocated_node == NULL ) {
                                    
4000c270:	a0 92 20 00 	orcc  %o0, 0, %l0
                             
4000c274:	02 80 00 1d 	be  4000c2e8 <IMFS_create_node+0x88>
          
4000c278:	94 10 00 1c 	mov  %i4, %o2
                                 

                                                                     
    return NULL;
                                                     
  }
                                                                  

                                                                     
  allocated_name = (char *) allocated_node + node_size;
              
  allocated_name = memcpy( allocated_name, name, namelen );
          
4000c27c:	92 10 00 1b 	mov  %i3, %o1
                                 
4000c280:	40 00 0d 0b 	call  4000f6ac <memcpy>
                       
4000c284:	90 04 00 1a 	add  %l0, %i2, %o0
                            
  node = IMFS_initialize_node(
                                       
4000c288:	da 07 a0 5c 	ld  [ %fp + 0x5c ], %o5
                       
4000c28c:	98 10 00 1d 	mov  %i5, %o4
                                 
4000c290:	94 10 00 08 	mov  %o0, %o2
                                 
4000c294:	96 10 00 1c 	mov  %i4, %o3
                                 
4000c298:	92 10 00 19 	mov  %i1, %o1
                                 
4000c29c:	7f ff e7 75 	call  40006070 <IMFS_initialize_node>
         
4000c2a0:	90 10 00 10 	mov  %l0, %o0
                                 
    allocated_name,
                                                  
    namelen,
                                                         
    mode,
                                                            
    arg
                                                              
  );
                                                                 
  if ( node != NULL ) {
                                              
4000c2a4:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4000c2a8:	02 80 00 0c 	be  4000c2d8 <IMFS_create_node+0x78>
          
4000c2ac:	90 10 00 10 	mov  %l0, %o0
                                 
    IMFS_jnode_t *parent = parentloc->node_access;
                   
4000c2b0:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
  old_last = tail->previous;
                                         
4000c2b4:	c4 00 60 48 	ld  [ %g1 + 0x48 ], %g2
                       
  return &the_chain->Tail.Node;
                                      
4000c2b8:	86 00 60 44 	add  %g1, 0x44, %g3
                           
  entry_node->Parent = dir_node;
                                     
4000c2bc:	c2 27 60 08 	st  %g1, [ %i5 + 8 ]
                          
  the_node->next = tail;
                                             
4000c2c0:	c6 27 40 00 	st  %g3, [ %i5 ]
                              
  tail->previous = the_node;
                                         
4000c2c4:	fa 20 60 48 	st  %i5, [ %g1 + 0x48 ]
                       
  old_last->next = the_node;
                                         
4000c2c8:	fa 20 80 00 	st  %i5, [ %g2 ]
                              
  the_node->previous = old_last;
                                     
4000c2cc:	c4 27 60 04 	st  %g2, [ %i5 + 4 ]
                          
  } else {
                                                           
    free( allocated_node );
                                          
  }
                                                                  

                                                                     
  return node;
                                                       
}
                                                                    
4000c2d0:	81 c7 e0 08 	ret 
                                          
4000c2d4:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
    free( allocated_node );
                                          
4000c2d8:	7f ff dc 79 	call  400034bc <free>
                         
4000c2dc:	b0 10 00 1d 	mov  %i5, %i0
                                 
}
                                                                    
4000c2e0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000c2e4:	81 e8 00 00 	restore 
                                      
    errno = ENOMEM;
                                                  
4000c2e8:	40 00 0c 36 	call  4000f3c0 <__errno>
                      
4000c2ec:	ba 10 20 00 	clr  %i5
                                      
4000c2f0:	82 10 20 0c 	mov  0xc, %g1
                                 
    return NULL;
                                                     
4000c2f4:	10 bf ff f7 	b  4000c2d0 <IMFS_create_node+0x70>
           
4000c2f8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              

                                                                     

40006168 <IMFS_do_nothing_destroy>: void IMFS_do_nothing_destroy( IMFS_jnode_t *node ) { (void) node; }
40006168:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000616c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40003bd0 <IMFS_eval_path_devfs>: return NULL; } void IMFS_eval_path_devfs( rtems_filesystem_eval_path_context_t *ctx ) {
40003bd0:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  pathlen = rtems_filesystem_eval_path_get_pathlen( ctx );
           
40003bd4:	f8 06 20 04 	ld  [ %i0 + 4 ], %i4
                          
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;
    
40003bd8:	37 10 00 31 	sethi  %hi(0x4000c400), %i3
                   
  pathlen = rtems_filesystem_eval_path_get_pathlen( ctx );
           
40003bdc:	82 10 20 01 	mov  1, %g1
                                   
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;
    
40003be0:	b6 16 e1 64 	or  %i3, 0x164, %i3
                           
    match = IMFS_devfs_dirs[ i ].len == pathlen
                      
40003be4:	82 08 60 ff 	and  %g1, 0xff, %g1
                           
  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;
                                     
40003be8:	f2 06 20 20 	ld  [ %i0 + 0x20 ], %i1
                       
  path = rtems_filesystem_eval_path_get_path( ctx );
                 
40003bec:	f4 06 00 00 	ld  [ %i0 ], %i2
                              
  pathlen = rtems_filesystem_eval_path_get_pathlen( ctx );
           
40003bf0:	ba 10 20 00 	clr  %i5
                                      
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;
    
40003bf4:	80 a7 00 01 	cmp  %i4, %g1
                                 
40003bf8:	02 80 00 0b 	be  40003c24 <IMFS_eval_path_devfs+0x54>
      
40003bfc:	a0 06 e0 01 	add  %i3, 1, %l0
                              
40003c00:	ba 07 60 04 	add  %i5, 4, %i5
                              
  for ( i = 0; i < RTEMS_ARRAY_SIZE( IMFS_devfs_dirs ); ++i ) {
      
40003c04:	80 a7 60 10 	cmp  %i5, 0x10
                                
40003c08:	22 80 00 16 	be,a   40003c60 <IMFS_eval_path_devfs+0x90>
   
40003c0c:	fa 06 60 40 	ld  [ %i1 + 0x40 ], %i5
                       
40003c10:	c2 0e c0 1d 	ldub  [ %i3 + %i5 ], %g1
                      
    match = IMFS_devfs_dirs[ i ].len == pathlen
                      
40003c14:	82 08 60 ff 	and  %g1, 0xff, %g1
                           
      && memcmp( IMFS_devfs_dirs[ i ].name, path, pathlen ) == 0;
    
40003c18:	80 a7 00 01 	cmp  %i4, %g1
                                 
40003c1c:	32 bf ff fa 	bne,a   40003c04 <IMFS_eval_path_devfs+0x34>
  
40003c20:	ba 07 60 04 	add  %i5, 4, %i5
                              
40003c24:	94 10 00 1c 	mov  %i4, %o2
                                 
40003c28:	92 10 00 1a 	mov  %i2, %o1
                                 
40003c2c:	40 00 1f 70 	call  4000b9ec <memcmp>
                       
40003c30:	90 04 00 1d 	add  %l0, %i5, %o0
                            
40003c34:	80 a2 20 00 	cmp  %o0, 0
                                   
40003c38:	32 bf ff f3 	bne,a   40003c04 <IMFS_eval_path_devfs+0x34>
  <== NEVER TAKEN
40003c3c:	ba 07 60 04 	add  %i5, 4, %i5
                              <== NOT EXECUTED
      eval_flags &= ~RTEMS_FS_EXCLUSIVE;
                             
40003c40:	c2 06 20 10 	ld  [ %i0 + 0x10 ], %g1
                       
40003c44:	82 08 7f bf 	and  %g1, -65, %g1
                            
  ctx->pathlen = 0;
                                                  
40003c48:	c0 26 20 04 	clr  [ %i0 + 4 ]
                              
40003c4c:	b8 10 20 00 	clr  %i4
                                      

                                                                     
  entry = IMFS_devfs_is_dir( ctx, dir );
                             

                                                                     
  if ( entry != NULL ) {
                                             
40003c50:	80 a6 60 00 	cmp  %i1, 0
                                   
40003c54:	12 80 00 28 	bne  40003cf4 <IMFS_eval_path_devfs+0x124>
    
40003c58:	c2 26 20 10 	st  %g1, [ %i0 + 0x10 ]
                       
  return _Chain_Immutable_head( the_chain )->next;
                   
40003c5c:	fa 06 60 40 	ld  [ %i1 + 0x40 ], %i5
                       <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
40003c60:	b6 06 60 44 	add  %i1, 0x44, %i3
                           
  while ( current != tail ) {
                                        
40003c64:	80 a7 40 1b 	cmp  %i5, %i3
                                 
40003c68:	32 80 00 08 	bne,a   40003c88 <IMFS_eval_path_devfs+0xb8>
  <== ALWAYS TAKEN
40003c6c:	c2 17 60 10 	lduh  [ %i5 + 0x10 ], %g1
                     
  ctx->token = token;
                                                
40003c70:	10 80 00 23 	b  40003cfc <IMFS_eval_path_devfs+0x12c>
      <== NOT EXECUTED
40003c74:	f4 26 20 08 	st  %i2, [ %i0 + 8 ]
                          <== NOT EXECUTED
40003c78:	80 a6 c0 1d 	cmp  %i3, %i5
                                 
40003c7c:	22 80 00 20 	be,a   40003cfc <IMFS_eval_path_devfs+0x12c>
  
40003c80:	f4 26 20 08 	st  %i2, [ %i0 + 8 ]
                          
    match = entry->namelen == pathlen
                                
40003c84:	c2 17 60 10 	lduh  [ %i5 + 0x10 ], %g1
                     
      && memcmp( entry->name, path, pathlen ) == 0;
                  
40003c88:	80 a0 40 1c 	cmp  %g1, %i4
                                 
40003c8c:	32 bf ff fb 	bne,a   40003c78 <IMFS_eval_path_devfs+0xa8>
  
40003c90:	fa 07 40 00 	ld  [ %i5 ], %i5
                              
40003c94:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        
40003c98:	94 10 00 1c 	mov  %i4, %o2
                                 
40003c9c:	40 00 1f 54 	call  4000b9ec <memcmp>
                       
40003ca0:	92 10 00 1a 	mov  %i2, %o1
                                 
40003ca4:	80 a2 20 00 	cmp  %o0, 0
                                   
40003ca8:	32 bf ff f4 	bne,a   40003c78 <IMFS_eval_path_devfs+0xa8>
  
40003cac:	fa 07 40 00 	ld  [ %i5 ], %i5
                              
  if ( entry != NULL ) {
                                             
    int eval_flags;
                                                  

                                                                     
    eval_flags = rtems_filesystem_eval_path_get_flags( ctx );
        

                                                                     
    if ( ( eval_flags & RTEMS_FS_EXCLUSIVE ) == 0 ) {
                
40003cb0:	c2 06 20 10 	ld  [ %i0 + 0x10 ], %g1
                       
40003cb4:	80 88 60 40 	btst  0x40, %g1
                               
40003cb8:	12 80 00 15 	bne  40003d0c <IMFS_eval_path_devfs+0x13c>
    
40003cbc:	01 00 00 00 	nop 
                                          
      --dir->Node.reference_count;
                                   
40003cc0:	c2 16 60 18 	lduh  [ %i1 + 0x18 ], %g1
                     
40003cc4:	82 00 7f ff 	add  %g1, -1, %g1
                             
40003cc8:	c2 36 60 18 	sth  %g1, [ %i1 + 0x18 ]
                      
  loc->handlers = node->control->handlers;
                           
40003ccc:	c4 07 60 38 	ld  [ %i5 + 0x38 ], %g2
                       
      ++entry->reference_count;
                                      
40003cd0:	c2 17 60 18 	lduh  [ %i5 + 0x18 ], %g1
                     
40003cd4:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
      currentloc->node_access = entry;
                               
      currentloc->node_access_2 = IMFS_generic_get_context_by_node( entry );

40003cd8:	c6 07 60 40 	ld  [ %i5 + 0x40 ], %g3
                       
      ++entry->reference_count;
                                      
40003cdc:	82 00 60 01 	inc  %g1
                                      
40003ce0:	c2 37 60 18 	sth  %g1, [ %i5 + 0x18 ]
                      
      currentloc->node_access = entry;
                               
40003ce4:	fa 26 20 20 	st  %i5, [ %i0 + 0x20 ]
                       
      currentloc->node_access_2 = IMFS_generic_get_context_by_node( entry );

40003ce8:	c6 26 20 24 	st  %g3, [ %i0 + 0x24 ]
                       
40003cec:	c4 26 20 28 	st  %g2, [ %i0 + 0x28 ]
                       
  ctx->pathlen = 0;
                                                  
40003cf0:	c0 26 20 04 	clr  [ %i0 + 4 ]
                              
40003cf4:	81 c7 e0 08 	ret 
                                          
40003cf8:	81 e8 00 00 	restore 
                                      
  ctx->tokenlen = tokenlen;
                                          
40003cfc:	f8 26 20 0c 	st  %i4, [ %i0 + 0xc ]
                        
  ctx->pathlen = 0;
                                                  
40003d00:	c0 26 20 04 	clr  [ %i0 + 4 ]
                              
40003d04:	81 c7 e0 08 	ret 
                                          
40003d08:	81 e8 00 00 	restore 
                                      
      IMFS_Set_handlers( currentloc );
                               
      rtems_filesystem_eval_path_clear_path( ctx );
                  
    } else {
                                                         
      rtems_filesystem_eval_path_error( ctx, EEXIST );
               
40003d0c:	7f ff fc 1d 	call  40002d80 <rtems_filesystem_eval_path_error>
<== NOT EXECUTED
40003d10:	93 e8 20 11 	restore  %g0, 0x11, %o1
                       <== NOT EXECUTED

                                                                     

4000b0cc <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 ) {
4000b0cc:	9d e3 bf 88 	save  %sp, -120, %sp
                          
   /*
                                                                
    * Traverse tree that starts at the mt_fs_root and deallocate memory

    * associated memory space
                                        
    */
                                                               

                                                                     
   loc = temp_mt_entry->mt_fs_root->location;
                        
4000b0d0:	c2 06 20 24 	ld  [ %i0 + 0x24 ], %g1
                       
4000b0d4:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
4000b0d8:	f6 00 40 00 	ld  [ %g1 ], %i3
                              
4000b0dc:	f8 00 60 04 	ld  [ %g1 + 4 ], %i4
                          
4000b0e0:	c8 00 60 0c 	ld  [ %g1 + 0xc ], %g4
                        
4000b0e4:	c6 00 60 10 	ld  [ %g1 + 0x10 ], %g3
                       
4000b0e8:	c2 00 60 14 	ld  [ %g1 + 0x14 ], %g1
                       
   jnode = (IMFS_jnode_t *)loc.node_access;
                          
4000b0ec:	ba 10 00 02 	mov  %g2, %i5
                                 
   loc = temp_mt_entry->mt_fs_root->location;
                        
4000b0f0:	c4 27 bf f0 	st  %g2, [ %fp + -16 ]
                        
  return S_ISDIR( node->st_mode );
                                   
4000b0f4:	35 00 00 3c 	sethi  %hi(0xf000), %i2
                       
4000b0f8:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000b0fc:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
  loc->handlers = node->control->handlers;
                           
4000b100:	c4 07 60 38 	ld  [ %i5 + 0x38 ], %g2
                       
4000b104:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
4000b108:	c6 27 bf f8 	st  %g3, [ %fp + -8 ]
                         
  return S_ISDIR( node->st_mode );
                                   
4000b10c:	82 08 40 1a 	and  %g1, %i2, %g1
                            
4000b110:	f6 27 bf e8 	st  %i3, [ %fp + -24 ]
                        
   do {
                                                              
     next = jnode->Parent;
                                           
     loc.node_access = (void *)jnode;
                                
     IMFS_Set_handlers( &loc );
                                      

                                                                     
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {

4000b114:	37 00 00 10 	sethi  %hi(0x4000), %i3
                       
   loc = temp_mt_entry->mt_fs_root->location;
                        
4000b118:	f8 27 bf ec 	st  %i4, [ %fp + -20 ]
                        
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {

4000b11c:	80 a0 40 1b 	cmp  %g1, %i3
                                 
     next = jnode->Parent;
                                           
4000b120:	f8 07 60 08 	ld  [ %i5 + 8 ], %i4
                          
   loc = temp_mt_entry->mt_fs_root->location;
                        
4000b124:	c8 27 bf f4 	st  %g4, [ %fp + -12 ]
                        
     loc.node_access = (void *)jnode;
                                
4000b128:	fa 27 bf f0 	st  %i5, [ %fp + -16 ]
                        
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {

4000b12c:	12 80 00 14 	bne  4000b17c <IMFS_fsunmount+0xb0>
           
4000b130:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
  return _Chain_Immutable_head( the_chain )->next;
                   
4000b134:	c4 07 60 40 	ld  [ %i5 + 0x40 ], %g2
                       
  return &the_chain->Tail.Node;
                                      
4000b138:	82 07 60 44 	add  %i5, 0x44, %g1
                           
4000b13c:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000b140:	02 80 00 10 	be  4000b180 <IMFS_fsunmount+0xb4>
            
4000b144:	92 07 bf e8 	add  %fp, -24, %o1
                            
       if ( IMFS_is_directory( jnode ) ) {
                           
         if ( jnode_has_children( jnode ) )
                          
           jnode = jnode_get_first_child( jnode );
                   
       }
                                                             
     }
                                                               
   } while (jnode != NULL);
                                          
4000b148:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000b14c:	02 80 00 23 	be  4000b1d8 <IMFS_fsunmount+0x10c>
           
4000b150:	b8 10 00 02 	mov  %g2, %i4
                                 
4000b154:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
4000b158:	ba 10 00 1c 	mov  %i4, %i5
                                 
  loc->handlers = node->control->handlers;
                           
4000b15c:	c4 07 60 38 	ld  [ %i5 + 0x38 ], %g2
                       
4000b160:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
     next = jnode->Parent;
                                           
4000b164:	f8 07 60 08 	ld  [ %i5 + 8 ], %i4
                          
     loc.node_access = (void *)jnode;
                                
4000b168:	fa 27 bf f0 	st  %i5, [ %fp + -16 ]
                        
  return S_ISDIR( node->st_mode );
                                   
4000b16c:	82 08 40 1a 	and  %g1, %i2, %g1
                            
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {

4000b170:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4000b174:	02 bf ff f0 	be  4000b134 <IMFS_fsunmount+0x68>
            
4000b178:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
        result = IMFS_rmnod( NULL, &loc );
                           
4000b17c:	92 07 bf e8 	add  %fp, -24, %o1
                            
4000b180:	7f ff e9 e3 	call  4000590c <IMFS_rmnod>
                   
4000b184:	90 10 20 00 	clr  %o0
                                      
        if ( result != 0 )
                                           
4000b188:	80 a2 20 00 	cmp  %o0, 0
                                   
4000b18c:	12 80 00 15 	bne  4000b1e0 <IMFS_fsunmount+0x114>
          
4000b190:	11 37 ab 6f 	sethi  %hi(0xdeadbc00), %o0
                   
        IMFS_node_destroy( jnode );
                                  
4000b194:	7f ff e9 6b 	call  40005740 <IMFS_node_destroy>
            
4000b198:	90 10 00 1d 	mov  %i5, %o0
                                 
     if ( jnode != NULL ) {
                                          
4000b19c:	80 a7 20 00 	cmp  %i4, 0
                                   
4000b1a0:	02 80 00 0e 	be  4000b1d8 <IMFS_fsunmount+0x10c>
           
4000b1a4:	01 00 00 00 	nop 
                                          
       if ( IMFS_is_directory( jnode ) ) {
                           
4000b1a8:	c2 07 20 14 	ld  [ %i4 + 0x14 ], %g1
                       
4000b1ac:	84 08 40 1a 	and  %g1, %i2, %g2
                            
4000b1b0:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000b1b4:	32 bf ff ea 	bne,a   4000b15c <IMFS_fsunmount+0x90>
        <== NEVER TAKEN
4000b1b8:	ba 10 00 1c 	mov  %i4, %i5
                                 <== NOT EXECUTED
4000b1bc:	c4 07 20 40 	ld  [ %i4 + 0x40 ], %g2
                       
         if ( jnode_has_children( jnode ) )
                          
4000b1c0:	86 07 20 44 	add  %i4, 0x44, %g3
                           
4000b1c4:	80 a0 80 03 	cmp  %g2, %g3
                                 
4000b1c8:	12 bf ff e1 	bne  4000b14c <IMFS_fsunmount+0x80>
           
4000b1cc:	80 a0 a0 00 	cmp  %g2, 0
                                   
   } while (jnode != NULL);
                                          
4000b1d0:	10 bf ff e3 	b  4000b15c <IMFS_fsunmount+0x90>
             
4000b1d4:	ba 10 00 1c 	mov  %i4, %i5
                                 
}
                                                                    
4000b1d8:	81 c7 e0 08 	ret 
                                          
4000b1dc:	81 e8 00 00 	restore 
                                      
	  rtems_fatal_error_occurred( 0xdeadbeef );
                         
4000b1e0:	7f ff fa 9e 	call  40009c58 <rtems_fatal_error_occurred>
   <== NOT EXECUTED
4000b1e4:	90 12 22 ef 	or  %o0, 0x2ef, %o0
                           <== NOT EXECUTED
4000b1e8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

400047a0 <IMFS_initialize>: int IMFS_initialize( rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ) {
400047a0:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
         
400047a4:	92 10 20 58 	mov  0x58, %o1
                                
400047a8:	40 00 17 4f 	call  4000a4e4 <calloc>
                       
400047ac:	90 10 20 01 	mov  1, %o0
                                   
  IMFS_mount_data mount_data = {
                                     
400047b0:	03 10 00 3c 	sethi  %hi(0x4000f000), %g1
                   
400047b4:	82 10 61 c0 	or  %g1, 0x1c0, %g1	! 4000f1c0 <IMFS_ops>
     
400047b8:	d0 27 bf f4 	st  %o0, [ %fp + -12 ]
                        
    .fs_info = fs_info,
                                              
    .ops = &IMFS_ops,
                                                
    .mknod_controls = &IMFS_default_mknod_controls
                   
  };
                                                                 

                                                                     
  if ( fs_info == NULL ) {
                                           
400047bc:	80 a2 20 00 	cmp  %o0, 0
                                   
  IMFS_mount_data mount_data = {
                                     
400047c0:	c2 27 bf f8 	st  %g1, [ %fp + -8 ]
                         
400047c4:	03 10 00 3c 	sethi  %hi(0x4000f000), %g1
                   
400047c8:	82 10 61 b0 	or  %g1, 0x1b0, %g1	! 4000f1b0 <IMFS_default_mknod_controls>

  if ( fs_info == NULL ) {
                                           
400047cc:	02 80 00 07 	be  400047e8 <IMFS_initialize+0x48>
           
400047d0:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
  }
                                                                  

                                                                     
  return IMFS_initialize_support( mt_entry, &mount_data );
           
400047d4:	92 07 bf f4 	add  %fp, -12, %o1
                            
400047d8:	40 00 00 11 	call  4000481c <IMFS_initialize_support>
      
400047dc:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
400047e0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400047e4:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
400047e8:	40 00 26 22 	call  4000e070 <__errno>
                      
400047ec:	b0 10 3f ff 	mov  -1, %i0
                                  
400047f0:	82 10 20 0c 	mov  0xc, %g1
                                 
400047f4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
400047f8:	81 c7 e0 08 	ret 
                                          
400047fc:	81 e8 00 00 	restore 
                                      

                                                                     

40006070 <IMFS_initialize_node>: const char *name, size_t namelen, mode_t mode, void *arg ) {
40006070:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  time_t now;
                                                        

                                                                     
  if ( namelen > IMFS_NAME_MAX ) {
                                   
40006074:	80 a6 e0 ff 	cmp  %i3, 0xff
                                
40006078:	18 80 00 18 	bgu  400060d8 <IMFS_initialize_node+0x68>
     
4000607c:	03 00 00 40 	sethi  %hi(0x10000), %g1
                      
  }
                                                                  

                                                                     
  /*
                                                                 
   *  Fill in the basic information
                                  
   */
                                                                
  node->name = name;
                                                 
40006080:	f4 26 20 0c 	st  %i2, [ %i0 + 0xc ]
                        
  node->namelen = namelen;
                                           
40006084:	f6 36 20 10 	sth  %i3, [ %i0 + 0x10 ]
                      
  node->reference_count = 1;
                                         
40006088:	82 10 60 01 	or  %g1, 1, %g1
                               
  node->st_nlink = 1;
                                                
  node->control = node_control;
                                      
4000608c:	f2 26 20 38 	st  %i1, [ %i0 + 0x38 ]
                       
  node->reference_count = 1;
                                         
40006090:	c2 26 20 18 	st  %g1, [ %i0 + 0x18 ]
                       

                                                                     
  /*
                                                                 
   *  Fill in the mode and permission information for the jnode structure.

   */
                                                                
  node->st_mode = mode;
                                              
  node->st_uid = geteuid();
                                          
40006094:	40 00 16 8a 	call  4000babc <geteuid>
                      
40006098:	f8 26 20 14 	st  %i4, [ %i0 + 0x14 ]
                       
  node->st_gid = getegid();
                                          
4000609c:	40 00 16 82 	call  4000baa4 <getegid>
                      
400060a0:	d0 36 20 1c 	sth  %o0, [ %i0 + 0x1c ]
                      
400060a4:	d0 36 20 1e 	sth  %o0, [ %i0 + 0x1e ]
                      
  _Timecounter_Getbintime( &now );
                                   
400060a8:	40 00 13 69 	call  4000ae4c <_Timecounter_Getbintime>
      
400060ac:	90 07 bf f0 	add  %fp, -16, %o0
                            
  return now.sec;
                                                    
400060b0:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  /*
                                                                 
   *  Now set all the times.
                                         
   */
                                                                

                                                                     
  now = _IMFS_get_time();
                                            
  node->stat_atime = now;
                                            
400060b4:	c4 3e 20 20 	std  %g2, [ %i0 + 0x20 ]
                      
  node->stat_mtime = now;
                                            
  node->stat_ctime = now;
                                            

                                                                     
  return (*node_control->node_initialize)( node, arg );
              
400060b8:	92 10 00 1d 	mov  %i5, %o1
                                 
  node->stat_mtime = now;
                                            
400060bc:	c4 3e 20 28 	std  %g2, [ %i0 + 0x28 ]
                      
  node->stat_ctime = now;
                                            
400060c0:	c4 3e 20 30 	std  %g2, [ %i0 + 0x30 ]
                      
  return (*node_control->node_initialize)( node, arg );
              
400060c4:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
400060c8:	9f c0 40 00 	call  %g1
                                     
400060cc:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
400060d0:	81 c7 e0 08 	ret 
                                          
400060d4:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    errno = ENAMETOOLONG;
                                            
400060d8:	40 00 24 ba 	call  4000f3c0 <__errno>
                      
400060dc:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
400060e0:	82 10 20 5b 	mov  0x5b, %g1
                                <== NOT EXECUTED
400060e4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    return NULL;
                                                     
400060e8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400060ec:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40005328 <IMFS_initialize_support>: {
40005328:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  fs_info->mknod_controls = mount_data->mknod_controls;
              
4000532c:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
  fs_info = mount_data->fs_info;
                                     
40005330:	d0 06 40 00 	ld  [ %i1 ], %o0
                              
  node_control = &mount_data->mknod_controls->directory->node_control;

40005334:	d2 00 40 00 	ld  [ %g1 ], %o1
                              
  fs_info->mknod_controls = mount_data->mknod_controls;
              
40005338:	c2 22 20 50 	st  %g1, [ %o0 + 0x50 ]
                       
  root_node = IMFS_initialize_node(
                                  
4000533c:	9a 10 20 00 	clr  %o5
                                      
  mt_entry->ops = mount_data->ops;
                                   
40005340:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
40005344:	c2 26 20 0c 	st  %g1, [ %i0 + 0xc ]
                        
  mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
  
40005348:	03 10 00 5d 	sethi  %hi(0x40017400), %g1
                   
4000534c:	82 10 63 04 	or  %g1, 0x304, %g1	! 40017704 <IMFS_LIMITS_AND_OPTIONS>

  mt_entry->mt_fs_root->location.node_access = root_node;
            
40005350:	c4 06 20 24 	ld  [ %i0 + 0x24 ], %g2
                       
  mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
  
40005354:	c2 26 20 2c 	st  %g1, [ %i0 + 0x2c ]
                       
  root_node = IMFS_initialize_node(
                                  
40005358:	19 00 00 10 	sethi  %hi(0x4000), %o4
                       
  mt_entry->fs_info = fs_info;
                                       
4000535c:	d0 26 20 08 	st  %o0, [ %i0 + 8 ]
                          
  root_node = IMFS_initialize_node(
                                  
40005360:	98 13 21 ed 	or  %o4, 0x1ed, %o4
                           
  mt_entry->mt_fs_root->location.handlers = node_control->handlers;
  
40005364:	c2 02 40 00 	ld  [ %o1 ], %g1
                              
40005368:	c2 20 a0 10 	st  %g1, [ %g2 + 0x10 ]
                       
}
                                                                    
4000536c:	b0 10 20 00 	clr  %i0
                                      
  mt_entry->mt_fs_root->location.node_access = root_node;
            
40005370:	d0 20 a0 08 	st  %o0, [ %g2 + 8 ]
                          
  root_node = IMFS_initialize_node(
                                  
40005374:	96 10 20 00 	clr  %o3
                                      
40005378:	15 10 00 5b 	sethi  %hi(0x40016c00), %o2
                   
4000537c:	40 00 03 3d 	call  40006070 <IMFS_initialize_node>
         
40005380:	94 12 a1 e8 	or  %o2, 0x1e8, %o2	! 40016de8 <rtems_test_name+0x1b0>

}
                                                                    
40005384:	81 c7 e0 08 	ret 
                                          
40005388:	81 e8 00 00 	restore 
                                      

                                                                     

40005478 <IMFS_link>: {
40005478:	9d e3 bf 88 	save  %sp, -120, %sp
                          
  target = targetloc->node_access;
                                   
4000547c:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
  if ( target->st_nlink >= LINK_MAX )
                                
40005480:	c2 17 60 1a 	lduh  [ %i5 + 0x1a ], %g1
                     
40005484:	80 a0 60 07 	cmp  %g1, 7
                                   
40005488:	18 80 00 19 	bgu  400054ec <IMFS_link+0x74>
                
4000548c:	9a 10 21 ff 	mov  0x1ff, %o5
                               
  new_node = IMFS_create_node(
                                       
40005490:	fa 23 a0 5c 	st  %i5, [ %sp + 0x5c ]
                       
40005494:	98 10 00 1b 	mov  %i3, %o4
                                 
40005498:	96 10 00 1a 	mov  %i2, %o3
                                 
4000549c:	94 10 20 48 	mov  0x48, %o2
                                
400054a0:	90 10 00 18 	mov  %i0, %o0
                                 
400054a4:	13 10 00 5d 	sethi  %hi(0x40017400), %o1
                   
400054a8:	40 00 1b 6e 	call  4000c260 <IMFS_create_node>
             
400054ac:	92 12 61 6c 	or  %o1, 0x16c, %o1	! 4001756c <IMFS_node_control_hard_link>

  if ( !new_node )
                                                   
400054b0:	80 a2 20 00 	cmp  %o0, 0
                                   
400054b4:	02 80 00 14 	be  40005504 <IMFS_link+0x8c>
                 
400054b8:	90 07 bf f0 	add  %fp, -16, %o0
                            
  target->reference_count++;
                                         
400054bc:	c4 17 60 18 	lduh  [ %i5 + 0x18 ], %g2
                     
  target->st_nlink++;
                                                
400054c0:	c2 17 60 1a 	lduh  [ %i5 + 0x1a ], %g1
                     
  target->reference_count++;
                                         
400054c4:	84 00 a0 01 	inc  %g2
                                      
  target->st_nlink++;
                                                
400054c8:	82 00 60 01 	inc  %g1
                                      
  target->reference_count++;
                                         
400054cc:	c4 37 60 18 	sth  %g2, [ %i5 + 0x18 ]
                      
  target->st_nlink++;
                                                
400054d0:	c2 37 60 1a 	sth  %g1, [ %i5 + 0x1a ]
                      
  _Timecounter_Getbintime( &now );
                                   
400054d4:	40 00 16 5e 	call  4000ae4c <_Timecounter_Getbintime>
      
400054d8:	b0 10 20 00 	clr  %i0
                                      
  return now.sec;
                                                    
400054dc:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       <== NOT EXECUTED
  jnode->stat_ctime = _IMFS_get_time();
                              
400054e0:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      <== NOT EXECUTED
}
                                                                    
400054e4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400054e8:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( EMLINK );
                  
400054ec:	40 00 27 b5 	call  4000f3c0 <__errno>
                      
400054f0:	b0 10 3f ff 	mov  -1, %i0
                                  
400054f4:	82 10 20 1f 	mov  0x1f, %g1
                                
400054f8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
400054fc:	81 c7 e0 08 	ret 
                                          
40005500:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
40005504:	40 00 27 af 	call  4000f3c0 <__errno>
                      
40005508:	b0 10 3f ff 	mov  -1, %i0
                                  
4000550c:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
40005510:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40005514:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005518:	81 e8 00 00 	restore 
                                      

                                                                     

40004cf8 <IMFS_make_linearfile>: const char *path, mode_t mode, const void *data, size_t size ) {
40004cf8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    .size = size
                                                     
  };
                                                                 

                                                                     
  return IMFS_make_node(
                                             
    path,
                                                            
    ( mode & ~S_IFMT ) | S_IFREG,
                                    
40004cfc:	13 00 00 3c 	sethi  %hi(0xf000), %o1
                       
  IMFS_linearfile_context ctx = {
                                    
40004d00:	f4 3f bf f8 	std  %i2, [ %fp + -8 ]
                        
    ( mode & ~S_IFMT ) | S_IFREG,
                                    
40004d04:	b2 2e 40 09 	andn  %i1, %o1, %i1
                           
  return IMFS_make_node(
                                             
40004d08:	98 07 bf f8 	add  %fp, -8, %o4
                             
40004d0c:	96 10 20 58 	mov  0x58, %o3
                                
40004d10:	90 10 00 18 	mov  %i0, %o0
                                 
40004d14:	13 00 00 20 	sethi  %hi(0x8000), %o1
                       
40004d18:	15 10 00 ab 	sethi  %hi(0x4002ac00), %o2
                   
40004d1c:	92 16 40 09 	or  %i1, %o1, %o1
                             
40004d20:	40 00 35 d0 	call  40012460 <IMFS_make_node>
               
40004d24:	94 12 a1 e8 	or  %o2, 0x1e8, %o2
                           
    &IMFS_node_control_linfile,
                                      
    sizeof( IMFS_file_t ),
                                           
    &ctx
                                                             
  );
                                                                 
}
                                                                    
40004d28:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40004d2c:	91 e8 00 08 	restore  %g0, %o0, %o0
                        

                                                                     

40007a08 <IMFS_make_node>: mode_t mode, const IMFS_node_control *node_control, size_t node_size, void *context ) {
40007a08:	9d e3 bf 50 	save  %sp, -176, %sp
                          
  int rv = 0;
                                                        

                                                                     
  mode &= ~rtems_filesystem_umask;
                                   
40007a0c:	7f ff fc e6 	call  40006da4 <rtems_current_user_env_get>
   
40007a10:	01 00 00 00 	nop 
                                          
40007a14:	da 02 20 08 	ld  [ %o0 + 8 ], %o5
                          
40007a18:	b2 2e 40 0d 	andn  %i1, %o5, %i1
                           

                                                                     
  switch (mode & S_IFMT) {
                                           
40007a1c:	03 00 00 3c 	sethi  %hi(0xf000), %g1
                       
40007a20:	05 00 00 18 	sethi  %hi(0x6000), %g2
                       
40007a24:	82 0e 40 01 	and  %i1, %g1, %g1
                            
40007a28:	80 a0 40 02 	cmp  %g1, %g2
                                 
40007a2c:	02 80 00 0c 	be  40007a5c <IMFS_make_node+0x54>
            
40007a30:	94 10 20 78 	mov  0x78, %o2
                                
40007a34:	08 80 00 1d 	bleu  40007aa8 <IMFS_make_node+0xa0>
          
40007a38:	05 00 00 04 	sethi  %hi(0x1000), %g2
                       
40007a3c:	05 00 00 20 	sethi  %hi(0x8000), %g2
                       
40007a40:	80 a0 40 02 	cmp  %g1, %g2
                                 
40007a44:	02 80 00 06 	be  40007a5c <IMFS_make_node+0x54>
            
40007a48:	05 00 00 30 	sethi  %hi(0xc000), %g2
                       
40007a4c:	80 a0 40 02 	cmp  %g1, %g2
                                 <== NOT EXECUTED
40007a50:	12 80 00 1c 	bne  40007ac0 <IMFS_make_node+0xb8>
           <== NOT EXECUTED
40007a54:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  if ( rv == 0 ) {
                                                   
    rtems_filesystem_eval_path_context_t ctx;
                        
    int eval_flags = RTEMS_FS_FOLLOW_LINK
                            
      | RTEMS_FS_MAKE
                                                
      | RTEMS_FS_EXCLUSIVE;
                                          
    const rtems_filesystem_location_info_t *currentloc =
             
40007a58:	94 10 20 78 	mov  0x78, %o2	! 78 <_TLS_Alignment+0x77>
     <== NOT EXECUTED
40007a5c:	92 10 00 18 	mov  %i0, %o1
                                 
40007a60:	7f ff fa 9f 	call  400064dc <rtems_filesystem_eval_path_start>

40007a64:	90 07 bf c8 	add  %fp, -56, %o0
                            
  return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;
          
40007a68:	c2 02 20 14 	ld  [ %o0 + 0x14 ], %g1
                       
40007a6c:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        
      rtems_filesystem_eval_path_start( &ctx, path, eval_flags );
    

                                                                     
    if ( IMFS_is_imfs_instance( currentloc ) ) {
                     
40007a70:	c4 00 60 24 	ld  [ %g1 + 0x24 ], %g2
                       
40007a74:	03 10 00 21 	sethi  %hi(0x40008400), %g1
                   
40007a78:	82 10 63 18 	or  %g1, 0x318, %g1	! 40008718 <IMFS_node_clone>

40007a7c:	80 a0 80 01 	cmp  %g2, %g1
                                 
40007a80:	02 80 00 16 	be  40007ad8 <IMFS_make_node+0xd0>
            
40007a84:	ba 10 00 08 	mov  %o0, %i5
                                 
        IMFS_mtime_ctime_update( parent );
                           
      } else {
                                                       
        rv = -1;
                                                     
      }
                                                              
    } else {
                                                         
      rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
             
40007a88:	92 10 20 86 	mov  0x86, %o1
                                
40007a8c:	90 07 bf c8 	add  %fp, -56, %o0
                            
40007a90:	7f ff f9 d8 	call  400061f0 <rtems_filesystem_eval_path_error>

40007a94:	b0 10 3f ff 	mov  -1, %i0
                                  
      rv = -1;
                                                       
    }
                                                                

                                                                     
    rtems_filesystem_eval_path_cleanup( &ctx );
                      
40007a98:	7f ff fa db 	call  40006604 <rtems_filesystem_eval_path_cleanup>

40007a9c:	90 07 bf c8 	add  %fp, -56, %o0
                            
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40007aa0:	81 c7 e0 08 	ret 
                                          
40007aa4:	81 e8 00 00 	restore 
                                      
  switch (mode & S_IFMT) {
                                           
40007aa8:	80 a0 40 02 	cmp  %g1, %g2
                                 
40007aac:	02 bf ff eb 	be  40007a58 <IMFS_make_node+0x50>
            
40007ab0:	05 00 00 08 	sethi  %hi(0x2000), %g2
                       
40007ab4:	80 a0 40 02 	cmp  %g1, %g2
                                 
40007ab8:	02 bf ff e9 	be  40007a5c <IMFS_make_node+0x54>
            
40007abc:	94 10 20 78 	mov  0x78, %o2
                                
      errno = EINVAL;
                                                
40007ac0:	40 00 33 85 	call  400148d4 <__errno>
                      
40007ac4:	b0 10 3f ff 	mov  -1, %i0
                                  
40007ac8:	82 10 20 16 	mov  0x16, %g1
                                
40007acc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
40007ad0:	81 c7 e0 08 	ret 
                                          
40007ad4:	81 e8 00 00 	restore 
                                      
      IMFS_jnode_t *new_node = IMFS_create_node(
                     
40007ad8:	f8 23 a0 5c 	st  %i4, [ %sp + 0x5c ]
                       
40007adc:	9a 10 00 19 	mov  %i1, %o5
                                 
40007ae0:	d8 07 bf d4 	ld  [ %fp + -44 ], %o4
                        
40007ae4:	d6 07 bf d0 	ld  [ %fp + -48 ], %o3
                        
40007ae8:	94 10 00 1b 	mov  %i3, %o2
                                 
40007aec:	92 10 00 1a 	mov  %i2, %o1
                                 
40007af0:	40 00 27 ba 	call  400119d8 <IMFS_create_node>
             
40007af4:	b0 10 3f ff 	mov  -1, %i0
                                  
      if ( new_node != NULL ) {
                                      
40007af8:	80 a2 20 00 	cmp  %o0, 0
                                   
40007afc:	02 bf ff e7 	be  40007a98 <IMFS_make_node+0x90>
            
40007b00:	01 00 00 00 	nop 
                                          
        IMFS_jnode_t *parent = currentloc->node_access;
              
40007b04:	fa 07 60 08 	ld  [ %i5 + 8 ], %i5
                          
  _Timecounter_Getbintime( &now );
                                   
40007b08:	40 00 17 78 	call  4000d8e8 <_Timecounter_Getbintime>
      
40007b0c:	90 07 bf b8 	add  %fp, -72, %o0
                            
  return now.sec;
                                                    
40007b10:	c4 1f bf b8 	ldd  [ %fp + -72 ], %g2
                       
  jnode->stat_mtime = now;
                                           
40007b14:	c4 3f 60 28 	std  %g2, [ %i5 + 0x28 ]
                      
  int rv = 0;
                                                        
40007b18:	b0 10 20 00 	clr  %i0
                                      
  jnode->stat_ctime = now;
                                           
40007b1c:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      
    rtems_filesystem_eval_path_cleanup( &ctx );
                      
40007b20:	7f ff fa b9 	call  40006604 <rtems_filesystem_eval_path_cleanup>

40007b24:	90 07 bf c8 	add  %fp, -56, %o0
                            
}
                                                                    
40007b28:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40007b2c:	81 e8 00 00 	restore 
                                      

                                                                     

40005cfc <IMFS_memfile_write>: {
40005cfc:	9d e3 bf 90 	save  %sp, -112, %sp
                          <== NOT EXECUTED
  if ( last_byte > memfile->File.size ) {
                            
40005d00:	c2 06 20 40 	ld  [ %i0 + 0x40 ], %g1
                       <== NOT EXECUTED
  last_byte = start + my_length;
                                     
40005d04:	96 07 00 1a 	add  %i4, %i2, %o3
                            <== NOT EXECUTED
  if ( last_byte > memfile->File.size ) {
                            
40005d08:	80 a0 40 0b 	cmp  %g1, %o3
                                 <== NOT EXECUTED
40005d0c:	0a 80 00 52 	bcs  40005e54 <IMFS_memfile_write+0x158>
      <== NOT EXECUTED
40005d10:	a0 10 00 18 	mov  %i0, %l0
                                 <== NOT EXECUTED
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
               
40005d14:	03 10 00 5a 	sethi  %hi(0x40016800), %g1
                   <== NOT EXECUTED
40005d18:	fa 00 63 98 	ld  [ %g1 + 0x398 ], %i5	! 40016b98 <imfs_memfile_bytes_per_block>
<== NOT EXECUTED
40005d1c:	b1 3f 60 1f 	sra  %i5, 0x1f, %i0
                           <== NOT EXECUTED
40005d20:	96 10 00 1d 	mov  %i5, %o3
                                 <== NOT EXECUTED
40005d24:	94 10 00 18 	mov  %i0, %o2
                                 <== NOT EXECUTED
40005d28:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
40005d2c:	40 00 23 53 	call  4000ea78 <__moddi3>
                     <== NOT EXECUTED
40005d30:	90 10 00 19 	mov  %i1, %o0
                                 <== NOT EXECUTED
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
                      
40005d34:	94 10 00 18 	mov  %i0, %o2
                                 <== NOT EXECUTED
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
               
40005d38:	a2 10 00 09 	mov  %o1, %l1
                                 <== NOT EXECUTED
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
                      
40005d3c:	96 10 00 1d 	mov  %i5, %o3
                                 <== NOT EXECUTED
40005d40:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
40005d44:	40 00 22 c2 	call  4000e84c <__divdi3>
                     <== NOT EXECUTED
40005d48:	90 10 00 19 	mov  %i1, %o0
                                 <== NOT EXECUTED
  copied = 0;
                                                        
40005d4c:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
  if ( start_offset )  {
                                             
40005d50:	80 a4 60 00 	cmp  %l1, 0
                                   <== NOT EXECUTED
40005d54:	12 80 00 19 	bne  40005db8 <IMFS_memfile_write+0xbc>
       <== NOT EXECUTED
40005d58:	b4 10 00 09 	mov  %o1, %i2
                                 <== NOT EXECUTED
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
              
40005d5c:	80 a7 00 1d 	cmp  %i4, %i5
                                 <== NOT EXECUTED
40005d60:	1a 80 00 0d 	bcc  40005d94 <IMFS_memfile_write+0x98>
       <== NOT EXECUTED
40005d64:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
  if ( my_length ) {
                                                 
40005d68:	10 80 00 28 	b  40005e08 <IMFS_memfile_write+0x10c>
        <== NOT EXECUTED
40005d6c:	80 a7 20 00 	cmp  %i4, 0
                                   <== NOT EXECUTED
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );
                      
40005d70:	40 00 26 4f 	call  4000f6ac <memcpy>
                       <== NOT EXECUTED
40005d74:	d0 02 00 00 	ld  [ %o0 ], %o0
                              <== NOT EXECUTED
    my_length -= to_copy;
                                            
40005d78:	b8 27 00 1d 	sub  %i4, %i5, %i4
                            <== NOT EXECUTED
    src += to_copy;
                                                  
40005d7c:	b6 06 c0 1d 	add  %i3, %i5, %i3
                            <== NOT EXECUTED
    block++;
                                                         
40005d80:	b4 06 a0 01 	inc  %i2
                                      <== NOT EXECUTED
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
              
40005d84:	80 a7 40 1c 	cmp  %i5, %i4
                                 <== NOT EXECUTED
40005d88:	18 80 00 1f 	bgu  40005e04 <IMFS_memfile_write+0x108>
      <== NOT EXECUTED
40005d8c:	b0 06 00 1d 	add  %i0, %i5, %i0
                            <== NOT EXECUTED
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );
 
40005d90:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
40005d94:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
40005d98:	7f ff fd ee 	call  40005550 <IMFS_memfile_get_block_pointer>
<== NOT EXECUTED
40005d9c:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );
                      
40005da0:	92 10 00 1b 	mov  %i3, %o1
                                 <== NOT EXECUTED
    if ( !block_ptr )
                                                
40005da4:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40005da8:	12 bf ff f2 	bne  40005d70 <IMFS_memfile_write+0x74>
       <== NOT EXECUTED
40005dac:	94 10 00 1d 	mov  %i5, %o2
                                 <== NOT EXECUTED
}
                                                                    
40005db0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005db4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );
 
40005db8:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
40005dbc:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
40005dc0:	7f ff fd e4 	call  40005550 <IMFS_memfile_get_block_pointer>
<== NOT EXECUTED
40005dc4:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
    if ( !block_ptr )
                                                
40005dc8:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40005dcc:	02 bf ff f9 	be  40005db0 <IMFS_memfile_write+0xb4>
        <== NOT EXECUTED
40005dd0:	82 27 40 11 	sub  %i5, %l1, %g1
                            <== NOT EXECUTED
40005dd4:	80 a7 00 01 	cmp  %i4, %g1
                                 <== NOT EXECUTED
40005dd8:	18 80 00 36 	bgu  40005eb0 <IMFS_memfile_write+0x1b4>
      <== NOT EXECUTED
40005ddc:	b0 10 00 1c 	mov  %i4, %i0
                                 <== NOT EXECUTED
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
           
40005de0:	d0 02 00 00 	ld  [ %o0 ], %o0
                              <== NOT EXECUTED
40005de4:	92 10 00 1b 	mov  %i3, %o1
                                 <== NOT EXECUTED
40005de8:	94 10 00 18 	mov  %i0, %o2
                                 <== NOT EXECUTED
40005dec:	90 02 00 11 	add  %o0, %l1, %o0
                            <== NOT EXECUTED
40005df0:	40 00 26 2f 	call  4000f6ac <memcpy>
                       <== NOT EXECUTED
40005df4:	b6 06 c0 18 	add  %i3, %i0, %i3
                            <== NOT EXECUTED
    block++;
                                                         
40005df8:	b4 06 a0 01 	inc  %i2
                                      <== NOT EXECUTED
    my_length -= to_copy;
                                            
40005dfc:	10 bf ff d8 	b  40005d5c <IMFS_memfile_write+0x60>
         <== NOT EXECUTED
40005e00:	b8 27 00 18 	sub  %i4, %i0, %i4
                            <== NOT EXECUTED
  if ( my_length ) {
                                                 
40005e04:	80 a7 20 00 	cmp  %i4, 0
                                   <== NOT EXECUTED
40005e08:	02 80 00 0c 	be  40005e38 <IMFS_memfile_write+0x13c>
       <== NOT EXECUTED
40005e0c:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );
 
40005e10:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
40005e14:	7f ff fd cf 	call  40005550 <IMFS_memfile_get_block_pointer>
<== NOT EXECUTED
40005e18:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
    if ( !block_ptr )
                                                
40005e1c:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40005e20:	02 bf ff e4 	be  40005db0 <IMFS_memfile_write+0xb4>
        <== NOT EXECUTED
40005e24:	94 10 00 1c 	mov  %i4, %o2
                                 <== NOT EXECUTED
    memcpy( &(*block_ptr)[ 0 ], src, my_length );
                    
40005e28:	d0 02 00 00 	ld  [ %o0 ], %o0
                              <== NOT EXECUTED
40005e2c:	92 10 00 1b 	mov  %i3, %o1
                                 <== NOT EXECUTED
40005e30:	40 00 26 1f 	call  4000f6ac <memcpy>
                       <== NOT EXECUTED
40005e34:	b0 06 00 1c 	add  %i0, %i4, %i0
                            <== NOT EXECUTED
  _Timecounter_Getbintime( &now );
                                   
40005e38:	40 00 14 05 	call  4000ae4c <_Timecounter_Getbintime>
      <== NOT EXECUTED
40005e3c:	90 07 bf f0 	add  %fp, -16, %o0
                            <== NOT EXECUTED
  return now.sec;
                                                    
40005e40:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       <== NOT EXECUTED
  jnode->stat_mtime = now;
                                           
40005e44:	c4 3c 20 28 	std  %g2, [ %l0 + 0x28 ]
                      <== NOT EXECUTED
  jnode->stat_ctime = now;
                                           
40005e48:	c4 3c 20 30 	std  %g2, [ %l0 + 0x30 ]
                      <== NOT EXECUTED
}
                                                                    
40005e4c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005e50:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    bool zero_fill = start > memfile->File.size;
                     
40005e54:	80 a6 60 00 	cmp  %i1, 0
                                   <== NOT EXECUTED
40005e58:	04 80 00 0b 	ble  40005e84 <IMFS_memfile_write+0x188>
      <== NOT EXECUTED
40005e5c:	92 10 20 01 	mov  1, %o1
                                   <== NOT EXECUTED
    status = IMFS_memfile_extend( memfile, zero_fill, last_byte );
   
40005e60:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
40005e64:	92 0a 60 01 	and  %o1, 1, %o1
                              <== NOT EXECUTED
40005e68:	7f ff fe 63 	call  400057f4 <IMFS_memfile_extend>
          <== NOT EXECUTED
40005e6c:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
    if ( status )
                                                    
40005e70:	b0 92 20 00 	orcc  %o0, 0, %i0
                             <== NOT EXECUTED
40005e74:	02 bf ff a9 	be  40005d18 <IMFS_memfile_write+0x1c>
        <== NOT EXECUTED
40005e78:	03 10 00 5a 	sethi  %hi(0x40016800), %g1
                   <== NOT EXECUTED
40005e7c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005e80:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    bool zero_fill = start > memfile->File.size;
                     
40005e84:	02 80 00 15 	be  40005ed8 <IMFS_memfile_write+0x1dc>
       <== NOT EXECUTED
40005e88:	80 a6 80 01 	cmp  %i2, %g1
                                 <== NOT EXECUTED
40005e8c:	92 10 20 00 	clr  %o1
                                      <== NOT EXECUTED
    status = IMFS_memfile_extend( memfile, zero_fill, last_byte );
   
40005e90:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
40005e94:	92 0a 60 01 	and  %o1, 1, %o1
                              <== NOT EXECUTED
40005e98:	7f ff fe 57 	call  400057f4 <IMFS_memfile_extend>
          <== NOT EXECUTED
40005e9c:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
    if ( status )
                                                    
40005ea0:	b0 92 20 00 	orcc  %o0, 0, %i0
                             <== NOT EXECUTED
40005ea4:	02 bf ff 9d 	be  40005d18 <IMFS_memfile_write+0x1c>
        <== NOT EXECUTED
40005ea8:	03 10 00 5a 	sethi  %hi(0x40016800), %g1
                   <== NOT EXECUTED
40005eac:	30 bf ff f4 	b,a   40005e7c <IMFS_memfile_write+0x180>
     <== NOT EXECUTED
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
           
40005eb0:	d0 02 00 00 	ld  [ %o0 ], %o0
                              <== NOT EXECUTED
40005eb4:	b0 10 00 01 	mov  %g1, %i0
                                 <== NOT EXECUTED
40005eb8:	92 10 00 1b 	mov  %i3, %o1
                                 <== NOT EXECUTED
40005ebc:	94 10 00 18 	mov  %i0, %o2
                                 <== NOT EXECUTED
40005ec0:	90 02 00 11 	add  %o0, %l1, %o0
                            <== NOT EXECUTED
40005ec4:	40 00 25 fa 	call  4000f6ac <memcpy>
                       <== NOT EXECUTED
40005ec8:	b6 06 c0 18 	add  %i3, %i0, %i3
                            <== NOT EXECUTED
    block++;
                                                         
40005ecc:	b4 06 a0 01 	inc  %i2
                                      <== NOT EXECUTED
    my_length -= to_copy;
                                            
40005ed0:	10 bf ff a3 	b  40005d5c <IMFS_memfile_write+0x60>
         <== NOT EXECUTED
40005ed4:	b8 27 00 18 	sub  %i4, %i0, %i4
                            <== NOT EXECUTED
    bool zero_fill = start > memfile->File.size;
                     
40005ed8:	18 bf ff e3 	bgu  40005e64 <IMFS_memfile_write+0x168>
      <== NOT EXECUTED
40005edc:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
40005ee0:	10 bf ff ed 	b  40005e94 <IMFS_memfile_write+0x198>
        <== NOT EXECUTED
40005ee4:	92 10 20 00 	clr  %o1
                                      <== NOT EXECUTED

                                                                     

40005f4c <IMFS_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
40005f4c:	9d e3 bf 80 	save  %sp, -128, %sp
                          
  int rv = 0;
                                                        
  const IMFS_fs_info_t *fs_info = parentloc->mt_entry->fs_info;
      
40005f50:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
{
                                                                    
40005f54:	f8 3f bf e8 	std  %i4, [ %fp + -24 ]
                       
  const IMFS_mknod_control *mknod_control =
                          
    get_control( fs_info->mknod_controls, mode );
                    
40005f58:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40005f5c:	c6 00 a0 50 	ld  [ %g2 + 0x50 ], %g3
                       
  if ( S_ISDIR( mode ) ) {
                                           
40005f60:	03 00 00 3c 	sethi  %hi(0xf000), %g1
                       
40005f64:	05 00 00 10 	sethi  %hi(0x4000), %g2
                       
40005f68:	82 0e c0 01 	and  %i3, %g1, %g1
                            
40005f6c:	80 a0 40 02 	cmp  %g1, %g2
                                 
40005f70:	02 80 00 1f 	be  40005fec <IMFS_mknod+0xa0>
                
40005f74:	05 00 00 2c 	sethi  %hi(0xb000), %g2
                       
  } else if ( S_ISBLK( mode ) || S_ISCHR( mode ) ) {
                 
40005f78:	09 00 00 08 	sethi  %hi(0x2000), %g4
                       
40005f7c:	84 0e c0 02 	and  %i3, %g2, %g2
                            
40005f80:	80 a0 80 04 	cmp  %g2, %g4
                                 
40005f84:	22 80 00 07 	be,a   40005fa0 <IMFS_mknod+0x54>
             
40005f88:	d2 00 e0 04 	ld  [ %g3 + 4 ], %o1
                          
  } else if ( S_ISFIFO( mode ) ) {
                                   
40005f8c:	05 00 00 04 	sethi  %hi(0x1000), %g2
                       
40005f90:	80 a0 40 02 	cmp  %g1, %g2
                                 
40005f94:	22 80 00 03 	be,a   40005fa0 <IMFS_mknod+0x54>
             
40005f98:	d2 00 e0 0c 	ld  [ %g3 + 0xc ], %o1
                        
    return controls->file;
                                           
40005f9c:	d2 00 e0 08 	ld  [ %g3 + 8 ], %o1
                          
  IMFS_jnode_t *new_node;
                                            

                                                                     
  new_node = IMFS_create_node(
                                       
40005fa0:	82 07 bf e8 	add  %fp, -24, %g1
                            
40005fa4:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       
40005fa8:	9a 10 00 1b 	mov  %i3, %o5
                                 
40005fac:	d4 02 60 10 	ld  [ %o1 + 0x10 ], %o2
                       
40005fb0:	98 10 00 1a 	mov  %i2, %o4
                                 
40005fb4:	96 10 00 19 	mov  %i1, %o3
                                 
40005fb8:	40 00 18 aa 	call  4000c260 <IMFS_create_node>
             
40005fbc:	90 10 00 18 	mov  %i0, %o0
                                 
    name,
                                                            
    namelen,
                                                         
    mode,
                                                            
    &dev
                                                             
  );
                                                                 
  if ( new_node != NULL ) {
                                          
40005fc0:	80 a2 20 00 	cmp  %o0, 0
                                   
40005fc4:	02 80 00 0c 	be  40005ff4 <IMFS_mknod+0xa8>
                <== NEVER TAKEN
40005fc8:	01 00 00 00 	nop 
                                          
    IMFS_jnode_t *parent = parentloc->node_access;
                   
40005fcc:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          
  _Timecounter_Getbintime( &now );
                                   
40005fd0:	40 00 13 9f 	call  4000ae4c <_Timecounter_Getbintime>
      
40005fd4:	90 07 bf f0 	add  %fp, -16, %o0
                            
  return now.sec;
                                                    
40005fd8:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  jnode->stat_mtime = now;
                                           
40005fdc:	c4 3f 60 28 	std  %g2, [ %i5 + 0x28 ]
                      
  jnode->stat_ctime = now;
                                           
40005fe0:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      
  int rv = 0;
                                                        
40005fe4:	81 c7 e0 08 	ret 
                                          
40005fe8:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return controls->directory;
                                      
40005fec:	10 bf ff ed 	b  40005fa0 <IMFS_mknod+0x54>
                 
40005ff0:	d2 00 c0 00 	ld  [ %g3 ], %o1
                              
  } else {
                                                           
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40005ff4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005ff8:	91 e8 3f ff 	restore  %g0, -1, %o0
                         

                                                                     

40005ffc <IMFS_mount>: #endif #include <rtems/imfs.h> int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
40005ffc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  int rv = 0;
                                                        
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;

40006000:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
40006004:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
  return S_ISDIR( node->st_mode );
                                   
40006008:	07 00 00 3c 	sethi  %hi(0xf000), %g3
                       
4000600c:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
40006010:	82 08 40 03 	and  %g1, %g3, %g1
                            

                                                                     
  if ( IMFS_is_directory( node ) ) {
                                 
40006014:	07 00 00 10 	sethi  %hi(0x4000), %g3
                       
40006018:	80 a0 40 03 	cmp  %g1, %g3
                                 
4000601c:	12 80 00 0f 	bne  40006058 <IMFS_mount+0x5c>
               <== NEVER TAKEN
40006020:	01 00 00 00 	nop 
                                          
    IMFS_directory_t *dir = (IMFS_directory_t *) node;
               

                                                                     
    if ( dir->mt_fs == NULL ) {
                                      
40006024:	c2 00 a0 4c 	ld  [ %g2 + 0x4c ], %g1
                       
40006028:	80 a0 60 00 	cmp  %g1, 0
                                   
4000602c:	12 80 00 05 	bne  40006040 <IMFS_mount+0x44>
               
40006030:	01 00 00 00 	nop 
                                          
      dir->mt_fs = mt_entry;
                                         
40006034:	f0 20 a0 4c 	st  %i0, [ %g2 + 0x4c ]
                       
40006038:	81 c7 e0 08 	ret 
                                          
4000603c:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    } else {
                                                         
      errno = EBUSY;
                                                 
40006040:	40 00 24 e0 	call  4000f3c0 <__errno>
                      <== NOT EXECUTED
40006044:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006048:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
4000604c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40006050:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006054:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
      rv = -1;
                                                       
    }
                                                                
  } else {
                                                           
    errno = ENOTDIR;
                                                 
40006058:	40 00 24 da 	call  4000f3c0 <__errno>
                      
4000605c:	b0 10 3f ff 	mov  -1, %i0
                                  
40006060:	82 10 20 14 	mov  0x14, %g1
                                
40006064:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40006068:	81 c7 e0 08 	ret 
                                          
4000606c:	81 e8 00 00 	restore 
                                      

                                                                     

40006108 <IMFS_node_destroy>: void IMFS_node_destroy( IMFS_jnode_t *node ) {
40006108:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  IMFS_assert( node->reference_count == 0 );
                         

                                                                     
  (*node->control->node_destroy)( node );
                            
4000610c:	c2 06 20 38 	ld  [ %i0 + 0x38 ], %g1
                       <== NOT EXECUTED
40006110:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        <== NOT EXECUTED
40006114:	9f c0 40 00 	call  %g1
                                     <== NOT EXECUTED
40006118:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
}
                                                                    
4000611c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006120:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40006170 <IMFS_node_destroy_default>: #include <stdlib.h> void IMFS_node_destroy_default( IMFS_jnode_t *node ) { free( node );
40006170:	82 13 c0 00 	mov  %o7, %g1
                                 <== NOT EXECUTED
40006174:	7f ff f4 d2 	call  400034bc <free>
                         <== NOT EXECUTED
40006178:	9e 10 40 00 	mov  %g1, %o7
                                 <== NOT EXECUTED

                                                                     

40006124 <IMFS_node_free>: void IMFS_node_free( const rtems_filesystem_location_info_t *loc ) {
40006124:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  IMFS_jnode_t *node = loc->node_access;
                             
40006128:	d0 06 20 08 	ld  [ %i0 + 8 ], %o0
                          

                                                                     
  --node->reference_count;
                                           
4000612c:	c2 12 20 18 	lduh  [ %o0 + 0x18 ], %g1
                     
40006130:	82 00 7f ff 	add  %g1, -1, %g1
                             
40006134:	c2 32 20 18 	sth  %g1, [ %o0 + 0x18 ]
                      

                                                                     
  if ( node->reference_count == 0 ) {
                                
40006138:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
4000613c:	80 a0 60 00 	cmp  %g1, 0
                                   
40006140:	12 80 00 06 	bne  40006158 <IMFS_node_free+0x34>
           <== ALWAYS TAKEN
40006144:	01 00 00 00 	nop 
                                          
  (*node->control->node_destroy)( node );
                            
40006148:	c2 02 20 38 	ld  [ %o0 + 0x38 ], %g1
                       
4000614c:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        
40006150:	9f c0 40 00 	call  %g1
                                     
40006154:	01 00 00 00 	nop 
                                          
    IMFS_node_destroy( node );
                                       
  }
                                                                  
}
                                                                    
40006158:	81 c7 e0 08 	ret 
                                          
4000615c:	81 e8 00 00 	restore 
                                      

                                                                     

4000c314 <IMFS_node_remove_directory>: { return dir->mt_fs != NULL; } IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) {
4000c314:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  IMFS_directory_t *dir = (IMFS_directory_t *) node;
                 

                                                                     
  if ( !rtems_chain_is_empty( &dir->Entries ) ) {
                    
4000c318:	c4 06 20 40 	ld  [ %i0 + 0x40 ], %g2
                       
  return &the_chain->Tail.Node;
                                      
4000c31c:	82 06 20 44 	add  %i0, 0x44, %g1
                           
4000c320:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000c324:	12 80 00 0c 	bne  4000c354 <IMFS_node_remove_directory+0x40>

4000c328:	01 00 00 00 	nop 
                                          
    errno = ENOTEMPTY;
                                               
    dir = NULL;
                                                      
  } else if ( IMFS_is_mount_point( dir ) ) {
                         
4000c32c:	c2 06 20 4c 	ld  [ %i0 + 0x4c ], %g1
                       
4000c330:	80 a0 60 00 	cmp  %g1, 0
                                   
4000c334:	02 80 00 0c 	be  4000c364 <IMFS_node_remove_directory+0x50>

4000c338:	01 00 00 00 	nop 
                                          
    errno = EBUSY;
                                                   
4000c33c:	40 00 0c 21 	call  4000f3c0 <__errno>
                      <== NOT EXECUTED
4000c340:	b0 10 20 00 	clr  %i0	! 0 <PROM_START>
                     <== NOT EXECUTED
4000c344:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
4000c348:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    dir = NULL;
                                                      
  }
                                                                  

                                                                     
  return &dir->Node;
                                                 
}
                                                                    
4000c34c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000c350:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    errno = ENOTEMPTY;
                                               
4000c354:	40 00 0c 1b 	call  4000f3c0 <__errno>
                      
4000c358:	b0 10 20 00 	clr  %i0
                                      
4000c35c:	82 10 20 5a 	mov  0x5a, %g1
                                
4000c360:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
4000c364:	81 c7 e0 08 	ret 
                                          
4000c368:	81 e8 00 00 	restore 
                                      

                                                                     

4000647c <IMFS_readlink>: for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
4000647c:	80 a2 a0 00 	cmp  %o2, 0
                                   
40006480:	02 80 00 16 	be  400064d8 <IMFS_readlink+0x5c>
             
40006484:	c6 02 20 08 	ld  [ %o0 + 8 ], %g3
                          
40006488:	c2 00 e0 40 	ld  [ %g3 + 0x40 ], %g1
                       
4000648c:	c4 48 40 00 	ldsb  [ %g1 ], %g2
                            
40006490:	90 10 20 00 	clr  %o0
                                      
40006494:	80 a0 a0 00 	cmp  %g2, 0
                                   
40006498:	12 80 00 07 	bne  400064b4 <IMFS_readlink+0x38>
            
4000649c:	c2 08 40 00 	ldub  [ %g1 ], %g1
                            
400064a0:	30 80 00 0c 	b,a   400064d0 <IMFS_readlink+0x54>
           <== NOT EXECUTED
400064a4:	c4 48 40 08 	ldsb  [ %g1 + %o0 ], %g2
                      
400064a8:	80 a0 a0 00 	cmp  %g2, 0
                                   
400064ac:	02 80 00 07 	be  400064c8 <IMFS_readlink+0x4c>
             
400064b0:	c2 08 40 08 	ldub  [ %g1 + %o0 ], %g1
                      
    buf[i] = sym_link->name[i];
                                      
400064b4:	c2 2a 40 08 	stb  %g1, [ %o1 + %o0 ]
                       
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
      
400064b8:	90 02 20 01 	inc  %o0
                                      
400064bc:	80 a2 80 08 	cmp  %o2, %o0
                                 
400064c0:	32 bf ff f9 	bne,a   400064a4 <IMFS_readlink+0x28>
         
400064c4:	c2 00 e0 40 	ld  [ %g3 + 0x40 ], %g1
                       
}
                                                                    
400064c8:	81 c3 e0 08 	retl 
                                         
400064cc:	01 00 00 00 	nop 
                                          
400064d0:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
400064d4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
      
400064d8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
400064dc:	90 10 20 00 	clr  %o0	! 0 <PROM_START>
                     <== NOT EXECUTED

                                                                     

400061a8 <IMFS_rename>: const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) {
400061a8:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  /*
                                                                 
   * FIXME: Due to insufficient checks we can create inaccessible nodes with

   * this operation.
                                                 
   */
                                                                

                                                                     
  node = oldloc->node_access;
                                        
400061ac:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
  new_parent = newparentloc->node_access;
                            

                                                                     
  if ( node->Parent == NULL ) {
                                      
400061b0:	c2 07 60 08 	ld  [ %i5 + 8 ], %g1
                          
400061b4:	80 a0 60 00 	cmp  %g1, 0
                                   
400061b8:	02 80 00 43 	be  400062c4 <IMFS_rename+0x11c>
              
400061bc:	f2 06 a0 08 	ld  [ %i2 + 8 ], %i1
                          
    rtems_set_errno_and_return_minus_one( EINVAL );
                  
  }
                                                                  

                                                                     
  if ( namelen >= IMFS_NAME_MAX ) {
                                  
400061c0:	80 a7 20 fe 	cmp  %i4, 0xfe
                                
400061c4:	18 80 00 34 	bgu  40006294 <IMFS_rename+0xec>
              
400061c8:	01 00 00 00 	nop 
                                          
    rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
            
  }
                                                                  

                                                                     
  control = malloc( sizeof( *control ) + namelen );
                  
400061cc:	7f ff f4 fa 	call  400035b4 <malloc>
                       
400061d0:	90 07 20 14 	add  %i4, 0x14, %o0
                           
  if ( control == NULL ) {
                                           
400061d4:	b4 92 20 00 	orcc  %o0, 0, %i2
                             
400061d8:	02 80 00 35 	be  400062ac <IMFS_rename+0x104>
              
400061dc:	92 10 00 1b 	mov  %i3, %o1
                                 
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
  }
                                                                  

                                                                     
  memcpy( control->name, name, namelen );
                            
400061e0:	b0 06 a0 14 	add  %i2, 0x14, %i0
                           
400061e4:	94 10 00 1c 	mov  %i4, %o2
                                 
400061e8:	40 00 25 31 	call  4000f6ac <memcpy>
                       
400061ec:	90 10 00 18 	mov  %i0, %o0
                                 

                                                                     
  if ( node->control->node_destroy == IMFS_renamed_destroy ) {
       
400061f0:	c2 07 60 38 	ld  [ %i5 + 0x38 ], %g1
                       
400061f4:	c4 00 60 0c 	ld  [ %g1 + 0xc ], %g2
                        
400061f8:	37 10 00 18 	sethi  %hi(0x40006000), %i3
                   
400061fc:	b6 16 e1 7c 	or  %i3, 0x17c, %i3	! 4000617c <IMFS_renamed_destroy>

40006200:	80 a0 80 1b 	cmp  %g2, %i3
                                 
40006204:	22 80 00 1f 	be,a   40006280 <IMFS_rename+0xd8>
            
40006208:	c4 00 60 10 	ld  [ %g1 + 0x10 ], %g2
                       
    IMFS_restore_replaced_control( node );
                           
  }
                                                                  

                                                                     
  control->Base = *node->control;
                                    
4000620c:	c4 00 40 00 	ld  [ %g1 ], %g2
                              
40006210:	c4 26 80 00 	st  %g2, [ %i2 ]
                              
40006214:	86 06 60 44 	add  %i1, 0x44, %g3
                           
40006218:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
4000621c:	c4 26 a0 04 	st  %g2, [ %i2 + 4 ]
                          
  _Timecounter_Getbintime( &now );
                                   
40006220:	90 07 bf f0 	add  %fp, -16, %o0
                            
40006224:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40006228:	c4 26 a0 08 	st  %g2, [ %i2 + 8 ]
                          
  control->Base.node_destroy = IMFS_renamed_destroy;
                 
  control->replaced = node->control;
                                 
4000622c:	c2 26 a0 10 	st  %g1, [ %i2 + 0x10 ]
                       
  control->Base.node_destroy = IMFS_renamed_destroy;
                 
40006230:	f6 26 a0 0c 	st  %i3, [ %i2 + 0xc ]
                        
  next           = the_node->next;
                                   
40006234:	c4 07 40 00 	ld  [ %i5 ], %g2
                              
  previous       = the_node->previous;
                               
40006238:	c2 07 60 04 	ld  [ %i5 + 4 ], %g1
                          
  node->control = &control->Base;
                                    
  node->name = control->name;
                                        
4000623c:	f0 27 60 0c 	st  %i0, [ %i5 + 0xc ]
                        

                                                                     
  IMFS_remove_from_directory( node );
                                
  IMFS_add_to_directory( new_parent, node );
                         
  IMFS_update_ctime( node );
                                         

                                                                     
  return 0;
                                                          
40006240:	b0 10 20 00 	clr  %i0
                                      
  node->control = &control->Base;
                                    
40006244:	f4 27 60 38 	st  %i2, [ %i5 + 0x38 ]
                       
  node->namelen = namelen;
                                           
40006248:	f8 37 60 10 	sth  %i4, [ %i5 + 0x10 ]
                      
  next->previous = previous;
                                         
4000624c:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  previous->next = next;
                                             
40006250:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
  old_last = tail->previous;
                                         
40006254:	c2 06 60 48 	ld  [ %i1 + 0x48 ], %g1
                       
  the_node->next = tail;
                                             
40006258:	c6 27 40 00 	st  %g3, [ %i5 ]
                              
  entry_node->Parent = dir_node;
                                     
4000625c:	f2 27 60 08 	st  %i1, [ %i5 + 8 ]
                          
  tail->previous = the_node;
                                         
40006260:	fa 26 60 48 	st  %i5, [ %i1 + 0x48 ]
                       
  old_last->next = the_node;
                                         
40006264:	fa 20 40 00 	st  %i5, [ %g1 ]
                              
  _Timecounter_Getbintime( &now );
                                   
40006268:	40 00 12 f9 	call  4000ae4c <_Timecounter_Getbintime>
      
4000626c:	c2 27 60 04 	st  %g1, [ %i5 + 4 ]
                          
  return now.sec;
                                                    
40006270:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  jnode->stat_ctime = _IMFS_get_time();
                              
40006274:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      
}
                                                                    
40006278:	81 c7 e0 08 	ret 
                                          
4000627c:	81 e8 00 00 	restore 
                                      
  node->control = control->replaced;
                                 
40006280:	c4 27 60 38 	st  %g2, [ %i5 + 0x38 ]
                       
  free( control );
                                                   
40006284:	7f ff f4 8e 	call  400034bc <free>
                         
40006288:	90 10 00 01 	mov  %g1, %o0
                                 
4000628c:	10 bf ff e0 	b  4000620c <IMFS_rename+0x64>
                
40006290:	c2 07 60 38 	ld  [ %i5 + 0x38 ], %g1
                       
    rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
            
40006294:	40 00 24 4b 	call  4000f3c0 <__errno>
                      
40006298:	b0 10 3f ff 	mov  -1, %i0
                                  
4000629c:	82 10 20 5b 	mov  0x5b, %g1
                                
400062a0:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
400062a4:	81 c7 e0 08 	ret 
                                          
400062a8:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
400062ac:	40 00 24 45 	call  4000f3c0 <__errno>
                      <== NOT EXECUTED
400062b0:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400062b4:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
400062b8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400062bc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400062c0:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( EINVAL );
                  
400062c4:	40 00 24 3f 	call  4000f3c0 <__errno>
                      <== NOT EXECUTED
400062c8:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400062cc:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
400062d0:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400062d4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400062d8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

400062dc <IMFS_rmnod>: int IMFS_rmnod( const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc ) {
400062dc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  int rv = 0;
                                                        
  IMFS_jnode_t *node = loc->node_access;
                             
400062e0:	d0 06 60 08 	ld  [ %i1 + 8 ], %o0
                          

                                                                     
  node = (*node->control->node_remove)( node );
                      
400062e4:	c2 02 20 38 	ld  [ %o0 + 0x38 ], %g1
                       
400062e8:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
400062ec:	9f c0 40 00 	call  %g1
                                     
400062f0:	01 00 00 00 	nop 
                                          
  if ( node != NULL ) {
                                              
400062f4:	80 a2 20 00 	cmp  %o0, 0
                                   
400062f8:	22 80 00 11 	be,a   4000633c <IMFS_rmnod+0x60>
             
400062fc:	b0 10 3f ff 	mov  -1, %i0
                                  
    --node->reference_count;
                                         
40006300:	c4 12 20 18 	lduh  [ %o0 + 0x18 ], %g2
                     
    --node->st_nlink;
                                                
40006304:	c2 12 20 1a 	lduh  [ %o0 + 0x1a ], %g1
                     
40006308:	82 00 7f ff 	add  %g1, -1, %g1
                             
    --node->reference_count;
                                         
4000630c:	84 00 bf ff 	add  %g2, -1, %g2
                             
    --node->st_nlink;
                                                
40006310:	c2 32 20 1a 	sth  %g1, [ %o0 + 0x1a ]
                      
    --node->reference_count;
                                         
40006314:	c4 32 20 18 	sth  %g2, [ %o0 + 0x18 ]
                      
    if ( node->Parent != NULL ) {
                                    
40006318:	c2 02 20 08 	ld  [ %o0 + 8 ], %g1
                          
4000631c:	80 a0 60 00 	cmp  %g1, 0
                                   
40006320:	02 80 00 07 	be  4000633c <IMFS_rmnod+0x60>
                
40006324:	b0 10 20 00 	clr  %i0
                                      
  node->Parent = NULL;
                                               
40006328:	c0 22 20 08 	clr  [ %o0 + 8 ]
                              
  next           = the_node->next;
                                   
4000632c:	c4 02 00 00 	ld  [ %o0 ], %g2
                              
  previous       = the_node->previous;
                               
40006330:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
  next->previous = previous;
                                         
40006334:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  previous->next = next;
                                             
40006338:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
4000633c:	81 c7 e0 08 	ret 
                                          
40006340:	81 e8 00 00 	restore 
                                      
  } else {
                                                           
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40006344:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006348:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40006418 <IMFS_symlink>: {
40006418:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    sizeof( IMFS_sym_link_t ) + strlen( target ) + 1,
                
4000641c:	40 00 26 10 	call  4000fc5c <strlen>
                       
40006420:	90 10 00 1b 	mov  %i3, %o0
                                 
  new_node = IMFS_create_node(
                                       
40006424:	f6 23 a0 5c 	st  %i3, [ %sp + 0x5c ]
                       
40006428:	94 02 20 49 	add  %o0, 0x49, %o2
                           
4000642c:	98 10 00 1a 	mov  %i2, %o4
                                 
40006430:	90 10 00 18 	mov  %i0, %o0
                                 
40006434:	1b 00 00 28 	sethi  %hi(0xa000), %o5
                       
40006438:	96 10 00 19 	mov  %i1, %o3
                                 
4000643c:	9a 13 61 ff 	or  %o5, 0x1ff, %o5
                           
40006440:	13 10 00 5d 	sethi  %hi(0x40017400), %o1
                   
  return 0;
                                                          
40006444:	b0 10 20 00 	clr  %i0
                                      
  new_node = IMFS_create_node(
                                       
40006448:	40 00 17 86 	call  4000c260 <IMFS_create_node>
             
4000644c:	92 12 62 10 	or  %o1, 0x210, %o1
                           
  if ( new_node == NULL ) {
                                          
40006450:	80 a2 20 00 	cmp  %o0, 0
                                   
40006454:	02 80 00 04 	be  40006464 <IMFS_symlink+0x4c>
              
40006458:	01 00 00 00 	nop 
                                          
}
                                                                    
4000645c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006460:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
40006464:	40 00 23 d7 	call  4000f3c0 <__errno>
                      
40006468:	b0 10 3f ff 	mov  -1, %i0
                                  
4000646c:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
40006470:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
}
                                                                    
40006474:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006478:	81 e8 00 00 	restore 
                                      

                                                                     

400064e0 <IMFS_unmount>: #endif #include <rtems/imfs.h> int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
400064e0:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  int rv = 0;
                                                        
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;

400064e4:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
400064e8:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
  return S_ISDIR( node->st_mode );
                                   
400064ec:	07 00 00 3c 	sethi  %hi(0xf000), %g3
                       
400064f0:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
400064f4:	82 08 40 03 	and  %g1, %g3, %g1
                            

                                                                     
  if ( IMFS_is_directory( node ) ) {
                                 
400064f8:	07 00 00 10 	sethi  %hi(0x4000), %g3
                       
400064fc:	80 a0 40 03 	cmp  %g1, %g3
                                 
40006500:	12 80 00 0f 	bne  4000653c <IMFS_unmount+0x5c>
             
40006504:	01 00 00 00 	nop 
                                          
    IMFS_directory_t *dir = (IMFS_directory_t *) node;
               

                                                                     
    if ( dir->mt_fs == mt_entry ) {
                                  
40006508:	c2 00 a0 4c 	ld  [ %g2 + 0x4c ], %g1
                       
4000650c:	80 a0 40 18 	cmp  %g1, %i0
                                 
40006510:	12 80 00 05 	bne  40006524 <IMFS_unmount+0x44>
             
40006514:	01 00 00 00 	nop 
                                          
      dir->mt_fs = NULL;
                                             
40006518:	c0 20 a0 4c 	clr  [ %g2 + 0x4c ]
                           
4000651c:	81 c7 e0 08 	ret 
                                          
40006520:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    } else {
                                                         
      errno = EINVAL;
                                                
40006524:	40 00 23 a7 	call  4000f3c0 <__errno>
                      <== NOT EXECUTED
40006528:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4000652c:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
40006530:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40006534:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006538:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
      rv = -1;
                                                       
    }
                                                                
  } else {
                                                           
    errno = ENOTDIR;
                                                 
4000653c:	40 00 23 a1 	call  4000f3c0 <__errno>
                      <== NOT EXECUTED
40006540:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006544:	82 10 20 14 	mov  0x14, %g1
                                <== NOT EXECUTED
40006548:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
4000654c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006550:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4000c258 <device_ftruncate>: rtems_libio_t *iop, off_t length ) { return 0; }
4000c258:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
4000c25c:	90 10 20 00 	clr  %o0
                                      <== NOT EXECUTED

                                                                     

400095c8 <rtems_io_lookup_name>: rtems_status_code rtems_io_lookup_name( const char *name, rtems_driver_name_t *device_info ) {
400095c8:	9d e3 bf 38 	save  %sp, -200, %sp
                          
  rtems_status_code sc = RTEMS_SUCCESSFUL;
                           
  struct stat st;
                                                    
  int rv = stat( name, &st );
                                        
400095cc:	90 10 00 18 	mov  %i0, %o0
                                 
{
                                                                    
400095d0:	ba 10 00 18 	mov  %i0, %i5
                                 
  int rv = stat( name, &st );
                                        
400095d4:	92 07 bf 98 	add  %fp, -104, %o1
                           
400095d8:	40 00 19 9a 	call  4000fc40 <stat>
                         
400095dc:	b0 10 20 0d 	mov  0xd, %i0
                                 

                                                                     
  if ( rv == 0 && S_ISCHR( st.st_mode ) ) {
                          
400095e0:	80 a2 20 00 	cmp  %o0, 0
                                   
400095e4:	12 80 00 11 	bne  40009628 <rtems_io_lookup_name+0x60>
     
400095e8:	05 00 00 3c 	sethi  %hi(0xf000), %g2
                       
400095ec:	c2 07 bf a8 	ld  [ %fp + -88 ], %g1
                        
400095f0:	82 08 40 02 	and  %g1, %g2, %g1
                            
400095f4:	05 00 00 08 	sethi  %hi(0x2000), %g2
                       
400095f8:	80 a0 40 02 	cmp  %g1, %g2
                                 
400095fc:	12 80 00 0b 	bne  40009628 <rtems_io_lookup_name+0x60>
     
40009600:	01 00 00 00 	nop 
                                          
    device_info->device_name = name;
                                 
40009604:	fa 26 40 00 	st  %i5, [ %i1 ]
                              
    device_info->device_name_length = strlen( name );
                
40009608:	40 00 26 0c 	call  40012e38 <strlen>
                       
4000960c:	90 10 00 1d 	mov  %i5, %o0
                                 
    device_info->major = rtems_filesystem_dev_major_t( st.st_rdev );
 
40009610:	c2 07 bf b8 	ld  [ %fp + -72 ], %g1
                        <== NOT EXECUTED
40009614:	c2 26 60 08 	st  %g1, [ %i1 + 8 ]
                          <== NOT EXECUTED
  rtems_status_code sc = RTEMS_SUCCESSFUL;
                           
40009618:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
    device_info->minor = rtems_filesystem_dev_minor_t( st.st_rdev );
 
4000961c:	c2 07 bf bc 	ld  [ %fp + -68 ], %g1
                        <== NOT EXECUTED
    device_info->device_name_length = strlen( name );
                
40009620:	d0 26 60 04 	st  %o0, [ %i1 + 4 ]
                          <== NOT EXECUTED
    device_info->minor = rtems_filesystem_dev_minor_t( st.st_rdev );
 
40009624:	c2 26 60 0c 	st  %g1, [ %i1 + 0xc ]
                        <== NOT EXECUTED
  } else {
                                                           
    sc = RTEMS_UNSATISFIED;
                                          
  }
                                                                  

                                                                     
  return sc;
                                                         
}
                                                                    
40009628:	81 c7 e0 08 	ret 
                                          
4000962c:	81 e8 00 00 	restore 
                                      

                                                                     

400079f0 <rtems_io_register_name>: rtems_status_code rtems_io_register_name( const char *device_name, rtems_device_major_number major, rtems_device_minor_number minor ) {
400079f0:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  int    status;
                                                     
  dev_t  dev;
                                                        

                                                                     
  dev = rtems_filesystem_make_dev_t( major, minor );
                 
  status = mknod( device_name, 0777 | S_IFCHR, dev );
                
400079f4:	13 00 00 08 	sethi  %hi(0x2000), %o1
                       
400079f8:	90 10 00 18 	mov  %i0, %o0
                                 
400079fc:	94 10 00 19 	mov  %i1, %o2
                                 
40007a00:	96 10 00 1a 	mov  %i2, %o3
                                 
40007a04:	7f ff f2 f5 	call  400045d8 <mknod>
                        
40007a08:	92 12 61 ff 	or  %o1, 0x1ff, %o1
                           

                                                                     
  /* this is the only error returned by the old version */
           
  if ( status )
                                                      
    return RTEMS_TOO_MANY;
                                           

                                                                     
  return RTEMS_SUCCESSFUL;
                                           
40007a0c:	80 a0 00 08 	cmp  %g0, %o0
                                 <== NOT EXECUTED
40007a10:	b0 60 20 00 	subx  %g0, 0, %i0
                             <== NOT EXECUTED
}
                                                                    
40007a14:	b0 0e 20 05 	and  %i0, 5, %i0
                              <== NOT EXECUTED
40007a18:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40007a1c:	81 e8 00 00 	restore 
                                      

                                                                     

40004be8 <rtems_tarfs_load>: int rtems_tarfs_load( const char *mountpoint, uint8_t *tar_image, size_t tar_size ) {
40004be8:	9d e3 bd e8 	save  %sp, -536, %sp
                          
  char                                  buf[ 156 + UNTAR_FILE_NAME_SIZE ];

  size_t                                len;
                         
  Untar_HeaderContext                   ctx;
                         
  unsigned long                         ptr;
                         

                                                                     
  len = strlen( mountpoint );
                                        
40004bec:	40 00 70 99 	call  40020e50 <strlen>
                       
40004bf0:	90 10 00 18 	mov  %i0, %o0
                                 
  if ( len >= sizeof( buf ) - UNTAR_FILE_NAME_SIZE - 2 ) {
           
40004bf4:	80 a2 20 99 	cmp  %o0, 0x99
                                
40004bf8:	18 80 00 28 	bgu  40004c98 <rtems_tarfs_load+0xb0>
         
40004bfc:	ba 10 00 08 	mov  %o0, %i5
                                 
    return -1;
                                                       
  }
                                                                  

                                                                     
  eval_flags = RTEMS_FS_FOLLOW_LINK;
                                 
  loc = rtems_filesystem_eval_path_start( &eval_ctx, mountpoint, eval_flags );

40004c00:	94 10 20 18 	mov  0x18, %o2
                                
40004c04:	92 10 00 18 	mov  %i0, %o1
                                 
40004c08:	7f ff fb 3c 	call  400038f8 <rtems_filesystem_eval_path_start>

40004c0c:	90 07 be 48 	add  %fp, -440, %o0
                           
  return loc->mt_entry->ops->clonenod_h == IMFS_node_clone;
          
40004c10:	c2 02 20 14 	ld  [ %o0 + 0x14 ], %g1
                       
40004c14:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        
40004c18:	f8 00 60 24 	ld  [ %g1 + 0x24 ], %i4
                       
  is_imfs = IMFS_is_imfs_instance( loc );
                            
  rtems_filesystem_eval_path_cleanup( &eval_ctx );
                   
40004c1c:	7f ff fb 81 	call  40003a20 <rtems_filesystem_eval_path_cleanup>

40004c20:	90 07 be 48 	add  %fp, -440, %o0
                           
  if ( !is_imfs ) {
                                                  
40004c24:	03 10 00 16 	sethi  %hi(0x40005800), %g1
                   
40004c28:	82 10 61 04 	or  %g1, 0x104, %g1	! 40005904 <IMFS_node_clone>

40004c2c:	80 a7 00 01 	cmp  %i4, %g1
                                 
40004c30:	12 80 00 1a 	bne  40004c98 <rtems_tarfs_load+0xb0>
         
40004c34:	94 10 00 1d 	mov  %i5, %o2
                                 
    return -1;
                                                       
  }
                                                                  

                                                                     
  ctx.printer = NULL;
                                                
40004c38:	c0 27 be fc 	clr  [ %fp + -260 ]
                           
  ctx.file_path = memcpy( buf, mountpoint, len );
                    
40004c3c:	92 10 00 18 	mov  %i0, %o1
                                 
40004c40:	40 00 66 c3 	call  4001e74c <memcpy>
                       
40004c44:	90 07 bf 00 	add  %fp, -256, %o0
                           

                                                                     
  if ( len > 0 && ctx.file_path[ len - 1 ] != '/') {
                 
40004c48:	80 a7 60 00 	cmp  %i5, 0
                                   
40004c4c:	12 80 00 15 	bne  40004ca0 <rtems_tarfs_load+0xb8>
         
40004c50:	d0 27 be 80 	st  %o0, [ %fp + -384 ]
                       
    ctx.file_path[ len ] = '/';
                                      
    ctx.file_name = ctx.file_path + len + 1;
                         
40004c54:	d0 27 be 84 	st  %o0, [ %fp + -380 ]
                       
40004c58:	10 80 00 0a 	b  40004c80 <rtems_tarfs_load+0x98>
           
40004c5c:	ba 10 20 00 	clr  %i5
                                      
  ptr = 0;
                                                           

                                                                     
  while ( ptr + 512 <= tar_size ) {
                                  
    int retval;
                                                      

                                                                     
    retval = Untar_ProcessHeader( &ctx, (const char *) &tar_image[ ptr ] );

40004c60:	40 00 33 f8 	call  40011c40 <Untar_ProcessHeader>
          
40004c64:	90 07 be 80 	add  %fp, -384, %o0
                           
    if ( retval != UNTAR_SUCCESSFUL ) {
                              
40004c68:	80 a2 20 00 	cmp  %o0, 0
                                   
40004c6c:	12 80 00 0b 	bne  40004c98 <rtems_tarfs_load+0xb0>
         
40004c70:	c2 0f be f8 	ldub  [ %fp + -264 ], %g1
                     
      return -1;
                                                     
    }
                                                                

                                                                     
    ptr += 512;
                                                      

                                                                     
    if ( ctx.linkflag == REGTYPE ) {
                                 
40004c74:	80 a0 60 30 	cmp  %g1, 0x30
                                
40004c78:	02 80 00 13 	be  40004cc4 <rtems_tarfs_load+0xdc>
          
40004c7c:	ba 10 00 1c 	mov  %i4, %i5
                                 
  while ( ptr + 512 <= tar_size ) {
                                  
40004c80:	b8 07 62 00 	add  %i5, 0x200, %i4
                          
40004c84:	80 a7 00 1a 	cmp  %i4, %i2
                                 
40004c88:	08 bf ff f6 	bleu  40004c60 <rtems_tarfs_load+0x78>
        
40004c8c:	92 06 40 1d 	add  %i1, %i5, %o1
                            
      ptr += 512 * ctx.nblocks;
                                      
    }
                                                                
  }
                                                                  

                                                                     
  return 0;
                                                          
}
                                                                    
40004c90:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40004c94:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return -1;
                                                       
40004c98:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40004c9c:	91 e8 3f ff 	restore  %g0, -1, %o0
                         
40004ca0:	82 02 00 1d 	add  %o0, %i5, %g1
                            
  if ( len > 0 && ctx.file_path[ len - 1 ] != '/') {
                 
40004ca4:	c4 48 7f ff 	ldsb  [ %g1 + -1 ], %g2
                       
40004ca8:	80 a0 a0 2f 	cmp  %g2, 0x2f
                                
40004cac:	02 80 00 11 	be  40004cf0 <rtems_tarfs_load+0x108>
         
40004cb0:	84 10 20 2f 	mov  0x2f, %g2
                                
    ctx.file_name = ctx.file_path + len + 1;
                         
40004cb4:	82 07 60 01 	add  %i5, 1, %g1
                              <== NOT EXECUTED
    ctx.file_path[ len ] = '/';
                                      
40004cb8:	c4 2a 00 1d 	stb  %g2, [ %o0 + %i5 ]
                       <== NOT EXECUTED
    ctx.file_name = ctx.file_path + len + 1;
                         
40004cbc:	10 bf ff e6 	b  40004c54 <rtems_tarfs_load+0x6c>
           <== NOT EXECUTED
40004cc0:	90 02 00 01 	add  %o0, %g1, %o0
                            <== NOT EXECUTED
      retval = IMFS_make_linearfile(
                                 
40004cc4:	d6 07 be f0 	ld  [ %fp + -272 ], %o3
                       
40004cc8:	d2 07 be ec 	ld  [ %fp + -276 ], %o1
                       
40004ccc:	d0 07 be 80 	ld  [ %fp + -384 ], %o0
                       
40004cd0:	40 00 00 0a 	call  40004cf8 <IMFS_make_linearfile>
         
40004cd4:	94 06 40 1c 	add  %i1, %i4, %o2
                            
      if ( retval != 0 ) {
                                           
40004cd8:	80 a2 20 00 	cmp  %o0, 0
                                   
40004cdc:	12 bf ff ef 	bne  40004c98 <rtems_tarfs_load+0xb0>
         
40004ce0:	c2 07 be f4 	ld  [ %fp + -268 ], %g1
                       
      ptr += 512 * ctx.nblocks;
                                      
40004ce4:	83 28 60 09 	sll  %g1, 9, %g1
                              
40004ce8:	10 bf ff e6 	b  40004c80 <rtems_tarfs_load+0x98>
           
40004cec:	ba 00 40 1c 	add  %g1, %i4, %i5
                            
40004cf0:	10 bf ff d9 	b  40004c54 <rtems_tarfs_load+0x6c>
           
40004cf4:	90 10 00 01 	mov  %g1, %o0