RTEMS-5
Annotated Report
Fri Aug 10 13:45:31 2018

40023810 <IMFS_LIMITS_AND_OPTIONS>:
                                  
40023810:	00 00 00 05 00 00 00 06 00 00 00 07 00 00 00 ff     ................

40023820:	00 00 00 ff 00 00 00 02 00 00 00 01 00 00 00 02     ................

40023830:	00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 06     ................

40023840:	28 64 65 66 61 75 6c 74 29 00 00 00                 (default)...


                                                                     

4000c384 <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 ) {
4000c384:	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;
                        
4000c388:	c2 06 20 24 	ld  [ %i0 + 0x24 ], %g1
                       
4000c38c:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
4000c390:	f6 00 40 00 	ld  [ %g1 ], %i3
                              
4000c394:	f8 00 60 04 	ld  [ %g1 + 4 ], %i4
                          
4000c398:	c8 00 60 0c 	ld  [ %g1 + 0xc ], %g4
                        
4000c39c:	c6 00 60 10 	ld  [ %g1 + 0x10 ], %g3
                       
4000c3a0:	c2 00 60 14 	ld  [ %g1 + 0x14 ], %g1
                       
   jnode = (IMFS_jnode_t *)loc.node_access;
                          
4000c3a4:	ba 10 00 02 	mov  %g2, %i5
                                 
   loc = temp_mt_entry->mt_fs_root->location;
                        
4000c3a8:	c4 27 bf f0 	st  %g2, [ %fp + -16 ]
                        
  return S_ISDIR( node->st_mode );
                                   
4000c3ac:	35 00 00 3c 	sethi  %hi(0xf000), %i2
                       
4000c3b0:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
4000c3b4:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
  loc->handlers = node->control->handlers;
                           
4000c3b8:	c4 07 60 38 	ld  [ %i5 + 0x38 ], %g2
                       
4000c3bc:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
4000c3c0:	c6 27 bf f8 	st  %g3, [ %fp + -8 ]
                         
  return S_ISDIR( node->st_mode );
                                   
4000c3c4:	82 08 40 1a 	and  %g1, %i2, %g1
                            
4000c3c8:	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 ) ) {

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

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

4000c3e4:	12 80 00 14 	bne  4000c434 <IMFS_fsunmount+0xb0>
           <== NEVER TAKEN
4000c3e8:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
  return _Chain_Immutable_head( the_chain )->next;
                   
4000c3ec:	c4 07 60 40 	ld  [ %i5 + 0x40 ], %g2
                       
  return &the_chain->Tail.Node;
                                      
4000c3f0:	82 07 60 44 	add  %i5, 0x44, %g1
                           
4000c3f4:	80 a0 80 01 	cmp  %g2, %g1
                                 
4000c3f8:	02 80 00 10 	be  4000c438 <IMFS_fsunmount+0xb4>
            
4000c3fc:	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);
                                          
4000c400:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000c404:	02 80 00 23 	be  4000c490 <IMFS_fsunmount+0x10c>
           <== NEVER TAKEN
4000c408:	b8 10 00 02 	mov  %g2, %i4
                                 
4000c40c:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
4000c410:	ba 10 00 1c 	mov  %i4, %i5
                                 
  loc->handlers = node->control->handlers;
                           
4000c414:	c4 07 60 38 	ld  [ %i5 + 0x38 ], %g2
                       
4000c418:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
     next = jnode->Parent;
                                           
4000c41c:	f8 07 60 08 	ld  [ %i5 + 8 ], %i4
                          
     loc.node_access = (void *)jnode;
                                
4000c420:	fa 27 bf f0 	st  %i5, [ %fp + -16 ]
                        
  return S_ISDIR( node->st_mode );
                                   
4000c424:	82 08 40 1a 	and  %g1, %i2, %g1
                            
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {

4000c428:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4000c42c:	02 bf ff f0 	be  4000c3ec <IMFS_fsunmount+0x68>
            
4000c430:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
        result = IMFS_rmnod( NULL, &loc );
                           
4000c434:	92 07 bf e8 	add  %fp, -24, %o1
                            
4000c438:	7f ff df 23 	call  400040c4 <IMFS_rmnod>
                   
4000c43c:	90 10 20 00 	clr  %o0
                                      
        if ( result != 0 )
                                           
4000c440:	80 a2 20 00 	cmp  %o0, 0
                                   
4000c444:	12 80 00 15 	bne  4000c498 <IMFS_fsunmount+0x114>
          <== NEVER TAKEN
4000c448:	11 37 ab 6f 	sethi  %hi(0xdeadbc00), %o0
                   
        IMFS_node_destroy( jnode );
                                  
4000c44c:	7f ff de bb 	call  40003f38 <IMFS_node_destroy>
            
4000c450:	90 10 00 1d 	mov  %i5, %o0
                                 
     if ( jnode != NULL ) {
                                          
4000c454:	80 a7 20 00 	cmp  %i4, 0
                                   
4000c458:	02 80 00 0e 	be  4000c490 <IMFS_fsunmount+0x10c>
           
4000c45c:	01 00 00 00 	nop 
                                          
4000c460:	c2 07 20 14 	ld  [ %i4 + 0x14 ], %g1
                       
4000c464:	84 08 40 1a 	and  %g1, %i2, %g2
                            
       if ( IMFS_is_directory( jnode ) ) {
                           
4000c468:	80 a0 80 1b 	cmp  %g2, %i3
                                 
4000c46c:	32 bf ff ea 	bne,a   4000c414 <IMFS_fsunmount+0x90>
        <== NEVER TAKEN
4000c470:	ba 10 00 1c 	mov  %i4, %i5
                                 <== NOT EXECUTED
4000c474:	c4 07 20 40 	ld  [ %i4 + 0x40 ], %g2
                       
         if ( jnode_has_children( jnode ) )
                          
4000c478:	86 07 20 44 	add  %i4, 0x44, %g3
                           
4000c47c:	80 a0 80 03 	cmp  %g2, %g3
                                 
4000c480:	12 bf ff e1 	bne  4000c404 <IMFS_fsunmount+0x80>
           
4000c484:	80 a0 a0 00 	cmp  %g2, 0
                                   
   } while (jnode != NULL);
                                          
4000c488:	10 bf ff e3 	b  4000c414 <IMFS_fsunmount+0x90>
             
4000c48c:	ba 10 00 1c 	mov  %i4, %i5
                                 
}
                                                                    
4000c490:	81 c7 e0 08 	ret 
                                          
4000c494:	81 e8 00 00 	restore 
                                      
	  rtems_fatal_error_occurred( 0xdeadbeef );
                         
4000c498:	7f ff e9 59 	call  400069fc <rtems_fatal_error_occurred>
   <== NOT EXECUTED
4000c49c:	90 12 22 ef 	or  %o0, 0x2ef, %o0
                           <== NOT EXECUTED
4000c4a0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40002eec <IMFS_initialize>: int IMFS_initialize( rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ) {
40002eec:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  IMFS_fs_info_t *fs_info = calloc( 1, sizeof( *fs_info ) );
         
40002ef0:	92 10 20 58 	mov  0x58, %o1
                                
40002ef4:	40 00 05 1f 	call  40004370 <calloc>
                       
40002ef8:	90 10 20 01 	mov  1, %o0
                                   
  IMFS_mount_data mount_data = {
                                     
40002efc:	03 10 00 40 	sethi  %hi(0x40010000), %g1
                   
40002f00:	82 10 60 5c 	or  %g1, 0x5c, %g1	! 4001005c <IMFS_ops>
      
40002f04:	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 ) {
                                           
40002f08:	80 a2 20 00 	cmp  %o0, 0
                                   
  IMFS_mount_data mount_data = {
                                     
40002f0c:	c2 27 bf f8 	st  %g1, [ %fp + -8 ]
                         
40002f10:	03 10 00 40 	sethi  %hi(0x40010000), %g1
                   
40002f14:	82 10 60 4c 	or  %g1, 0x4c, %g1	! 4001004c <IMFS_default_mknod_controls>

  if ( fs_info == NULL ) {
                                           
40002f18:	02 80 00 07 	be  40002f34 <IMFS_initialize+0x48>
           <== NEVER TAKEN
40002f1c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
  }
                                                                  

                                                                     
  return IMFS_initialize_support( mt_entry, &mount_data );
           
40002f20:	92 07 bf f4 	add  %fp, -12, %o1
                            
40002f24:	40 00 00 11 	call  40002f68 <IMFS_initialize_support>
      
40002f28:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
40002f2c:	81 c7 e0 08 	ret 
                                          
40002f30:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
40002f34:	40 00 2b e6 	call  4000decc <__errno>
                      <== NOT EXECUTED
40002f38:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40002f3c:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
40002f40:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40002f44:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40002f48:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40006a98 <IMFS_initialize_node>: const char *name, size_t namelen, mode_t mode, void *arg ) {
40006a98:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  struct timeval tv;
                                                 

                                                                     
  if ( namelen > IMFS_NAME_MAX ) {
                                   
40006a9c:	80 a6 e0 ff 	cmp  %i3, 0xff
                                
40006aa0:	18 80 00 19 	bgu  40006b04 <IMFS_initialize_node+0x6c>
     <== NEVER TAKEN
40006aa4:	92 10 20 00 	clr  %o1
                                      
    errno = ENAMETOOLONG;
                                            

                                                                     
    return NULL;
                                                     
  }
                                                                  

                                                                     
  gettimeofday( &tv, 0 );
                                            
40006aa8:	40 00 02 23 	call  40007334 <gettimeofday>
                 
40006aac:	90 07 bf f0 	add  %fp, -16, %o0
                            
  /*
                                                                 
   *  Fill in the basic information
                                  
   */
                                                                
  node->name = name;
                                                 
  node->namelen = namelen;
                                           
  node->reference_count = 1;
                                         
40006ab0:	03 00 00 40 	sethi  %hi(0x10000), %g1
                      
  node->name = name;
                                                 
40006ab4:	f4 26 20 0c 	st  %i2, [ %i0 + 0xc ]
                        
  node->reference_count = 1;
                                         
40006ab8:	82 10 60 01 	or  %g1, 1, %g1
                               
  node->namelen = namelen;
                                           
40006abc:	f6 36 20 10 	sth  %i3, [ %i0 + 0x10 ]
                      
  node->reference_count = 1;
                                         
40006ac0:	c2 26 20 18 	st  %g1, [ %i0 + 0x18 ]
                       
  node->st_nlink = 1;
                                                
  node->control = node_control;
                                      
40006ac4:	f2 26 20 38 	st  %i1, [ %i0 + 0x38 ]
                       

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

   */
                                                                
  node->st_mode = mode;
                                              
  node->st_uid = geteuid();
                                          
40006ac8:	40 00 02 15 	call  4000731c <geteuid>
                      
40006acc:	f8 26 20 14 	st  %i4, [ %i0 + 0x14 ]
                       
  node->st_gid = getegid();
                                          
40006ad0:	40 00 02 0d 	call  40007304 <getegid>
                      
40006ad4:	d0 36 20 1c 	sth  %o0, [ %i0 + 0x1c ]
                      

                                                                     
  /*
                                                                 
   *  Now set all the times.
                                         
   */
                                                                

                                                                     
  node->stat_atime  = (time_t) tv.tv_sec;
                            
40006ad8:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  node->st_gid = getegid();
                                          
40006adc:	d0 36 20 1e 	sth  %o0, [ %i0 + 0x1e ]
                      
  node->stat_mtime  = (time_t) tv.tv_sec;
                            
  node->stat_ctime  = (time_t) tv.tv_sec;
                            

                                                                     
  return (*node_control->node_initialize)( node, arg );
              
40006ae0:	92 10 00 1d 	mov  %i5, %o1
                                 
  node->stat_atime  = (time_t) tv.tv_sec;
                            
40006ae4:	c4 3e 20 20 	std  %g2, [ %i0 + 0x20 ]
                      
  node->stat_mtime  = (time_t) tv.tv_sec;
                            
40006ae8:	c4 3e 20 28 	std  %g2, [ %i0 + 0x28 ]
                      
  node->stat_ctime  = (time_t) tv.tv_sec;
                            
40006aec:	c4 3e 20 30 	std  %g2, [ %i0 + 0x30 ]
                      
  return (*node_control->node_initialize)( node, arg );
              
40006af0:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
40006af4:	9f c0 40 00 	call  %g1
                                     
40006af8:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
40006afc:	81 c7 e0 08 	ret 
                                          
40006b00:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    errno = ENAMETOOLONG;
                                            
40006b04:	40 00 38 f1 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006b08:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
40006b0c:	82 10 20 5b 	mov  0x5b, %g1
                                <== NOT EXECUTED
40006b10:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    return NULL;
                                                     
40006b14:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006b18:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40005b64 <IMFS_initialize_support>: {
40005b64:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  IMFS_fs_info_t *fs_info = mount_data->fs_info;
                     
40005b68:	fa 06 40 00 	ld  [ %i1 ], %i5
                              
  fs_info->mknod_controls = mount_data->mknod_controls;
              
40005b6c:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
40005b70:	c2 27 60 50 	st  %g1, [ %i5 + 0x50 ]
                       
  root_node = IMFS_initialize_node(
                                  
40005b74:	9a 10 20 00 	clr  %o5
                                      
40005b78:	d2 00 40 00 	ld  [ %g1 ], %o1
                              
40005b7c:	96 10 20 00 	clr  %o3
                                      
40005b80:	19 00 00 10 	sethi  %hi(0x4000), %o4
                       
40005b84:	90 10 00 1d 	mov  %i5, %o0
                                 
40005b88:	98 13 21 ed 	or  %o4, 0x1ed, %o4
                           
40005b8c:	15 10 00 8b 	sethi  %hi(0x40022c00), %o2
                   
40005b90:	40 00 03 c2 	call  40006a98 <IMFS_initialize_node>
         
40005b94:	94 12 a2 e0 	or  %o2, 0x2e0, %o2	! 40022ee0 <rtems_test_name+0x108>

  mt_entry->ops = mount_data->ops;
                                   
40005b98:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
  loc->handlers = node->control->handlers;
                           
40005b9c:	c4 02 20 38 	ld  [ %o0 + 0x38 ], %g2
                       
40005ba0:	c2 26 20 0c 	st  %g1, [ %i0 + 0xc ]
                        
  mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
  
40005ba4:	03 10 00 8e 	sethi  %hi(0x40023800), %g1
                   
40005ba8:	82 10 60 10 	or  %g1, 0x10, %g1	! 40023810 <IMFS_LIMITS_AND_OPTIONS>

  mt_entry->fs_info = fs_info;
                                       
40005bac:	fa 26 20 08 	st  %i5, [ %i0 + 8 ]
                          
  mt_entry->pathconf_limits_and_options = &IMFS_LIMITS_AND_OPTIONS;
  
40005bb0:	c2 26 20 2c 	st  %g1, [ %i0 + 0x2c ]
                       
40005bb4:	c4 00 80 00 	ld  [ %g2 ], %g2
                              
  mt_entry->mt_fs_root->location.node_access = root_node;
            
40005bb8:	c2 06 20 24 	ld  [ %i0 + 0x24 ], %g1
                       
40005bbc:	d0 20 60 08 	st  %o0, [ %g1 + 8 ]
                          
40005bc0:	c4 20 60 10 	st  %g2, [ %g1 + 0x10 ]
                       
  IMFS_determine_bytes_per_block(
                                    
40005bc4:	03 10 00 94 	sethi  %hi(0x40025000), %g1
                   
40005bc8:	c6 00 60 80 	ld  [ %g1 + 0x80 ], %g3	! 40025080 <imfs_rq_memfile_bytes_per_block>

    if (bit_mask == requested_bytes_per_block) {
                     
40005bcc:	80 a0 e0 10 	cmp  %g3, 0x10
                                
40005bd0:	02 80 00 0e 	be  40005c08 <IMFS_initialize_support+0xa4>
   <== NEVER TAKEN
40005bd4:	80 a0 e0 0f 	cmp  %g3, 0xf
                                 
    if(bit_mask > requested_bytes_per_block)
                         
40005bd8:	04 80 00 0b 	ble  40005c04 <IMFS_initialize_support+0xa0>
  <== NEVER TAKEN
40005bdc:	82 10 20 20 	mov  0x20, %g1
                                
40005be0:	84 10 20 05 	mov  5, %g2
                                   
    if (bit_mask == requested_bytes_per_block) {
                     
40005be4:	80 a0 c0 01 	cmp  %g3, %g1
                                 
40005be8:	22 80 00 09 	be,a   40005c0c <IMFS_initialize_support+0xa8>

40005bec:	03 10 00 9b 	sethi  %hi(0x40026c00), %g1
                   
    if(bit_mask > requested_bytes_per_block)
                         
40005bf0:	26 80 00 06 	bl,a   40005c08 <IMFS_initialize_support+0xa4>
<== NEVER TAKEN
40005bf4:	86 10 20 80 	mov  0x80, %g3
                                <== NOT EXECUTED
  for (bit_mask = 16; !is_valid && (bit_mask <= 512); bit_mask <<= 1) {

40005bf8:	84 80 bf ff 	addcc  %g2, -1, %g2
                           
40005bfc:	12 bf ff fa 	bne  40005be4 <IMFS_initialize_support+0x80>
  <== ALWAYS TAKEN
40005c00:	83 28 60 01 	sll  %g1, 1, %g1
                              
			   : default_bytes_per_block);
                                    
40005c04:	86 10 20 80 	mov  0x80, %g3
                                <== NOT EXECUTED
  *dest_bytes_per_block = ((is_valid)
                                
40005c08:	03 10 00 9b 	sethi  %hi(0x40026c00), %g1
                   <== NOT EXECUTED
40005c0c:	c6 20 60 1c 	st  %g3, [ %g1 + 0x1c ]	! 40026c1c <imfs_memfile_bytes_per_block>

}
                                                                    
40005c10:	81 c7 e0 08 	ret 
                                          
40005c14:	91 e8 20 00 	restore  %g0, 0, %o0
                          

                                                                     

40005d04 <IMFS_link>: {
40005d04:	9d e3 bf 88 	save  %sp, -120, %sp
                          
  target = targetloc->node_access;
                                   
40005d08:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
  if ( target->st_nlink >= LINK_MAX )
                                
40005d0c:	c2 17 60 1a 	lduh  [ %i5 + 0x1a ], %g1
                     
40005d10:	80 a0 60 07 	cmp  %g1, 7
                                   
40005d14:	18 80 00 19 	bgu  40005d78 <IMFS_link+0x74>
                <== NEVER TAKEN
40005d18:	9a 10 21 ff 	mov  0x1ff, %o5
                               
  new_node = IMFS_create_node(
                                       
40005d1c:	fa 23 a0 5c 	st  %i5, [ %sp + 0x5c ]
                       
40005d20:	98 10 00 1b 	mov  %i3, %o4
                                 
40005d24:	96 10 00 1a 	mov  %i2, %o3
                                 
40005d28:	94 10 20 48 	mov  0x48, %o2
                                
40005d2c:	90 10 00 18 	mov  %i0, %o0
                                 
40005d30:	13 10 00 8c 	sethi  %hi(0x40023000), %o1
                   
40005d34:	40 00 34 d7 	call  40013090 <IMFS_create_node>
             
40005d38:	92 12 62 44 	or  %o1, 0x244, %o1	! 40023244 <IMFS_node_control_hard_link>

  if ( !new_node )
                                                   
40005d3c:	80 a2 20 00 	cmp  %o0, 0
                                   
40005d40:	02 80 00 14 	be  40005d90 <IMFS_link+0x8c>
                 <== NEVER TAKEN
40005d44:	90 07 bf f0 	add  %fp, -16, %o0
                            
  target->reference_count++;
                                         
40005d48:	c4 17 60 18 	lduh  [ %i5 + 0x18 ], %g2
                     
  target->st_nlink++;
                                                
40005d4c:	c2 17 60 1a 	lduh  [ %i5 + 0x1a ], %g1
                     
  target->reference_count++;
                                         
40005d50:	84 00 a0 01 	inc  %g2
                                      
  target->st_nlink++;
                                                
40005d54:	82 00 60 01 	inc  %g1
                                      
  target->reference_count++;
                                         
40005d58:	c4 37 60 18 	sth  %g2, [ %i5 + 0x18 ]
                      
  target->st_nlink++;
                                                
40005d5c:	c2 37 60 1a 	sth  %g1, [ %i5 + 0x1a ]
                      
  _Timecounter_Getbintime( &now );
                                   
40005d60:	40 00 16 80 	call  4000b760 <_Timecounter_Getbintime>
      
40005d64:	b0 10 20 00 	clr  %i0
                                      
  return now.sec;
                                                    
40005d68:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  jnode->stat_ctime = _IMFS_get_time();
                              
40005d6c:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      
}
                                                                    
40005d70:	81 c7 e0 08 	ret 
                                          
40005d74:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( EMLINK );
                  
40005d78:	40 00 3c 54 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40005d7c:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40005d80:	82 10 20 1f 	mov  0x1f, %g1
                                <== NOT EXECUTED
40005d84:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40005d88:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005d8c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
40005d90:	40 00 3c 4e 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40005d94:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40005d98:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
40005d9c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40005da0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40005da4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40005db0 <IMFS_make_generic_node>: const char *path, mode_t mode, const IMFS_node_control *node_control, void *context ) {
40005db0:	9d e3 bf 50 	save  %sp, -176, %sp
                          
  int rv = 0;
                                                        

                                                                     
  mode &= ~rtems_filesystem_umask;
                                   
40005db4:	40 00 08 de 	call  4000812c <rtems_current_user_env_get>
   
40005db8:	01 00 00 00 	nop 
                                          
40005dbc:	da 02 20 08 	ld  [ %o0 + 8 ], %o5
                          
40005dc0:	b2 2e 40 0d 	andn  %i1, %o5, %i1
                           

                                                                     
  switch (mode & S_IFMT) {
                                           
40005dc4:	03 00 00 3c 	sethi  %hi(0xf000), %g1
                       
40005dc8:	05 00 00 18 	sethi  %hi(0x6000), %g2
                       
40005dcc:	82 0e 40 01 	and  %i1, %g1, %g1
                            
40005dd0:	80 a0 40 02 	cmp  %g1, %g2
                                 
40005dd4:	02 80 00 0c 	be  40005e04 <IMFS_make_generic_node+0x54>
    
40005dd8:	94 10 20 78 	mov  0x78, %o2
                                
40005ddc:	08 80 00 1d 	bleu  40005e50 <IMFS_make_generic_node+0xa0>
  <== ALWAYS TAKEN
40005de0:	05 00 00 04 	sethi  %hi(0x1000), %g2
                       
40005de4:	05 00 00 20 	sethi  %hi(0x8000), %g2
                       <== NOT EXECUTED
40005de8:	80 a0 40 02 	cmp  %g1, %g2
                                 <== NOT EXECUTED
40005dec:	02 80 00 06 	be  40005e04 <IMFS_make_generic_node+0x54>
    <== NOT EXECUTED
40005df0:	05 00 00 30 	sethi  %hi(0xc000), %g2
                       <== NOT EXECUTED
40005df4:	80 a0 40 02 	cmp  %g1, %g2
                                 <== NOT EXECUTED
40005df8:	12 80 00 1c 	bne  40005e68 <IMFS_make_generic_node+0xb8>
   <== NOT EXECUTED
40005dfc:	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 =
             
40005e00:	94 10 20 78 	mov  0x78, %o2	! 78 <_TLS_Alignment+0x77>
     <== NOT EXECUTED
40005e04:	92 10 00 18 	mov  %i0, %o1
                                 
40005e08:	40 00 0b 5f 	call  40008b84 <rtems_filesystem_eval_path_start>

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

                                                                     
    if ( IMFS_is_imfs_instance( currentloc ) ) {
                     
40005e18:	c4 00 60 24 	ld  [ %g1 + 0x24 ], %g2
                       
40005e1c:	03 10 00 1a 	sethi  %hi(0x40006800), %g1
                   
40005e20:	82 10 63 1c 	or  %g1, 0x31c, %g1	! 40006b1c <IMFS_node_clone>

40005e24:	80 a0 80 01 	cmp  %g2, %g1
                                 
40005e28:	02 80 00 16 	be  40005e80 <IMFS_make_generic_node+0xd0>
    
40005e2c:	ba 10 00 08 	mov  %o0, %i5
                                 
        IMFS_mtime_ctime_update( parent );
                           
      } else {
                                                       
        rv = -1;
                                                     
      }
                                                              
    } else {
                                                         
      rtems_filesystem_eval_path_error( &ctx, ENOTSUP );
             
40005e30:	92 10 20 86 	mov  0x86, %o1
                                
40005e34:	90 07 bf c8 	add  %fp, -56, %o0
                            
40005e38:	40 00 0a 98 	call  40008898 <rtems_filesystem_eval_path_error>

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

                                                                     
    rtems_filesystem_eval_path_cleanup( &ctx );
                      
40005e40:	40 00 0b 9b 	call  40008cac <rtems_filesystem_eval_path_cleanup>

40005e44:	90 07 bf c8 	add  %fp, -56, %o0
                            
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40005e48:	81 c7 e0 08 	ret 
                                          
40005e4c:	81 e8 00 00 	restore 
                                      
  switch (mode & S_IFMT) {
                                           
40005e50:	80 a0 40 02 	cmp  %g1, %g2
                                 
40005e54:	02 bf ff eb 	be  40005e00 <IMFS_make_generic_node+0x50>
    <== NEVER TAKEN
40005e58:	05 00 00 08 	sethi  %hi(0x2000), %g2
                       
40005e5c:	80 a0 40 02 	cmp  %g1, %g2
                                 
40005e60:	02 bf ff e9 	be  40005e04 <IMFS_make_generic_node+0x54>
    
40005e64:	94 10 20 78 	mov  0x78, %o2
                                
      errno = EINVAL;
                                                
40005e68:	40 00 3c 18 	call  40014ec8 <__errno>
                      
40005e6c:	b0 10 3f ff 	mov  -1, %i0
                                  
40005e70:	82 10 20 16 	mov  0x16, %g1
                                
40005e74:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
40005e78:	81 c7 e0 08 	ret 
                                          
40005e7c:	81 e8 00 00 	restore 
                                      
      IMFS_jnode_t *new_node = IMFS_create_node(
                     
40005e80:	f6 23 a0 5c 	st  %i3, [ %sp + 0x5c ]
                       
40005e84:	9a 10 00 19 	mov  %i1, %o5
                                 
40005e88:	d8 07 bf d4 	ld  [ %fp + -44 ], %o4
                        
40005e8c:	d6 07 bf d0 	ld  [ %fp + -48 ], %o3
                        
40005e90:	94 10 20 48 	mov  0x48, %o2
                                
40005e94:	92 10 00 1a 	mov  %i2, %o1
                                 
40005e98:	40 00 34 7e 	call  40013090 <IMFS_create_node>
             
40005e9c:	b0 10 3f ff 	mov  -1, %i0
                                  
      if ( new_node != NULL ) {
                                      
40005ea0:	80 a2 20 00 	cmp  %o0, 0
                                   
40005ea4:	02 bf ff e7 	be  40005e40 <IMFS_make_generic_node+0x90>
    
40005ea8:	01 00 00 00 	nop 
                                          
        IMFS_jnode_t *parent = currentloc->node_access;
              
40005eac:	fa 07 60 08 	ld  [ %i5 + 8 ], %i5
                          
  _Timecounter_Getbintime( &now );
                                   
40005eb0:	40 00 16 2c 	call  4000b760 <_Timecounter_Getbintime>
      
40005eb4:	90 07 bf b8 	add  %fp, -72, %o0
                            
  return now.sec;
                                                    
40005eb8:	c4 1f bf b8 	ldd  [ %fp + -72 ], %g2
                       
  jnode->stat_mtime = now;
                                           
40005ebc:	c4 3f 60 28 	std  %g2, [ %i5 + 0x28 ]
                      
  int rv = 0;
                                                        
40005ec0:	b0 10 20 00 	clr  %i0
                                      
  jnode->stat_ctime = now;
                                           
40005ec4:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      
    rtems_filesystem_eval_path_cleanup( &ctx );
                      
40005ec8:	40 00 0b 79 	call  40008cac <rtems_filesystem_eval_path_cleanup>

40005ecc:	90 07 bf c8 	add  %fp, -56, %o0
                            
}
                                                                    
40005ed0:	81 c7 e0 08 	ret 
                                          
40005ed4:	81 e8 00 00 	restore 
                                      

                                                                     

40006718 <IMFS_memfile_write>: {
40006718:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  if ( last_byte > memfile->File.size ) {
                            
4000671c:	c2 06 20 40 	ld  [ %i0 + 0x40 ], %g1
                       
  last_byte = start + my_length;
                                     
40006720:	96 07 00 1a 	add  %i4, %i2, %o3
                            
  if ( last_byte > memfile->File.size ) {
                            
40006724:	80 a0 40 0b 	cmp  %g1, %o3
                                 
40006728:	0a 80 00 54 	bcs  40006878 <IMFS_memfile_write+0x160>
      
4000672c:	a0 10 00 18 	mov  %i0, %l0
                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
               
40006730:	23 10 00 9b 	sethi  %hi(0x40026c00), %l1
                   
40006734:	e4 04 60 1c 	ld  [ %l1 + 0x1c ], %l2	! 40026c1c <imfs_memfile_bytes_per_block>

40006738:	bb 3c a0 1f 	sra  %l2, 0x1f, %i5
                           
4000673c:	96 10 00 12 	mov  %l2, %o3
                                 
40006740:	94 10 00 1d 	mov  %i5, %o2
                                 
40006744:	92 10 00 1a 	mov  %i2, %o1
                                 
40006748:	40 00 6d b1 	call  40021e0c <__moddi3>
                     
4000674c:	90 10 00 19 	mov  %i1, %o0
                                 
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
                      
40006750:	94 10 00 1d 	mov  %i5, %o2
                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;
               
40006754:	a6 10 00 09 	mov  %o1, %l3
                                 
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;
                      
40006758:	96 10 00 12 	mov  %l2, %o3
                                 
4000675c:	92 10 00 1a 	mov  %i2, %o1
                                 
40006760:	40 00 6d 20 	call  40021be0 <__divdi3>
                     
40006764:	90 10 00 19 	mov  %i1, %o0
                                 
40006768:	ba 10 00 12 	mov  %l2, %i5
                                 
4000676c:	b4 10 00 09 	mov  %o1, %i2
                                 
  if ( start_offset )  {
                                             
40006770:	80 a4 e0 00 	cmp  %l3, 0
                                   
40006774:	12 80 00 1a 	bne  400067dc <IMFS_memfile_write+0xc4>
       
40006778:	b0 10 20 00 	clr  %i0
                                      
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
              
4000677c:	80 a7 00 1d 	cmp  %i4, %i5
                                 
40006780:	1a 80 00 0e 	bcc  400067b8 <IMFS_memfile_write+0xa0>
       
40006784:	92 10 00 1a 	mov  %i2, %o1
                                 
  if ( my_length ) {
                                                 
40006788:	10 80 00 29 	b  4000682c <IMFS_memfile_write+0x114>
        
4000678c:	80 a7 20 00 	cmp  %i4, 0
                                   
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );
                      
40006790:	40 00 3b a2 	call  40015618 <memcpy>
                       
40006794:	d0 02 00 00 	ld  [ %o0 ], %o0
                              
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
              
40006798:	c2 04 60 1c 	ld  [ %l1 + 0x1c ], %g1
                       
    my_length -= to_copy;
                                            
4000679c:	b8 27 00 1d 	sub  %i4, %i5, %i4
                            
    src += to_copy;
                                                  
400067a0:	b6 06 c0 1d 	add  %i3, %i5, %i3
                            
    block++;
                                                         
400067a4:	b4 06 a0 01 	inc  %i2
                                      
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {
              
400067a8:	80 a0 40 1c 	cmp  %g1, %i4
                                 
400067ac:	18 80 00 1f 	bgu  40006828 <IMFS_memfile_write+0x110>
      
400067b0:	b0 06 00 1d 	add  %i0, %i5, %i0
                            
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );
 
400067b4:	92 10 00 1a 	mov  %i2, %o1
                                 
400067b8:	94 10 20 00 	clr  %o2
                                      
400067bc:	7f ff fd d4 	call  40005f0c <IMFS_memfile_get_block_pointer>

400067c0:	90 10 00 10 	mov  %l0, %o0
                                 
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );
                      
400067c4:	92 10 00 1b 	mov  %i3, %o1
                                 
    if ( !block_ptr )
                                                
400067c8:	80 a2 20 00 	cmp  %o0, 0
                                   
400067cc:	12 bf ff f1 	bne  40006790 <IMFS_memfile_write+0x78>
       <== ALWAYS TAKEN
400067d0:	94 10 00 1d 	mov  %i5, %o2
                                 
}
                                                                    
400067d4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400067d8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );
 
400067dc:	94 10 20 00 	clr  %o2
                                      
400067e0:	7f ff fd cb 	call  40005f0c <IMFS_memfile_get_block_pointer>

400067e4:	90 10 00 10 	mov  %l0, %o0
                                 
    if ( !block_ptr )
                                                
400067e8:	80 a2 20 00 	cmp  %o0, 0
                                   
400067ec:	02 bf ff fa 	be  400067d4 <IMFS_memfile_write+0xbc>
        <== NEVER TAKEN
400067f0:	a4 24 80 13 	sub  %l2, %l3, %l2
                            
400067f4:	80 a7 00 12 	cmp  %i4, %l2
                                 
400067f8:	18 80 00 37 	bgu  400068d4 <IMFS_memfile_write+0x1bc>
      
400067fc:	b0 10 00 1c 	mov  %i4, %i0
                                 
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
           
40006800:	d0 02 00 00 	ld  [ %o0 ], %o0
                              
40006804:	92 10 00 1b 	mov  %i3, %o1
                                 
40006808:	94 10 00 18 	mov  %i0, %o2
                                 
4000680c:	90 02 00 13 	add  %o0, %l3, %o0
                            
40006810:	40 00 3b 82 	call  40015618 <memcpy>
                       
40006814:	b6 06 c0 18 	add  %i3, %i0, %i3
                            
    block++;
                                                         
40006818:	b4 06 a0 01 	inc  %i2
                                      
4000681c:	fa 04 60 1c 	ld  [ %l1 + 0x1c ], %i5
                       
    my_length -= to_copy;
                                            
40006820:	10 bf ff d7 	b  4000677c <IMFS_memfile_write+0x64>
         
40006824:	b8 27 00 18 	sub  %i4, %i0, %i4
                            
  if ( my_length ) {
                                                 
40006828:	80 a7 20 00 	cmp  %i4, 0
                                   
4000682c:	02 80 00 0c 	be  4000685c <IMFS_memfile_write+0x144>
       
40006830:	94 10 20 00 	clr  %o2
                                      
    block_ptr = IMFS_memfile_get_block_pointer( memfile, block, 0 );
 
40006834:	92 10 00 1a 	mov  %i2, %o1
                                 
40006838:	7f ff fd b5 	call  40005f0c <IMFS_memfile_get_block_pointer>

4000683c:	90 10 00 10 	mov  %l0, %o0
                                 
    if ( !block_ptr )
                                                
40006840:	80 a2 20 00 	cmp  %o0, 0
                                   
40006844:	02 bf ff e4 	be  400067d4 <IMFS_memfile_write+0xbc>
        <== NEVER TAKEN
40006848:	94 10 00 1c 	mov  %i4, %o2
                                 
    memcpy( &(*block_ptr)[ 0 ], src, my_length );
                    
4000684c:	d0 02 00 00 	ld  [ %o0 ], %o0
                              
40006850:	92 10 00 1b 	mov  %i3, %o1
                                 
40006854:	40 00 3b 71 	call  40015618 <memcpy>
                       
40006858:	b0 06 00 1c 	add  %i0, %i4, %i0
                            
  _Timecounter_Getbintime( &now );
                                   
4000685c:	40 00 13 c1 	call  4000b760 <_Timecounter_Getbintime>
      
40006860:	90 07 bf f0 	add  %fp, -16, %o0
                            
  return now.sec;
                                                    
40006864:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  jnode->stat_mtime = now;
                                           
40006868:	c4 3c 20 28 	std  %g2, [ %l0 + 0x28 ]
                      
  jnode->stat_ctime = now;
                                           
4000686c:	c4 3c 20 30 	std  %g2, [ %l0 + 0x30 ]
                      
}
                                                                    
40006870:	81 c7 e0 08 	ret 
                                          
40006874:	81 e8 00 00 	restore 
                                      
    bool zero_fill = start > memfile->File.size;
                     
40006878:	80 a6 60 00 	cmp  %i1, 0
                                   
4000687c:	04 80 00 0b 	ble  400068a8 <IMFS_memfile_write+0x190>
      <== ALWAYS TAKEN
40006880:	92 10 20 01 	mov  1, %o1
                                   
    status = IMFS_memfile_extend( memfile, zero_fill, last_byte );
   
40006884:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
40006888:	92 0a 60 01 	and  %o1, 1, %o1
                              
4000688c:	7f ff fe 49 	call  400061b0 <IMFS_memfile_extend>
          
40006890:	90 10 00 10 	mov  %l0, %o0
                                 
    if ( status )
                                                    
40006894:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40006898:	02 bf ff a7 	be  40006734 <IMFS_memfile_write+0x1c>
        <== ALWAYS TAKEN
4000689c:	23 10 00 9b 	sethi  %hi(0x40026c00), %l1
                   
400068a0:	81 c7 e0 08 	ret 
                                          
400068a4:	81 e8 00 00 	restore 
                                      
    bool zero_fill = start > memfile->File.size;
                     
400068a8:	02 80 00 16 	be  40006900 <IMFS_memfile_write+0x1e8>
       <== ALWAYS TAKEN
400068ac:	80 a6 80 01 	cmp  %i2, %g1
                                 
400068b0:	92 10 20 00 	clr  %o1
                                      <== NOT EXECUTED
    status = IMFS_memfile_extend( memfile, zero_fill, last_byte );
   
400068b4:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
400068b8:	92 0a 60 01 	and  %o1, 1, %o1
                              
400068bc:	7f ff fe 3d 	call  400061b0 <IMFS_memfile_extend>
          
400068c0:	90 10 00 10 	mov  %l0, %o0
                                 
    if ( status )
                                                    
400068c4:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
400068c8:	02 bf ff 9b 	be  40006734 <IMFS_memfile_write+0x1c>
        
400068cc:	23 10 00 9b 	sethi  %hi(0x40026c00), %l1
                   
400068d0:	30 bf ff f4 	b,a   400068a0 <IMFS_memfile_write+0x188>
     
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );
           
400068d4:	d0 02 00 00 	ld  [ %o0 ], %o0
                              
400068d8:	b0 10 00 12 	mov  %l2, %i0
                                 
400068dc:	92 10 00 1b 	mov  %i3, %o1
                                 
400068e0:	94 10 00 18 	mov  %i0, %o2
                                 
400068e4:	90 02 00 13 	add  %o0, %l3, %o0
                            
400068e8:	40 00 3b 4c 	call  40015618 <memcpy>
                       
400068ec:	b6 06 c0 18 	add  %i3, %i0, %i3
                            
    block++;
                                                         
400068f0:	b4 06 a0 01 	inc  %i2
                                      
400068f4:	fa 04 60 1c 	ld  [ %l1 + 0x1c ], %i5
                       
    my_length -= to_copy;
                                            
400068f8:	10 bf ff a1 	b  4000677c <IMFS_memfile_write+0x64>
         
400068fc:	b8 27 00 18 	sub  %i4, %i0, %i4
                            
    bool zero_fill = start > memfile->File.size;
                     
40006900:	18 bf ff e2 	bgu  40006888 <IMFS_memfile_write+0x170>
      
40006904:	94 10 20 00 	clr  %o2
                                      
40006908:	10 bf ff ec 	b  400068b8 <IMFS_memfile_write+0x1a0>
        
4000690c:	92 10 20 00 	clr  %o1
                                      

                                                                     

4002319c <IMFS_mknod_control_device>: 4002319c: 40 02 31 b0 40 00 5b 14 40 00 6b 8c 40 00 6b 94 @.1.@.[.@.k.@.k. 400231ac: 00 00 00 48 ...H
40023140 <IMFS_mknod_control_dir_default>: 40023140: 40 02 31 54 40 00 58 60 40 00 58 78 40 00 6b 94 @.1T@.X`@.Xx@.k. 40023150: 00 00 00 50 ...P
4000ff9c <IMFS_mknod_control_dir_minimal>: 4000ff9c: 40 00 ff b0 40 00 2c 28 40 00 2c 40 40 00 3f 98 @...@.,(@.,@@.?. 4000ffac: 00 00 00 50 ...P
400231f0 <IMFS_mknod_control_enosys>: 400231f0: 40 02 37 d0 40 00 5b 48 40 00 6b 8c 40 00 6b 94 @.7.@.[H@.k.@.k. 40023200: 00 00 00 40 ...@
40023254 <IMFS_mknod_control_memfile>: 40023254: 40 02 32 68 40 00 5c 18 40 00 6b 8c 40 00 65 b4 @.2h@.\.@.k.@.e. 40023264: 00 00 00 58 ...X
40006a24 <IMFS_mount>: #endif #include <rtems/imfs.h> int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
40006a24:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  int rv = 0;
                                                        
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;

40006a28:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
40006a2c:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
  return S_ISDIR( node->st_mode );
                                   
40006a30:	07 00 00 3c 	sethi  %hi(0xf000), %g3
                       
40006a34:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
40006a38:	82 08 40 03 	and  %g1, %g3, %g1
                            

                                                                     
  if ( IMFS_is_directory( node ) ) {
                                 
40006a3c:	07 00 00 10 	sethi  %hi(0x4000), %g3
                       
40006a40:	80 a0 40 03 	cmp  %g1, %g3
                                 
40006a44:	12 80 00 0f 	bne  40006a80 <IMFS_mount+0x5c>
               <== NEVER TAKEN
40006a48:	01 00 00 00 	nop 
                                          
    IMFS_directory_t *dir = (IMFS_directory_t *) node;
               

                                                                     
    if ( dir->mt_fs == NULL ) {
                                      
40006a4c:	c2 00 a0 4c 	ld  [ %g2 + 0x4c ], %g1
                       
40006a50:	80 a0 60 00 	cmp  %g1, 0
                                   
40006a54:	12 80 00 05 	bne  40006a68 <IMFS_mount+0x44>
               <== NEVER TAKEN
40006a58:	01 00 00 00 	nop 
                                          
      dir->mt_fs = mt_entry;
                                         
40006a5c:	f0 20 a0 4c 	st  %i0, [ %g2 + 0x4c ]
                       
40006a60:	81 c7 e0 08 	ret 
                                          
40006a64:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    } else {
                                                         
      errno = EBUSY;
                                                 
40006a68:	40 00 39 18 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006a6c:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006a70:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
40006a74:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40006a78:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006a7c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
      rv = -1;
                                                       
    }
                                                                
  } else {
                                                           
    errno = ENOTDIR;
                                                 
40006a80:	40 00 39 12 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006a84:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006a88:	82 10 20 14 	mov  0x14, %g1
                                <== NOT EXECUTED
40006a8c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40006a90:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006a94:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

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

                                                                     
  if ( !rtems_chain_is_empty( &dir->Entries ) ) {
                    
4000587c:	c4 06 20 40 	ld  [ %i0 + 0x40 ], %g2
                       
  return &the_chain->Tail.Node;
                                      
40005880:	82 06 20 44 	add  %i0, 0x44, %g1
                           
40005884:	80 a0 80 01 	cmp  %g2, %g1
                                 
40005888:	12 80 00 0c 	bne  400058b8 <IMFS_node_remove_directory+0x40>

4000588c:	01 00 00 00 	nop 
                                          
    errno = ENOTEMPTY;
                                               
    dir = NULL;
                                                      
  } else if ( IMFS_is_mount_point( dir ) ) {
                         
40005890:	c2 06 20 4c 	ld  [ %i0 + 0x4c ], %g1
                       
40005894:	80 a0 60 00 	cmp  %g1, 0
                                   
40005898:	02 80 00 0c 	be  400058c8 <IMFS_node_remove_directory+0x50>
<== ALWAYS TAKEN
4000589c:	01 00 00 00 	nop 
                                          
    errno = EBUSY;
                                                   
400058a0:	40 00 3d 8a 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
400058a4:	b0 10 20 00 	clr  %i0	! 0 <PROM_START>
                     <== NOT EXECUTED
400058a8:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
400058ac:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    dir = NULL;
                                                      
  }
                                                                  

                                                                     
  return &dir->Node;
                                                 
}
                                                                    
400058b0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400058b4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    errno = ENOTEMPTY;
                                               
400058b8:	40 00 3d 84 	call  40014ec8 <__errno>
                      
400058bc:	b0 10 20 00 	clr  %i0
                                      
400058c0:	82 10 20 5a 	mov  0x5a, %g1
                                
400058c4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
400058c8:	81 c7 e0 08 	ret 
                                          
400058cc:	81 e8 00 00 	restore 
                                      

                                                                     

40006e5c <IMFS_readlink>: for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
40006e5c:	80 a2 a0 00 	cmp  %o2, 0
                                   
40006e60:	02 80 00 16 	be  40006eb8 <IMFS_readlink+0x5c>
             <== NEVER TAKEN
40006e64:	c6 02 20 08 	ld  [ %o0 + 8 ], %g3
                          
40006e68:	c2 00 e0 40 	ld  [ %g3 + 0x40 ], %g1
                       
40006e6c:	c4 48 40 00 	ldsb  [ %g1 ], %g2
                            
40006e70:	90 10 20 00 	clr  %o0
                                      
40006e74:	80 a0 a0 00 	cmp  %g2, 0
                                   
40006e78:	12 80 00 07 	bne  40006e94 <IMFS_readlink+0x38>
            <== ALWAYS TAKEN
40006e7c:	c2 08 40 00 	ldub  [ %g1 ], %g1
                            
40006e80:	30 80 00 0c 	b,a   40006eb0 <IMFS_readlink+0x54>
           <== NOT EXECUTED
40006e84:	c4 48 40 08 	ldsb  [ %g1 + %o0 ], %g2
                      
40006e88:	80 a0 a0 00 	cmp  %g2, 0
                                   
40006e8c:	02 80 00 07 	be  40006ea8 <IMFS_readlink+0x4c>
             
40006e90:	c2 08 40 08 	ldub  [ %g1 + %o0 ], %g1
                      
    buf[i] = sym_link->name[i];
                                      
40006e94:	c2 2a 40 08 	stb  %g1, [ %o1 + %o0 ]
                       
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
      
40006e98:	90 02 20 01 	inc  %o0
                                      
40006e9c:	80 a2 80 08 	cmp  %o2, %o0
                                 
40006ea0:	32 bf ff f9 	bne,a   40006e84 <IMFS_readlink+0x28>
         
40006ea4:	c2 00 e0 40 	ld  [ %g3 + 0x40 ], %g1
                       
}
                                                                    
40006ea8:	81 c3 e0 08 	retl 
                                         
40006eac:	01 00 00 00 	nop 
                                          
40006eb0:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40006eb4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
  for( i=0; ((i<bufsize) && (sym_link->name[i] != '\0')); i++ )
      
40006eb8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40006ebc:	90 10 20 00 	clr  %o0	! 0 <PROM_START>
                     <== NOT EXECUTED

                                                                     

40006bc0 <IMFS_rename>: const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) {
40006bc0:	9d e3 bf 90 	save  %sp, -112, %sp
                          
  IMFS_jnode_t *node = oldloc->node_access;
                          
40006bc4:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
  /*
                                                                 
   * FIXME: Due to insufficient checks we can create inaccessible nodes with

   * this operation.
                                                 
   */
                                                                

                                                                     
  if ( node->Parent == NULL ) {
                                      
40006bc8:	c2 07 60 08 	ld  [ %i5 + 8 ], %g1
                          
40006bcc:	80 a0 60 00 	cmp  %g1, 0
                                   
40006bd0:	02 80 00 36 	be  40006ca8 <IMFS_rename+0xe8>
               <== NEVER TAKEN
40006bd4:	f4 06 a0 08 	ld  [ %i2 + 8 ], %i2
                          
    rtems_set_errno_and_return_minus_one( EINVAL );
                  
  }
                                                                  

                                                                     
  if ( namelen >= IMFS_NAME_MAX ) {
                                  
40006bd8:	80 a7 20 fe 	cmp  %i4, 0xfe
                                
40006bdc:	18 80 00 27 	bgu  40006c78 <IMFS_rename+0xb8>
              
40006be0:	01 00 00 00 	nop 
                                          
    rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
            
  }
                                                                  

                                                                     
  allocated_name = malloc( namelen );
                                
40006be4:	40 00 03 53 	call  40007930 <malloc>
                       
40006be8:	90 10 00 1c 	mov  %i4, %o0
                                 
  if ( allocated_name == NULL ) {
                                    
40006bec:	b2 92 20 00 	orcc  %o0, 0, %i1
                             
40006bf0:	02 80 00 28 	be  40006c90 <IMFS_rename+0xd0>
               <== NEVER TAKEN
40006bf4:	94 10 00 1c 	mov  %i4, %o2
                                 
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
  }
                                                                  

                                                                     
  memcpy( allocated_name, name, namelen );
                           
40006bf8:	40 00 3a 88 	call  40015618 <memcpy>
                       
40006bfc:	92 10 00 1b 	mov  %i3, %o1
                                 

                                                                     
  if ( ( node->flags & IMFS_NODE_FLAG_NAME_ALLOCATED ) != 0 ) {
      
40006c00:	c2 17 60 12 	lduh  [ %i5 + 0x12 ], %g1
                     
40006c04:	80 88 60 01 	btst  1, %g1
                                  
40006c08:	12 80 00 18 	bne  40006c68 <IMFS_rename+0xa8>
              <== NEVER TAKEN
40006c0c:	01 00 00 00 	nop 
                                          
)
                                                                    
{
                                                                    
  Chain_Node *next;
                                                  
  Chain_Node *previous;
                                              

                                                                     
  next           = the_node->next;
                                   
40006c10:	c6 07 40 00 	ld  [ %i5 ], %g3
                              
  previous       = the_node->previous;
                               
40006c14:	c4 07 60 04 	ld  [ %i5 + 4 ], %g2
                          
    free( RTEMS_DECONST( char *, node->name ) );
                     
  }
                                                                  

                                                                     
  node->name = allocated_name;
                                       
40006c18:	f2 27 60 0c 	st  %i1, [ %i5 + 0xc ]
                        
  node->namelen = namelen;
                                           
  node->flags |= IMFS_NODE_FLAG_NAME_ALLOCATED;
                      
40006c1c:	82 10 60 01 	or  %g1, 1, %g1
                               
  node->namelen = namelen;
                                           
40006c20:	f8 37 60 10 	sth  %i4, [ %i5 + 0x10 ]
                      
  return &the_chain->Tail.Node;
                                      
40006c24:	88 06 a0 44 	add  %i2, 0x44, %g4
                           
  node->flags |= IMFS_NODE_FLAG_NAME_ALLOCATED;
                      
40006c28:	c2 37 60 12 	sth  %g1, [ %i5 + 0x12 ]
                      
  _Timecounter_Getbintime( &now );
                                   
40006c2c:	90 07 bf f0 	add  %fp, -16, %o0
                            
  next->previous = previous;
                                         
40006c30:	c4 20 e0 04 	st  %g2, [ %g3 + 4 ]
                          

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

                                                                     
  return 0;
                                                          
40006c34:	b0 10 20 00 	clr  %i0
                                      
  previous->next = next;
                                             
40006c38:	c6 20 80 00 	st  %g3, [ %g2 ]
                              
  Chain_Node *old_last;
                                              

                                                                     
  _Assert( _Chain_Is_node_off_chain( the_node ) );
                   

                                                                     
  tail = _Chain_Tail( the_chain );
                                   
  old_last = tail->previous;
                                         
40006c3c:	c2 06 a0 48 	ld  [ %i2 + 0x48 ], %g1
                       
  entry_node->Parent = dir_node;
                                     
40006c40:	f4 27 60 08 	st  %i2, [ %i5 + 8 ]
                          

                                                                     
  the_node->next = tail;
                                             
40006c44:	c8 27 40 00 	st  %g4, [ %i5 ]
                              
  tail->previous = the_node;
                                         
40006c48:	fa 26 a0 48 	st  %i5, [ %i2 + 0x48 ]
                       
  old_last->next = the_node;
                                         
40006c4c:	fa 20 40 00 	st  %i5, [ %g1 ]
                              
  _Timecounter_Getbintime( &now );
                                   
40006c50:	40 00 12 c4 	call  4000b760 <_Timecounter_Getbintime>
      
40006c54:	c2 27 60 04 	st  %g1, [ %i5 + 4 ]
                          
  return now.sec;
                                                    
40006c58:	c4 1f bf f0 	ldd  [ %fp + -16 ], %g2
                       
  jnode->stat_ctime = _IMFS_get_time();
                              
40006c5c:	c4 3f 60 30 	std  %g2, [ %i5 + 0x30 ]
                      
}
                                                                    
40006c60:	81 c7 e0 08 	ret 
                                          
40006c64:	81 e8 00 00 	restore 
                                      
    free( RTEMS_DECONST( char *, node->name ) );
                     
40006c68:	40 00 01 46 	call  40007180 <free>
                         <== NOT EXECUTED
40006c6c:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        <== NOT EXECUTED
40006c70:	10 bf ff e8 	b  40006c10 <IMFS_rename+0x50>
                <== NOT EXECUTED
40006c74:	c2 17 60 12 	lduh  [ %i5 + 0x12 ], %g1
                     <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( ENAMETOOLONG );
            
40006c78:	40 00 38 94 	call  40014ec8 <__errno>
                      
40006c7c:	b0 10 3f ff 	mov  -1, %i0
                                  
40006c80:	82 10 20 5b 	mov  0x5b, %g1
                                
40006c84:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
40006c88:	81 c7 e0 08 	ret 
                                          
40006c8c:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
40006c90:	40 00 38 8e 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006c94:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006c98:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
40006c9c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40006ca0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006ca4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    rtems_set_errno_and_return_minus_one( EINVAL );
                  
40006ca8:	40 00 38 88 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006cac:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006cb0:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
40006cb4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40006cb8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006cbc:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

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

                                                                     
  node = (*node->control->node_remove)( node );
                      
40006cc8:	c2 02 20 38 	ld  [ %o0 + 0x38 ], %g1
                       
40006ccc:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
40006cd0:	9f c0 40 00 	call  %g1
                                     
40006cd4:	01 00 00 00 	nop 
                                          
  if ( node != NULL ) {
                                              
40006cd8:	80 a2 20 00 	cmp  %o0, 0
                                   
40006cdc:	22 80 00 11 	be,a   40006d20 <IMFS_rmnod+0x60>
             
40006ce0:	b0 10 3f ff 	mov  -1, %i0
                                  
    --node->reference_count;
                                         
40006ce4:	c4 12 20 18 	lduh  [ %o0 + 0x18 ], %g2
                     
    --node->st_nlink;
                                                
40006ce8:	c2 12 20 1a 	lduh  [ %o0 + 0x1a ], %g1
                     
40006cec:	82 00 7f ff 	add  %g1, -1, %g1
                             
    --node->reference_count;
                                         
40006cf0:	84 00 bf ff 	add  %g2, -1, %g2
                             
    --node->st_nlink;
                                                
40006cf4:	c2 32 20 1a 	sth  %g1, [ %o0 + 0x1a ]
                      
    --node->reference_count;
                                         
40006cf8:	c4 32 20 18 	sth  %g2, [ %o0 + 0x18 ]
                      
    if ( node->Parent != NULL ) {
                                    
40006cfc:	c2 02 20 08 	ld  [ %o0 + 8 ], %g1
                          
40006d00:	80 a0 60 00 	cmp  %g1, 0
                                   
40006d04:	02 80 00 07 	be  40006d20 <IMFS_rmnod+0x60>
                
40006d08:	b0 10 20 00 	clr  %i0
                                      
  node->Parent = NULL;
                                               
40006d0c:	c0 22 20 08 	clr  [ %o0 + 8 ]
                              
  next           = the_node->next;
                                   
40006d10:	c4 02 00 00 	ld  [ %o0 ], %g2
                              
  previous       = the_node->previous;
                               
40006d14:	c2 02 20 04 	ld  [ %o0 + 4 ], %g1
                          
  next->previous = previous;
                                         
40006d18:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
  previous->next = next;
                                             
40006d1c:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
40006d20:	81 c7 e0 08 	ret 
                                          
40006d24:	81 e8 00 00 	restore 
                                      
  } else {
                                                           
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40006d28:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006d2c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40006df8 <IMFS_symlink>: {
40006df8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    sizeof( IMFS_sym_link_t ) + strlen( target ) + 1,
                
40006dfc:	40 00 3c 22 	call  40015e84 <strlen>
                       
40006e00:	90 10 00 1b 	mov  %i3, %o0
                                 
  new_node = IMFS_create_node(
                                       
40006e04:	f6 23 a0 5c 	st  %i3, [ %sp + 0x5c ]
                       
40006e08:	94 02 20 49 	add  %o0, 0x49, %o2
                           
40006e0c:	98 10 00 1a 	mov  %i2, %o4
                                 
40006e10:	90 10 00 18 	mov  %i0, %o0
                                 
40006e14:	1b 00 00 28 	sethi  %hi(0xa000), %o5
                       
40006e18:	96 10 00 19 	mov  %i1, %o3
                                 
40006e1c:	9a 13 61 ff 	or  %o5, 0x1ff, %o5
                           
40006e20:	13 10 00 8c 	sethi  %hi(0x40023000), %o1
                   
  return 0;
                                                          
40006e24:	b0 10 20 00 	clr  %i0
                                      
  new_node = IMFS_create_node(
                                       
40006e28:	40 00 30 9a 	call  40013090 <IMFS_create_node>
             
40006e2c:	92 12 62 e8 	or  %o1, 0x2e8, %o1
                           
  if ( new_node == NULL ) {
                                          
40006e30:	80 a2 20 00 	cmp  %o0, 0
                                   
40006e34:	02 80 00 04 	be  40006e44 <IMFS_symlink+0x4c>
              <== NEVER TAKEN
40006e38:	01 00 00 00 	nop 
                                          
}
                                                                    
40006e3c:	81 c7 e0 08 	ret 
                                          
40006e40:	81 e8 00 00 	restore 
                                      
    rtems_set_errno_and_return_minus_one( ENOMEM );
                  
40006e44:	40 00 38 21 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006e48:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006e4c:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
40006e50:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
}
                                                                    
40006e54:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006e58:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

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

40006ec4:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
40006ec8:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
  return S_ISDIR( node->st_mode );
                                   
40006ecc:	07 00 00 3c 	sethi  %hi(0xf000), %g3
                       
40006ed0:	c2 00 a0 14 	ld  [ %g2 + 0x14 ], %g1
                       
40006ed4:	82 08 40 03 	and  %g1, %g3, %g1
                            

                                                                     
  if ( IMFS_is_directory( node ) ) {
                                 
40006ed8:	07 00 00 10 	sethi  %hi(0x4000), %g3
                       
40006edc:	80 a0 40 03 	cmp  %g1, %g3
                                 
40006ee0:	12 80 00 0f 	bne  40006f1c <IMFS_unmount+0x5c>
             <== NEVER TAKEN
40006ee4:	01 00 00 00 	nop 
                                          
    IMFS_directory_t *dir = (IMFS_directory_t *) node;
               

                                                                     
    if ( dir->mt_fs == mt_entry ) {
                                  
40006ee8:	c2 00 a0 4c 	ld  [ %g2 + 0x4c ], %g1
                       
40006eec:	80 a0 40 18 	cmp  %g1, %i0
                                 
40006ef0:	12 80 00 05 	bne  40006f04 <IMFS_unmount+0x44>
             <== NEVER TAKEN
40006ef4:	01 00 00 00 	nop 
                                          
      dir->mt_fs = NULL;
                                             
40006ef8:	c0 20 a0 4c 	clr  [ %g2 + 0x4c ]
                           
40006efc:	81 c7 e0 08 	ret 
                                          
40006f00:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    } else {
                                                         
      errno = EINVAL;
                                                
40006f04:	40 00 37 f1 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006f08:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006f0c:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
40006f10:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40006f14:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006f18:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
      rv = -1;
                                                       
    }
                                                                
  } else {
                                                           
    errno = ENOTDIR;
                                                 
40006f1c:	40 00 37 eb 	call  40014ec8 <__errno>
                      <== NOT EXECUTED
40006f20:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40006f24:	82 10 20 14 	mov  0x14, %g1
                                <== NOT EXECUTED
40006f28:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    rv = -1;
                                                         
  }
                                                                  

                                                                     
  return rv;
                                                         
}
                                                                    
40006f2c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40006f30:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

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