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

4002a5f4 <MSDOS_DOTDOT_NAME>:
                                        
4002a5f4:	40 02 a5 08                                         @...
   

                                                                     

4002a5f8 <MSDOS_DOT_NAME>: 4002a5f8: 40 02 a4 f8 @...
40014698 <_fat_block_read>: uint32_t start, uint32_t offset, uint32_t count, void *buff ) {
40014698:	9d e3 bf 98 	save  %sp, -104, %sp
                          
4001469c:	a0 10 00 18 	mov  %i0, %l0
                                 
    uint32_t                sec_num = start;
                         
    uint32_t                ofs = offset;
                            
    uint8_t                *sec_buf;
                                 
    uint32_t                c = 0;
                                   

                                                                     
    while (count > 0)
                                                
400146a0:	80 a6 e0 00 	cmp  %i3, 0
                                   
400146a4:	12 80 00 11 	bne  400146e8 <_fat_block_read+0x50>
          <== ALWAYS TAKEN
400146a8:	b0 10 20 00 	clr  %i0
                                      
400146ac:	30 80 00 19 	b,a   40014710 <_fat_block_read+0x78>
         <== NOT EXECUTED
    {
                                                                
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);

        if (rc != RC_OK)
                                             
            return -1;
                                               

                                                                     
        c = MIN(count, (fs_info->vol.bps - ofs));
                    
400146b0:	fa 14 00 00 	lduh  [ %l0 ], %i5
                            
400146b4:	ba 27 40 1a 	sub  %i5, %i2, %i5
                            
400146b8:	80 a7 40 1b 	cmp  %i5, %i3
                                 
400146bc:	38 80 00 02 	bgu,a   400146c4 <_fat_block_read+0x2c>
       
400146c0:	ba 10 00 1b 	mov  %i3, %i5
                                 
        memcpy((buff + cmpltd), (sec_buf + ofs), c);
                 
400146c4:	d2 07 bf fc 	ld  [ %fp + -4 ], %o1
                         
400146c8:	92 02 40 1a 	add  %o1, %i2, %o1
                            
400146cc:	40 00 1d 8d 	call  4001bd00 <memcpy>
                       
400146d0:	94 10 00 1d 	mov  %i5, %o2
                                 

                                                                     
        count -= c;
                                                  
        cmpltd += c;
                                                 
400146d4:	b0 06 00 1d 	add  %i0, %i5, %i0
                            
        sec_num++;
                                                   
400146d8:	b2 06 60 01 	inc  %i1
                                      
    while (count > 0)
                                                
400146dc:	b6 a6 c0 1d 	subcc  %i3, %i5, %i3
                          
400146e0:	02 80 00 0c 	be  40014710 <_fat_block_read+0x78>
           
400146e4:	b4 10 20 00 	clr  %i2
                                      
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);

400146e8:	92 10 00 19 	mov  %i1, %o1
                                 
400146ec:	96 07 bf fc 	add  %fp, -4, %o3
                             
400146f0:	94 10 20 01 	mov  1, %o2
                                   
400146f4:	7f ff ff b0 	call  400145b4 <fat_buf_access>
               
400146f8:	90 10 00 10 	mov  %l0, %o0
                                 
        if (rc != RC_OK)
                                             
400146fc:	80 a2 20 00 	cmp  %o0, 0
                                   
40014700:	02 bf ff ec 	be  400146b0 <_fat_block_read+0x18>
           <== ALWAYS TAKEN
40014704:	90 07 00 18 	add  %i4, %i0, %o0
                            
        ofs = 0;
                                                     
    }
                                                                
    return cmpltd;
                                                   
}
                                                                    
40014708:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001470c:	91 e8 3f ff 	restore  %g0, -1, %o0
                         <== NOT EXECUTED
40014710:	81 c7 e0 08 	ret 
                                          
40014714:	81 e8 00 00 	restore 
                                      

                                                                     

400145b4 <fat_buf_access>: {
400145b4:	9d e3 bf 98 	save  %sp, -104, %sp
                          
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

400145b8:	fa 0e 20 02 	ldub  [ %i0 + 2 ], %i5
                        
400145bc:	c2 0e 20 14 	ldub  [ %i0 + 0x14 ], %g1
                     
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)

400145c0:	c4 0e 20 91 	ldub  [ %i0 + 0x91 ], %g2
                     
400145c4:	82 20 40 1d 	sub  %g1, %i5, %g1
                            
{
                                                                    
400145c8:	b8 10 00 18 	mov  %i0, %i4
                                 
400145cc:	93 36 40 01 	srl  %i1, %g1, %o1
                            
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)

400145d0:	80 a0 a0 00 	cmp  %g2, 0
                                   
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

400145d4:	83 2a 40 01 	sll  %o1, %g1, %g1
                            
           ((sector -
                                                
400145d8:	82 26 40 01 	sub  %i1, %g1, %g1
                            
400145dc:	02 80 00 0a 	be  40014604 <fat_buf_access+0x50>
            
400145e0:	bb 28 40 1d 	sll  %g1, %i5, %i5
                            
400145e4:	d2 27 bf fc 	st  %o1, [ %fp + -4 ]
                         
400145e8:	c2 06 20 8c 	ld  [ %i0 + 0x8c ], %g1
                       
400145ec:	80 a0 40 19 	cmp  %g1, %i1
                                 
400145f0:	22 80 00 12 	be,a   40014638 <fat_buf_access+0x84>
         
400145f4:	c2 07 20 94 	ld  [ %i4 + 0x94 ], %g1
                       
400145f8:	7f ff ff 79 	call  400143dc <fat_buf_release.part.5>
       
400145fc:	90 10 00 18 	mov  %i0, %o0
                                 
40014600:	d2 07 bf fc 	ld  [ %fp + -4 ], %o1
                         
40014604:	d0 07 20 6c 	ld  [ %i4 + 0x6c ], %o0
                       
        if (op_type == FAT_OP_TYPE_READ)
                             
40014608:	80 a6 a0 01 	cmp  %i2, 1
                                   
4001460c:	02 80 00 10 	be  4001464c <fat_buf_access+0x98>
            
40014610:	94 07 20 94 	add  %i4, 0x94, %o2
                           
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);

40014614:	7f ff f4 bc 	call  40011904 <rtems_bdbuf_get>
              
40014618:	01 00 00 00 	nop 
                                          
        if (sc != RTEMS_SUCCESSFUL)
                                  
4001461c:	80 a2 20 00 	cmp  %o0, 0
                                   
40014620:	12 80 00 0f 	bne  4001465c <fat_buf_access+0xa8>
           <== NEVER TAKEN
40014624:	82 10 20 01 	mov  1, %g1
                                   
        fs_info->c.blk_num = sec_num;
                                
40014628:	f2 27 20 8c 	st  %i1, [ %i4 + 0x8c ]
                       
        fs_info->c.modified = 0;
                                     
4001462c:	c0 2f 20 90 	clrb  [ %i4 + 0x90 ]
                          
        fs_info->c.state = FAT_CACHE_ACTUAL;
                         
40014630:	c2 2f 20 91 	stb  %g1, [ %i4 + 0x91 ]
                      
    *sec_buf = &fs_info->c.buf->buffer[blk_ofs];
                     
40014634:	c2 07 20 94 	ld  [ %i4 + 0x94 ], %g1
                       
40014638:	c2 00 60 1c 	ld  [ %g1 + 0x1c ], %g1
                       
4001463c:	82 00 40 1d 	add  %g1, %i5, %g1
                            
40014640:	c2 26 c0 00 	st  %g1, [ %i3 ]
                              
}
                                                                    
40014644:	81 c7 e0 08 	ret 
                                          
40014648:	91 e8 20 00 	restore  %g0, 0, %o0
                          
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);

4001464c:	7f ff f4 ee 	call  40011a04 <rtems_bdbuf_read>
             
40014650:	01 00 00 00 	nop 
                                          
40014654:	10 bf ff f3 	b  40014620 <fat_buf_access+0x6c>
             
40014658:	80 a2 20 00 	cmp  %o0, 0
                                   
            rtems_set_errno_and_return_minus_one(EIO);
               
4001465c:	40 00 1a b8 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40014660:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40014664:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
40014668:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
4001466c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40014670:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

400147c4 <fat_cluster_set>: fat_fs_info_t *fs_info, const uint32_t start_cln, const uint32_t offset, const uint32_t count, const uint8_t pattern) {
400147c4:	9d e3 bf 98 	save  %sp, -104, %sp
                          
  ssize_t             rc               = RC_OK;
                      
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));

400147c8:	e0 06 20 08 	ld  [ %i0 + 8 ], %l0
                          
400147cc:	a0 24 00 1a 	sub  %l0, %i2, %l0
                            
400147d0:	80 a4 00 1b 	cmp  %l0, %i3
                                 
400147d4:	38 80 00 02 	bgu,a   400147dc <fat_cluster_set+0x18>
       <== NEVER TAKEN
400147d8:	a0 10 00 1b 	mov  %i3, %l0
                                 <== NOT EXECUTED
400147dc:	c2 0e 20 14 	ldub  [ %i0 + 0x14 ], %g1
                     
400147e0:	c4 0e 20 02 	ldub  [ %i0 + 2 ], %g2
                        
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

400147e4:	80 a6 60 00 	cmp  %i1, 0
                                   
400147e8:	12 80 00 06 	bne  40014800 <fat_cluster_set+0x3c>
          <== ALWAYS TAKEN
400147ec:	86 20 40 02 	sub  %g1, %g2, %g3
                            
400147f0:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     <== NOT EXECUTED
400147f4:	80 88 a0 03 	btst  3, %g2
                                  <== NOT EXECUTED
400147f8:	32 80 00 4c 	bne,a   40014928 <fat_cluster_set+0x164>
      <== NOT EXECUTED
400147fc:	e4 06 20 28 	ld  [ %i0 + 0x28 ], %l2
                       <== NOT EXECUTED
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);

40014800:	e4 0e 20 0c 	ldub  [ %i0 + 0xc ], %l2
                      
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

40014804:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       
        cln -= FAT_RSRVD_CLN;
                                        
40014808:	b2 06 7f fe 	add  %i1, -2, %i1
                             
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);

4001480c:	a4 24 80 01 	sub  %l2, %g1, %l2
                            
40014810:	85 30 80 03 	srl  %g2, %g3, %g2
                            
40014814:	b3 2e 40 12 	sll  %i1, %l2, %i1
                            
        blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);

40014818:	84 00 80 19 	add  %g2, %i1, %g2
                            
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);

  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;

4001481c:	a5 36 80 01 	srl  %i2, %g1, %l2
                            
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);

40014820:	83 2c 80 01 	sll  %l2, %g1, %g1
                            
  ssize_t             bytes_written    = 0;
                          
40014824:	b2 10 20 00 	clr  %i1
                                      
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);

40014828:	b4 26 80 01 	sub  %i2, %g1, %i2
                            
  ssize_t             ret;
                                           

                                                                     
  cur_blk += blocks_in_offset;
                                       
4001482c:	a4 04 80 02 	add  %l2, %g2, %l2
                            
  ssize_t             rc               = RC_OK;
                      
40014830:	82 10 20 00 	clr  %g1
                                      

                                                                     
  while (   (RC_OK == rc)
                                            
40014834:	80 a0 60 00 	cmp  %g1, 0
                                   
40014838:	12 80 00 26 	bne  400148d0 <fat_cluster_set+0x10c>
         <== NEVER TAKEN
4001483c:	a2 10 20 01 	mov  1, %l1
                                   
40014840:	80 a4 20 00 	cmp  %l0, 0
                                   
40014844:	02 80 00 23 	be  400148d0 <fat_cluster_set+0x10c>
          
40014848:	80 a0 60 00 	cmp  %g1, 0
                                   
         && (0 < bytes_to_write))
                                    
  {
                                                                  
    uint32_t c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));

4001484c:	c2 06 20 10 	ld  [ %i0 + 0x10 ], %g1
                       
40014850:	ba 20 40 1a 	sub  %g1, %i2, %i5
                            
40014854:	80 a7 40 10 	cmp  %i5, %l0
                                 
40014858:	08 80 00 03 	bleu  40014864 <fat_cluster_set+0xa0>
         <== ALWAYS TAKEN
4001485c:	b6 10 00 1d 	mov  %i5, %i3
                                 
40014860:	b6 10 00 10 	mov  %l0, %i3
                                 <== NOT EXECUTED
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));

40014864:	80 a7 40 1b 	cmp  %i5, %i3
                                 
40014868:	38 80 00 02 	bgu,a   40014870 <fat_cluster_set+0xac>
       <== NEVER TAKEN
4001486c:	ba 10 00 1b 	mov  %i3, %i5
                                 <== NOT EXECUTED
    if (0 < bytes_to_write)
                                          
40014870:	80 a7 60 00 	cmp  %i5, 0
                                   
40014874:	02 80 00 0f 	be  400148b0 <fat_cluster_set+0xec>
           <== NEVER TAKEN
40014878:	90 10 00 1d 	mov  %i5, %o0
                                 
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

4001487c:	d2 0e 20 14 	ldub  [ %i0 + 0x14 ], %o1
                     
40014880:	c4 0e 20 02 	ldub  [ %i0 + 2 ], %g2
                        
40014884:	92 22 40 02 	sub  %o1, %g2, %o1
                            
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);

40014888:	96 07 bf fc 	add  %fp, -4, %o3
                             
        if (bytes_to_write == fs_info->vol.bytes_per_block)
          
4001488c:	80 a0 40 1d 	cmp  %g1, %i5
                                 
40014890:	02 80 00 21 	be  40014914 <fat_cluster_set+0x150>
          
40014894:	93 2c 80 09 	sll  %l2, %o1, %o1
                            
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);

40014898:	94 10 20 01 	mov  1, %o2
                                   
4001489c:	7f ff ff 46 	call  400145b4 <fat_buf_access>
               
400148a0:	90 10 00 18 	mov  %i0, %o0
                                 
        if (RC_OK == rc)
                                             
400148a4:	80 a2 20 00 	cmp  %o0, 0
                                   
400148a8:	22 80 00 14 	be,a   400148f8 <fat_cluster_set+0x134>
       <== ALWAYS TAKEN
400148ac:	d0 07 bf fc 	ld  [ %fp + -4 ], %o0
                         
        fs_info,
                                                     
        cur_blk,
                                                     
        ofs_blk,
                                                     
        c,
                                                           
        pattern);
                                                    
    if (c != ret)
                                                    
400148b0:	80 a2 00 1b 	cmp  %o0, %i3
                                 
400148b4:	02 80 00 0b 	be  400148e0 <fat_cluster_set+0x11c>
          <== ALWAYS TAKEN
400148b8:	82 10 3f ff 	mov  -1, %g1
                                  
400148bc:	b4 10 20 00 	clr  %i2
                                      <== NOT EXECUTED
  while (   (RC_OK == rc)
                                            
400148c0:	80 a0 60 00 	cmp  %g1, 0
                                   
400148c4:	02 bf ff e0 	be  40014844 <fat_cluster_set+0x80>
           <== ALWAYS TAKEN
400148c8:	80 a4 20 00 	cmp  %l0, 0
                                   
        bytes_written  += ret;
                                       
        ++cur_blk;
                                                   
    }
                                                                
    ofs_blk = 0;
                                                     
  }
                                                                  
  if (RC_OK != rc)
                                                   
400148cc:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
400148d0:	32 80 00 02 	bne,a   400148d8 <fat_cluster_set+0x114>
      <== NEVER TAKEN
400148d4:	b2 10 3f ff 	mov  -1, %i1
                                  <== NOT EXECUTED
    return rc;
                                                       
  else
                                                               
    return bytes_written;
                                            
}
                                                                    
400148d8:	81 c7 e0 08 	ret 
                                          
400148dc:	91 e8 00 19 	restore  %g0, %i1, %o0
                        
        bytes_to_write -= ret;
                                       
400148e0:	a0 24 00 08 	sub  %l0, %o0, %l0
                            
        bytes_written  += ret;
                                       
400148e4:	b2 06 40 08 	add  %i1, %o0, %i1
                            
        ++cur_blk;
                                                   
400148e8:	a4 04 a0 01 	inc  %l2
                                      
400148ec:	82 10 20 00 	clr  %g1
                                      
400148f0:	10 bf ff f4 	b  400148c0 <fat_cluster_set+0xfc>
            
400148f4:	b4 10 20 00 	clr  %i2
                                      
            memset(blk_buf + offset, pattern, bytes_to_write);
       
400148f8:	94 10 00 1d 	mov  %i5, %o2
                                 
400148fc:	92 10 00 1c 	mov  %i4, %o1
                                 
40014900:	40 00 1d 3c 	call  4001bdf0 <memset>
                       
40014904:	90 02 00 1a 	add  %o0, %i2, %o0
                            
    fs_info->c.modified = true;
                                      
40014908:	e2 2e 20 90 	stb  %l1, [ %i0 + 0x90 ]
                      
        return bytes_to_write;
                                       
4001490c:	10 bf ff e9 	b  400148b0 <fat_cluster_set+0xec>
            
40014910:	90 10 00 1d 	mov  %i5, %o0
                                 
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);

40014914:	94 10 20 02 	mov  2, %o2
                                   
40014918:	7f ff ff 27 	call  400145b4 <fat_buf_access>
               
4001491c:	90 10 00 18 	mov  %i0, %o0
                                 
        if (RC_OK == rc)
                                             
40014920:	10 bf ff e2 	b  400148a8 <fat_cluster_set+0xe4>
            
40014924:	80 a2 20 00 	cmp  %o0, 0
                                   
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

40014928:	10 bf ff bd 	b  4001481c <fat_cluster_set+0x58>
            <== NOT EXECUTED
4001492c:	85 34 80 03 	srl  %l2, %g3, %g2
                            <== NOT EXECUTED

                                                                     

40014930 <fat_cluster_write>: fat_fs_info_t *fs_info, const uint32_t start_cln, const uint32_t offset, const uint32_t count, const void *buff) {
40014930:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    ssize_t             rc               = RC_OK;
                    
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));

40014934:	e0 06 20 08 	ld  [ %i0 + 8 ], %l0
                          
40014938:	a0 24 00 1a 	sub  %l0, %i2, %l0
                            
4001493c:	80 a4 00 1b 	cmp  %l0, %i3
                                 
40014940:	38 80 00 02 	bgu,a   40014948 <fat_cluster_write+0x18>
     
40014944:	a0 10 00 1b 	mov  %i3, %l0
                                 
40014948:	c2 0e 20 14 	ldub  [ %i0 + 0x14 ], %g1
                     
4001494c:	c4 0e 20 02 	ldub  [ %i0 + 2 ], %g2
                        
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40014950:	80 a6 60 00 	cmp  %i1, 0
                                   
40014954:	12 80 00 06 	bne  4001496c <fat_cluster_write+0x3c>
        
40014958:	86 20 40 02 	sub  %g1, %g2, %g3
                            
4001495c:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
40014960:	80 88 a0 03 	btst  3, %g2
                                  
40014964:	32 80 00 4c 	bne,a   40014a94 <fat_cluster_write+0x164>
    <== ALWAYS TAKEN
40014968:	e4 06 20 28 	ld  [ %i0 + 0x28 ], %l2
                       
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);

4001496c:	e4 0e 20 0c 	ldub  [ %i0 + 0xc ], %l2
                      
40014970:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       
        cln -= FAT_RSRVD_CLN;
                                        
40014974:	b2 06 7f fe 	add  %i1, -2, %i1
                             
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);

40014978:	a4 24 80 01 	sub  %l2, %g1, %l2
                            
4001497c:	85 30 80 03 	srl  %g2, %g3, %g2
                            
40014980:	b3 2e 40 12 	sll  %i1, %l2, %i1
                            
        blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);

40014984:	84 00 80 19 	add  %g2, %i1, %g2
                            
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);

    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);

40014988:	a5 36 80 01 	srl  %i2, %g1, %l2
                            
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);

4001498c:	83 2c 80 01 	sll  %l2, %g1, %g1
                            
    ssize_t             bytes_written    = 0;
                        
40014990:	b2 10 20 00 	clr  %i1
                                      
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);

40014994:	b4 26 80 01 	sub  %i2, %g1, %i2
                            
    uint8_t             *buffer          = (uint8_t*)buff;
           
    ssize_t             ret;
                                         
    uint32_t            c;
                                           

                                                                     
    cur_blk += blocks_in_offset;
                                     
40014998:	a4 04 80 02 	add  %l2, %g2, %l2
                            
    ssize_t             rc               = RC_OK;
                    
4001499c:	82 10 20 00 	clr  %g1
                                      

                                                                     
    while (   (RC_OK == rc)
                                          
400149a0:	80 a0 60 00 	cmp  %g1, 0
                                   
400149a4:	12 80 00 26 	bne  40014a3c <fat_cluster_write+0x10c>
       <== NEVER TAKEN
400149a8:	a2 10 20 01 	mov  1, %l1
                                   
400149ac:	80 a4 20 00 	cmp  %l0, 0
                                   
400149b0:	02 80 00 23 	be  40014a3c <fat_cluster_write+0x10c>
        
400149b4:	80 a0 60 00 	cmp  %g1, 0
                                   
           && (0 < bytes_to_write))
                                  
    {
                                                                
      c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));

400149b8:	c2 06 20 10 	ld  [ %i0 + 0x10 ], %g1
                       
400149bc:	ba 20 40 1a 	sub  %g1, %i2, %i5
                            
400149c0:	80 a7 40 10 	cmp  %i5, %l0
                                 
400149c4:	08 80 00 03 	bleu  400149d0 <fat_cluster_write+0xa0>
       
400149c8:	b6 10 00 1d 	mov  %i5, %i3
                                 
400149cc:	b6 10 00 10 	mov  %l0, %i3
                                 
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));

400149d0:	80 a7 40 1b 	cmp  %i5, %i3
                                 
400149d4:	38 80 00 02 	bgu,a   400149dc <fat_cluster_write+0xac>
     
400149d8:	ba 10 00 1b 	mov  %i3, %i5
                                 
    if (0 < bytes_to_write)
                                          
400149dc:	80 a7 60 00 	cmp  %i5, 0
                                   
400149e0:	02 80 00 0f 	be  40014a1c <fat_cluster_write+0xec>
         <== NEVER TAKEN
400149e4:	90 10 00 1d 	mov  %i5, %o0
                                 
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

400149e8:	d2 0e 20 14 	ldub  [ %i0 + 0x14 ], %o1
                     
400149ec:	c4 0e 20 02 	ldub  [ %i0 + 2 ], %g2
                        
400149f0:	92 22 40 02 	sub  %o1, %g2, %o1
                            
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);

400149f4:	96 07 bf fc 	add  %fp, -4, %o3
                             
        if (bytes_to_write == fs_info->vol.bytes_per_block)
          
400149f8:	80 a0 40 1d 	cmp  %g1, %i5
                                 
400149fc:	02 80 00 21 	be  40014a80 <fat_cluster_write+0x150>
        
40014a00:	93 2c 80 09 	sll  %l2, %o1, %o1
                            
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);

40014a04:	94 10 20 01 	mov  1, %o2
                                   
40014a08:	7f ff fe eb 	call  400145b4 <fat_buf_access>
               
40014a0c:	90 10 00 18 	mov  %i0, %o0
                                 
        if (RC_OK == rc)
                                             
40014a10:	80 a2 20 00 	cmp  %o0, 0
                                   
40014a14:	22 80 00 14 	be,a   40014a64 <fat_cluster_write+0x134>
     <== ALWAYS TAKEN
40014a18:	d0 07 bf fc 	ld  [ %fp + -4 ], %o0
                         
          fs_info,
                                                   
          cur_blk,
                                                   
          ofs_blk,
                                                   
          c,
                                                         
          &buffer[bytes_written]);
                                   
      if (c != ret)
                                                  
40014a1c:	80 a2 00 1b 	cmp  %o0, %i3
                                 
40014a20:	02 80 00 0b 	be  40014a4c <fat_cluster_write+0x11c>
        <== ALWAYS TAKEN
40014a24:	82 10 3f ff 	mov  -1, %g1
                                  
40014a28:	b4 10 20 00 	clr  %i2
                                      <== NOT EXECUTED
    while (   (RC_OK == rc)
                                          
40014a2c:	80 a0 60 00 	cmp  %g1, 0
                                   
40014a30:	02 bf ff e0 	be  400149b0 <fat_cluster_write+0x80>
         <== ALWAYS TAKEN
40014a34:	80 a4 20 00 	cmp  %l0, 0
                                   
          bytes_written  += ret;
                                     
          ++cur_blk;
                                                 
      }
                                                              
      ofs_blk = 0;
                                                   
    }
                                                                
    if (RC_OK != rc)
                                                 
40014a38:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40014a3c:	32 80 00 02 	bne,a   40014a44 <fat_cluster_write+0x114>
    <== NEVER TAKEN
40014a40:	b2 10 3f ff 	mov  -1, %i1
                                  <== NOT EXECUTED
      return rc;
                                                     
    else
                                                             
      return bytes_written;
                                          
}
                                                                    
40014a44:	81 c7 e0 08 	ret 
                                          
40014a48:	91 e8 00 19 	restore  %g0, %i1, %o0
                        
          bytes_to_write -= ret;
                                     
40014a4c:	a0 24 00 08 	sub  %l0, %o0, %l0
                            
          bytes_written  += ret;
                                     
40014a50:	b2 06 40 08 	add  %i1, %o0, %i1
                            
          ++cur_blk;
                                                 
40014a54:	a4 04 a0 01 	inc  %l2
                                      
40014a58:	82 10 20 00 	clr  %g1
                                      
40014a5c:	10 bf ff f4 	b  40014a2c <fat_cluster_write+0xfc>
          
40014a60:	b4 10 20 00 	clr  %i2
                                      
            memcpy(blk_buf + offset, buf, bytes_to_write);
           
40014a64:	94 10 00 1d 	mov  %i5, %o2
                                 
40014a68:	92 07 00 19 	add  %i4, %i1, %o1
                            
40014a6c:	40 00 1c a5 	call  4001bd00 <memcpy>
                       
40014a70:	90 02 00 1a 	add  %o0, %i2, %o0
                            
    fs_info->c.modified = true;
                                      
40014a74:	e2 2e 20 90 	stb  %l1, [ %i0 + 0x90 ]
                      
        return bytes_to_write;
                                       
40014a78:	10 bf ff e9 	b  40014a1c <fat_cluster_write+0xec>
          
40014a7c:	90 10 00 1d 	mov  %i5, %o0
                                 
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);

40014a80:	94 10 20 02 	mov  2, %o2
                                   
40014a84:	7f ff fe cc 	call  400145b4 <fat_buf_access>
               
40014a88:	90 10 00 18 	mov  %i0, %o0
                                 
        if (RC_OK == rc)
                                             
40014a8c:	10 bf ff e2 	b  40014a14 <fat_cluster_write+0xe4>
          
40014a90:	80 a2 20 00 	cmp  %o0, 0
                                   
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);

40014a94:	10 bf ff bd 	b  40014988 <fat_cluster_write+0x58>
          
40014a98:	85 34 80 03 	srl  %l2, %g3, %g2
                            

                                                                     

40013c8c <fat_file_close>: {
40013c8c:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    if (fat_fd->links_num > 1)
                                       
40013c90:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
40013c94:	80 a0 60 01 	cmp  %g1, 1
                                   
40013c98:	08 80 00 05 	bleu  40013cac <fat_file_close+0x20>
          
40013c9c:	82 00 7f ff 	add  %g1, -1, %g1
                             
        fat_fd->links_num--;
                                         
40013ca0:	c2 26 60 08 	st  %g1, [ %i1 + 8 ]
                          
    rc = fat_buf_release(fs_info);
                                   
40013ca4:	40 00 02 74 	call  40014674 <fat_buf_release>
              
40013ca8:	81 e8 00 00 	restore 
                                      
        fat_file_update(fs_info, fat_fd);
                            
40013cac:	92 10 00 19 	mov  %i1, %o1
                                 
40013cb0:	7f ff ff 17 	call  4001390c <fat_file_update>
              
40013cb4:	90 10 00 18 	mov  %i0, %o0
                                 
        if (fat_fd->flags & FAT_FILE_REMOVED)
                        
40013cb8:	c2 0e 60 30 	ldub  [ %i1 + 0x30 ], %g1
                     
40013cbc:	80 88 60 01 	btst  1, %g1
                                  
40013cc0:	12 80 00 0b 	bne  40013cec <fat_file_close+0x60>
           
40013cc4:	94 10 20 00 	clr  %o2
                                      
            if (fat_ino_is_unique(fs_info, fat_fd->ino))
             
40013cc8:	d2 06 60 0c 	ld  [ %i1 + 0xc ], %o1
                        
40013ccc:	40 00 06 7e 	call  400156c4 <fat_ino_is_unique>
            
40013cd0:	90 10 00 18 	mov  %i0, %o0
                                 
40013cd4:	80 a2 20 00 	cmp  %o0, 0
                                   
40013cd8:	22 80 00 1b 	be,a   40013d44 <fat_file_close+0xb8>
         
40013cdc:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
                fat_fd->links_num = 0;
                               
40013ce0:	c0 26 60 08 	clr  [ %i1 + 8 ]
                              <== NOT EXECUTED
    rc = fat_buf_release(fs_info);
                                   
40013ce4:	40 00 02 64 	call  40014674 <fat_buf_release>
              <== NOT EXECUTED
40013ce8:	81 e8 00 00 	restore 
                                      
            rc = fat_file_truncate(fs_info, fat_fd, 0);
              
40013cec:	92 10 00 19 	mov  %i1, %o1
                                 
40013cf0:	7f ff ff a4 	call  40013b80 <fat_file_truncate>
            
40013cf4:	90 10 00 18 	mov  %i0, %o0
                                 
            if (rc == RC_OK)
                                         
40013cf8:	80 a2 20 00 	cmp  %o0, 0
                                   
40013cfc:	12 bf ff ea 	bne  40013ca4 <fat_file_close+0x18>
           <== NEVER TAKEN
40013d00:	90 10 00 18 	mov  %i0, %o0
                                 
  next           = the_node->next;
                                   
40013d04:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
  previous       = the_node->previous;
                               
40013d08:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
                _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);

40013d0c:	d2 06 60 0c 	ld  [ %i1 + 0xc ], %o1
                        
  next->previous = previous;
                                         
40013d10:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
                if (fat_ino_is_unique(fs_info, fat_fd->ino))
         
40013d14:	40 00 06 6c 	call  400156c4 <fat_ino_is_unique>
            
40013d18:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
40013d1c:	80 a2 20 00 	cmp  %o0, 0
                                   
40013d20:	02 80 00 05 	be  40013d34 <fat_file_close+0xa8>
            <== ALWAYS TAKEN
40013d24:	01 00 00 00 	nop 
                                          
                    fat_free_unique_ino(fs_info, fat_fd->ino);
       
40013d28:	d2 06 60 0c 	ld  [ %i1 + 0xc ], %o1
                        <== NOT EXECUTED
40013d2c:	40 00 06 5b 	call  40015698 <fat_free_unique_ino>
          <== NOT EXECUTED
40013d30:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
                free(fat_fd);
                                        
40013d34:	7f ff c5 a7 	call  400053d0 <free>
                         
40013d38:	90 10 00 19 	mov  %i1, %o0
                                 
    rc = fat_buf_release(fs_info);
                                   
40013d3c:	40 00 02 4e 	call  40014674 <fat_buf_release>
              
40013d40:	81 e8 00 00 	restore 
                                      
  previous       = the_node->previous;
                               
40013d44:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
  next->previous = previous;
                                         
40013d48:	c2 20 a0 04 	st  %g1, [ %g2 + 4 ]
                          
                free(fat_fd);
                                        
40013d4c:	90 10 00 19 	mov  %i1, %o0
                                 
40013d50:	7f ff c5 a0 	call  400053d0 <free>
                         
40013d54:	c4 20 40 00 	st  %g2, [ %g1 ]
                              
    rc = fat_buf_release(fs_info);
                                   
40013d58:	40 00 02 47 	call  40014674 <fat_buf_release>
              
40013d5c:	81 e8 00 00 	restore 
                                      

                                                                     

40013e34 <fat_file_extend>: {
40013e34:	9d e3 bf 90 	save  %sp, -112, %sp
                          
    *a_length = new_length;
                                          
40013e38:	f6 27 00 00 	st  %i3, [ %i4 ]
                              
    uint32_t       chain = 0;
                                        
40013e3c:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            
    uint32_t       last_cl = 0;
                                      
40013e40:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
    if (new_length <= fat_fd->fat_file_size)
                         
40013e44:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
40013e48:	80 a0 40 1b 	cmp  %g1, %i3
                                 
40013e4c:	1a 80 00 54 	bcc  40013f9c <fat_file_extend+0x168>
         
40013e50:	a0 10 20 00 	clr  %l0
                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
                              
40013e54:	c4 06 60 20 	ld  [ %i1 + 0x20 ], %g2
                       
40013e58:	80 a0 a0 01 	cmp  %g2, 1
                                   
40013e5c:	22 80 00 53 	be,a   40013fa8 <fat_file_extend+0x174>
       
40013e60:	c4 06 60 24 	ld  [ %i1 + 0x24 ], %g2
                       
    bytes_remain = (fs_info->vol.bpc -
                               
40013e64:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &

40013e68:	84 07 7f ff 	add  %i5, -1, %g2
                             
40013e6c:	a4 08 40 02 	and  %g1, %g2, %l2
                            
    bytes_remain = (fs_info->vol.bpc -
                               
40013e70:	ba 27 40 12 	sub  %i5, %l2, %i5
                            
40013e74:	ba 0f 40 02 	and  %i5, %g2, %i5
                            
40013e78:	80 a0 00 1d 	cmp  %g0, %i5
                                 
    bytes2add = new_length - fat_fd->fat_file_size;
                  
40013e7c:	86 26 c0 01 	sub  %i3, %g1, %g3
                            
40013e80:	84 40 20 00 	addx  %g0, 0, %g2
                             
    if (bytes2add > bytes_remain)
                                    
40013e84:	80 a7 40 03 	cmp  %i5, %g3
                                 
40013e88:	1a 80 00 41 	bcc  40013f8c <fat_file_extend+0x158>
         
40013e8c:	84 0e 80 02 	and  %i2, %g2, %g2
                            
    if (zero_fill && bytes_remain > 0) {
                             
40013e90:	80 a0 a0 00 	cmp  %g2, 0
                                   
40013e94:	12 80 00 51 	bne  40013fd8 <fat_file_extend+0x1a4>
         <== NEVER TAKEN
40013e98:	a2 20 c0 1d 	sub  %g3, %i5, %l1
                            
    if (bytes2add == 0)
                                              
40013e9c:	80 a4 60 00 	cmp  %l1, 0
                                   
40013ea0:	02 80 00 3e 	be  40013f98 <fat_file_extend+0x164>
          
40013ea4:	9a 10 00 1a 	mov  %i2, %o5
                                 
    cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
        
40013ea8:	c4 0e 20 0c 	ldub  [ %i0 + 0xc ], %g2
                      
40013eac:	82 04 7f ff 	add  %l1, -1, %g1
                             
    rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
    
40013eb0:	98 07 bf f8 	add  %fp, -8, %o4
                             
    cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
        
40013eb4:	b5 30 40 02 	srl  %g1, %g2, %i2
                            
    rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
    
40013eb8:	96 07 bf fc 	add  %fp, -4, %o3
                             
    cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;
        
40013ebc:	b4 06 a0 01 	inc  %i2
                                      
    rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,
    
40013ec0:	92 07 bf f0 	add  %fp, -16, %o1
                            
40013ec4:	94 10 00 1a 	mov  %i2, %o2
                                 
40013ec8:	7f ff fd 2d 	call  4001337c <fat_scan_fat_for_free_clusters>

40013ecc:	90 10 00 18 	mov  %i0, %o0
                                 
    if (rc != RC_OK)
                                                 
40013ed0:	a0 92 20 00 	orcc  %o0, 0, %l0
                             
40013ed4:	32 80 00 33 	bne,a   40013fa0 <fat_file_extend+0x16c>
      <== NEVER TAKEN
40013ed8:	b0 10 00 10 	mov  %l0, %i0
                                 <== NOT EXECUTED
    if ((cls_added == 0) && (bytes_remain == 0))
                     
40013edc:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
40013ee0:	80 90 40 1d 	orcc  %g1, %i5, %g0
                           
40013ee4:	02 80 00 38 	be  40013fc4 <fat_file_extend+0x190>
          
40013ee8:	80 a0 40 1a 	cmp  %g1, %i2
                                 
    if (cls2add != cls_added)
                                        
40013eec:	02 80 00 08 	be  40013f0c <fat_file_extend+0xd8>
           
40013ef0:	b4 26 80 01 	sub  %i2, %g1, %i2
                            
        uint32_t missing = (cls2add - cls_added) << fs_info->vol.bpc_log2;

40013ef4:	c4 0e 20 0c 	ldub  [ %i0 + 0xc ], %g2
                      
40013ef8:	b5 2e 80 02 	sll  %i2, %g2, %i2
                            
        new_length -= bytes2add < missing ? bytes2add : missing;
     
40013efc:	80 a6 80 11 	cmp  %i2, %l1
                                 
40013f00:	38 80 00 02 	bgu,a   40013f08 <fat_file_extend+0xd4>
       <== ALWAYS TAKEN
40013f04:	b4 10 00 11 	mov  %l1, %i2
                                 
40013f08:	b6 26 c0 1a 	sub  %i3, %i2, %i3
                            
    if (cls_added > 0)
                                               
40013f0c:	80 a0 60 00 	cmp  %g1, 0
                                   
40013f10:	22 80 00 47 	be,a   4001402c <fat_file_extend+0x1f8>
       
40013f14:	f6 27 00 00 	st  %i3, [ %i4 ]
                              
        if ( fat_fd->fat_file_size == 0 )
                            
40013f18:	d6 06 60 18 	ld  [ %i1 + 0x18 ], %o3
                       
40013f1c:	80 a2 e0 00 	cmp  %o3, 0
                                   
40013f20:	32 80 00 48 	bne,a   40014040 <fat_file_extend+0x20c>
      
40013f24:	d2 06 60 3c 	ld  [ %i1 + 0x3c ], %o1
                       
            fat_fd->map.disk_cln = chain;
                            
40013f28:	c4 07 bf f0 	ld  [ %fp + -16 ], %g2
                        
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
40013f2c:	c2 0e 60 30 	ldub  [ %i1 + 0x30 ], %g1
                     
40013f30:	82 10 60 02 	or  %g1, 2, %g1
                               
40013f34:	c4 26 60 38 	st  %g2, [ %i1 + 0x38 ]
                       
            fat_fd->map.file_cln = 0;
                                
40013f38:	c0 26 60 34 	clr  [ %i1 + 0x34 ]
                           
    fat_fd->cln = cln;
                                               
40013f3c:	c4 26 60 1c 	st  %g2, [ %i1 + 0x1c ]
                       
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
40013f40:	c2 2e 60 30 	stb  %g1, [ %i1 + 0x30 ]
                      
        fat_fd->map.last_cln = last_cl;
                              
40013f44:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
40013f48:	c2 26 60 3c 	st  %g1, [ %i1 + 0x3c ]
                       
        if (fat_fd->fat_file_type == FAT_DIRECTORY)
                  
40013f4c:	c2 06 60 10 	ld  [ %i1 + 0x10 ], %g1
                       
40013f50:	80 a0 60 00 	cmp  %g1, 0
                                   
40013f54:	32 80 00 36 	bne,a   4001402c <fat_file_extend+0x1f8>
      
40013f58:	f6 27 00 00 	st  %i3, [ %i4 ]
                              
            rc = fat_init_clusters_chain(fs_info, chain);
            
40013f5c:	d2 07 bf f0 	ld  [ %fp + -16 ], %o1
                        
40013f60:	40 00 05 71 	call  40015524 <fat_init_clusters_chain>
      
40013f64:	90 10 00 18 	mov  %i0, %o0
                                 
            if ( rc != RC_OK )
                                       
40013f68:	82 92 20 00 	orcc  %o0, 0, %g1
                             
40013f6c:	22 80 00 30 	be,a   4001402c <fat_file_extend+0x1f8>
       <== ALWAYS TAKEN
40013f70:	f6 27 00 00 	st  %i3, [ %i4 ]
                              
                fat_free_fat_clusters_chain(fs_info, chain);
         
40013f74:	d2 07 bf f0 	ld  [ %fp + -16 ], %o1
                        <== NOT EXECUTED
40013f78:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
40013f7c:	7f ff fc c8 	call  4001329c <fat_free_fat_clusters_chain>
  <== NOT EXECUTED
40013f80:	a0 10 00 01 	mov  %g1, %l0
                                 <== NOT EXECUTED
                return rc;
                                           
40013f84:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013f88:	91 e8 00 10 	restore  %g0, %l0, %o0
                        <== NOT EXECUTED
    if (zero_fill && bytes_remain > 0) {
                             
40013f8c:	80 a0 a0 00 	cmp  %g2, 0
                                   
40013f90:	12 80 00 12 	bne  40013fd8 <fat_file_extend+0x1a4>
         
40013f94:	a2 10 20 00 	clr  %l1
                                      
        return RC_OK;
                                                
40013f98:	a0 10 20 00 	clr  %l0
                                      
}
                                                                    
40013f9c:	b0 10 00 10 	mov  %l0, %i0
                                 
40013fa0:	81 c7 e0 08 	ret 
                                          
40013fa4:	81 e8 00 00 	restore 
                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
                              
40013fa8:	80 a0 a0 00 	cmp  %g2, 0
                                   
40013fac:	32 bf ff af 	bne,a   40013e68 <fat_file_extend+0x34>
       <== NEVER TAKEN
40013fb0:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          <== NOT EXECUTED
40013fb4:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
40013fb8:	80 88 a0 03 	btst  3, %g2
                                  
40013fbc:	22 bf ff ab 	be,a   40013e68 <fat_file_extend+0x34>
        <== NEVER TAKEN
40013fc0:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENOSPC);
                
40013fc4:	40 00 1c 5e 	call  4001b13c <__errno>
                      
40013fc8:	a0 10 3f ff 	mov  -1, %l0
                                  
40013fcc:	82 10 20 1c 	mov  0x1c, %g1
                                
40013fd0:	10 bf ff f3 	b  40013f9c <fat_file_extend+0x168>
           
40013fd4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
        uint32_t cl_start = start >> fs_info->vol.bpc_log2;
          
40013fd8:	d4 0e 20 0c 	ldub  [ %i0 + 0xc ], %o2
                      
        rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
    
40013fdc:	96 07 bf fc 	add  %fp, -4, %o3
                             
40013fe0:	95 30 40 0a 	srl  %g1, %o2, %o2
                            
40013fe4:	92 10 00 19 	mov  %i1, %o1
                                 
40013fe8:	7f ff fd 5a 	call  40013550 <fat_file_lseek>
               
40013fec:	90 10 00 18 	mov  %i0, %o0
                                 
        if (rc != RC_OK)
                                             
40013ff0:	a0 92 60 00 	orcc  %o1, 0, %l0
                             
40013ff4:	32 bf ff eb 	bne,a   40013fa0 <fat_file_extend+0x16c>
      <== NEVER TAKEN
40013ff8:	b0 10 00 10 	mov  %l0, %i0
                                 <== NOT EXECUTED
        bytes_written = fat_cluster_set (fs_info, cur_cln, ofs, bytes_remain, 0);

40013ffc:	d2 07 bf fc 	ld  [ %fp + -4 ], %o1
                         
40014000:	98 10 20 00 	clr  %o4
                                      
40014004:	96 10 00 1d 	mov  %i5, %o3
                                 
40014008:	94 10 00 12 	mov  %l2, %o2
                                 
4001400c:	90 10 00 18 	mov  %i0, %o0
                                 
40014010:	40 00 01 ed 	call  400147c4 <fat_cluster_set>
              
40014014:	a0 10 3f ff 	mov  -1, %l0
                                  
        if (bytes_remain != bytes_written)
                           
40014018:	80 a2 00 1d 	cmp  %o0, %i5
                                 
4001401c:	32 bf ff e1 	bne,a   40013fa0 <fat_file_extend+0x16c>
      <== NEVER TAKEN
40014020:	b0 10 00 10 	mov  %l0, %i0
                                 <== NOT EXECUTED
40014024:	10 bf ff 9f 	b  40013ea0 <fat_file_extend+0x6c>
            
40014028:	80 a4 60 00 	cmp  %l1, 0
                                   
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001402c:	c2 0e 60 30 	ldub  [ %i1 + 0x30 ], %g1
                     
40014030:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->fat_file_size = s;
                                       
40014034:	f6 26 60 18 	st  %i3, [ %i1 + 0x18 ]
                       
    return RC_OK;
                                                    
40014038:	10 bf ff d9 	b  40013f9c <fat_file_extend+0x168>
           
4001403c:	c2 2e 60 30 	stb  %g1, [ %i1 + 0x30 ]
                      
            if (fat_fd->map.last_cln != FAT_UNDEFINED_VALUE)
         
40014040:	80 a2 7f ff 	cmp  %o1, -1
                                  
40014044:	22 80 00 0d 	be,a   40014078 <fat_file_extend+0x244>
       <== NEVER TAKEN
40014048:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
                old_last_cl = fat_fd->map.last_cln;
                  
4001404c:	d2 27 bf f4 	st  %o1, [ %fp + -12 ]
                        
            rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);
   
40014050:	90 10 00 18 	mov  %i0, %o0
                                 
40014054:	7f ff fb f0 	call  40013014 <fat_set_fat_cluster>
          
40014058:	d4 07 bf f0 	ld  [ %fp + -16 ], %o2
                        
            if ( rc != RC_OK )
                                       
4001405c:	82 92 20 00 	orcc  %o0, 0, %g1
                             
40014060:	12 bf ff c6 	bne  40013f78 <fat_file_extend+0x144>
         <== NEVER TAKEN
40014064:	d2 07 bf f0 	ld  [ %fp + -16 ], %o1
                        
            fat_buf_release(fs_info);
                                
40014068:	40 00 01 83 	call  40014674 <fat_buf_release>
              
4001406c:	90 10 00 18 	mov  %i0, %o0
                                 
        fat_fd->map.last_cln = last_cl;
                              
40014070:	10 bf ff b6 	b  40013f48 <fat_file_extend+0x114>
           
40014074:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
                rc = fat_file_ioctl(fs_info, fat_fd, F_CLU_NUM,
      
40014078:	98 07 bf f4 	add  %fp, -12, %o4
                            <== NOT EXECUTED
4001407c:	96 02 ff ff 	add  %o3, -1, %o3
                             <== NOT EXECUTED
40014080:	94 10 20 01 	mov  1, %o2
                                   <== NOT EXECUTED
40014084:	7f ff ff 37 	call  40013d60 <fat_file_ioctl>
               <== NOT EXECUTED
40014088:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
4001408c:	d2 07 bf f4 	ld  [ %fp + -12 ], %o1
                        <== NOT EXECUTED
                if ( rc != RC_OK )
                                   
40014090:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40014094:	02 bf ff ef 	be  40014050 <fat_file_extend+0x21c>
          <== NOT EXECUTED
40014098:	82 10 00 08 	mov  %o0, %g1
                                 <== NOT EXECUTED
4001409c:	10 bf ff b7 	b  40013f78 <fat_file_extend+0x144>
           <== NOT EXECUTED
400140a0:	d2 07 bf f0 	ld  [ %fp + -16 ], %o1
                        <== NOT EXECUTED

                                                                     

40013d60 <fat_file_ioctl>: {
40013d60:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    va_start(ap, cmd);
                                               
40013d64:	82 07 a0 50 	add  %fp, 0x50, %g1
                           
40013d68:	f6 27 a0 50 	st  %i3, [ %fp + 0x50 ]
                       
    switch (cmd)
                                                     
40013d6c:	80 a6 a0 01 	cmp  %i2, 1
                                   
    va_start(ap, cmd);
                                               
40013d70:	f8 27 a0 54 	st  %i4, [ %fp + 0x54 ]
                       
40013d74:	fa 27 a0 58 	st  %i5, [ %fp + 0x58 ]
                       
    uint32_t       cur_cln = 0;
                                      
40013d78:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
    switch (cmd)
                                                     
40013d7c:	12 80 00 22 	bne  40013e04 <fat_file_ioctl+0xa4>
           <== NEVER TAKEN
40013d80:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
            ret = va_arg(ap, uint32_t *);
                            
40013d84:	84 07 a0 58 	add  %fp, 0x58, %g2
                           
40013d88:	c4 27 bf fc 	st  %g2, [ %fp + -4 ]
                         
            if ( pos >= fat_fd->fat_file_size ) {
                    
40013d8c:	c4 06 60 18 	ld  [ %i1 + 0x18 ], %g2
                       
40013d90:	80 a0 80 1b 	cmp  %g2, %i3
                                 
40013d94:	08 80 00 22 	bleu  40013e1c <fat_file_ioctl+0xbc>
          <== NEVER TAKEN
40013d98:	ba 10 00 1c 	mov  %i4, %i5
                                 
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
                      
40013d9c:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40013da0:	80 a0 60 01 	cmp  %g1, 1
                                   
40013da4:	32 80 00 0d 	bne,a   40013dd8 <fat_file_ioctl+0x78>
        
40013da8:	d4 0e 20 0c 	ldub  [ %i0 + 0xc ], %o2
                      
40013dac:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
40013db0:	80 a0 60 00 	cmp  %g1, 0
                                   
40013db4:	32 80 00 09 	bne,a   40013dd8 <fat_file_ioctl+0x78>
        <== NEVER TAKEN
40013db8:	d4 0e 20 0c 	ldub  [ %i0 + 0xc ], %o2
                      <== NOT EXECUTED
40013dbc:	c2 0e 20 16 	ldub  [ %i0 + 0x16 ], %g1
                     
40013dc0:	80 88 60 03 	btst  3, %g1
                                  
40013dc4:	22 80 00 05 	be,a   40013dd8 <fat_file_ioctl+0x78>
         
40013dc8:	d4 0e 20 0c 	ldub  [ %i0 + 0xc ], %o2
                      
                *ret  = 0;
                                           
40013dcc:	c0 27 00 00 	clr  [ %i4 ]
                                  
                break;
                                               
40013dd0:	81 c7 e0 08 	ret 
                                          
40013dd4:	91 e8 20 00 	restore  %g0, 0, %o0
                          
            rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);

40013dd8:	90 10 00 18 	mov  %i0, %o0
                                 
40013ddc:	96 07 bf f8 	add  %fp, -8, %o3
                             
40013de0:	95 36 c0 0a 	srl  %i3, %o2, %o2
                            
40013de4:	7f ff fd db 	call  40013550 <fat_file_lseek>
               
40013de8:	92 10 00 19 	mov  %i1, %o1
                                 
            if ( rc != RC_OK )
                                       
40013dec:	b0 92 60 00 	orcc  %o1, 0, %i0
                             
40013df0:	12 80 00 03 	bne  40013dfc <fat_file_ioctl+0x9c>
           <== NEVER TAKEN
40013df4:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
            *ret = cur_cln;
                                          
40013df8:	c2 27 40 00 	st  %g1, [ %i5 ]
                              
            break;
                                                   
40013dfc:	81 c7 e0 08 	ret 
                                          
40013e00:	81 e8 00 00 	restore 
                                      
            errno = EINVAL;
                                          
40013e04:	40 00 1c ce 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40013e08:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40013e0c:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
40013e10:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
}
                                                                    
40013e14:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013e18:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
                rtems_set_errno_and_return_minus_one( EIO );
         
40013e1c:	40 00 1c c8 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40013e20:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40013e24:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
40013e28:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40013e2c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013e30:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

400135ec <fat_file_open>: {
400135ec:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
 
400135f0:	c2 06 40 00 	ld  [ %i1 ], %g1
                              
    if (cln == 1)
                                                    
400135f4:	80 a0 60 01 	cmp  %g1, 1
                                   
400135f8:	02 80 00 0b 	be  40013624 <fat_file_open+0x38>
             
400135fc:	80 a0 60 00 	cmp  %g1, 0
                                   
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40013600:	32 80 00 76 	bne,a   400137d8 <fat_file_open+0x1ec>
        
40013604:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        
40013608:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
4001360c:	80 88 a0 03 	btst  3, %g2
                                  
40013610:	22 80 00 72 	be,a   400137d8 <fat_file_open+0x1ec>
         <== NEVER TAKEN
40013614:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;
                                
40013618:	c2 06 20 28 	ld  [ %i0 + 0x28 ], %g1
                       
            fs_info->vol.sec_mul);
                                   
4001361c:	fa 0e 20 03 	ldub  [ %i0 + 3 ], %i5
                        
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<
           
40013620:	83 28 40 1d 	sll  %g1, %i5, %g1
                            
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +
 
40013624:	c4 06 60 04 	ld  [ %i1 + 4 ], %g2
                          
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);
      
40013628:	e0 06 20 74 	ld  [ %i0 + 0x74 ], %l0
                       
4001362c:	bb 30 a0 09 	srl  %g2, 9, %i5
                              
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
 
40013630:	85 30 a0 05 	srl  %g2, 5, %g2
                              
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
 
40013634:	ba 07 40 01 	add  %i5, %g1, %i5
                            
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
 
40013638:	84 08 a0 0f 	and  %g2, 0xf, %g2
                            
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +
 
4001363c:	bb 2f 60 04 	sll  %i5, 4, %i5
                              
40013640:	ba 07 40 02 	add  %i5, %g2, %i5
                            
    uint32_t          mod = (key1) % FAT_HASH_MODULE;
                
40013644:	82 0f 60 01 	and  %i5, 1, %g1
                              
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);
      
40013648:	b7 28 60 01 	sll  %g1, 1, %i3
                              
4001364c:	b6 06 c0 01 	add  %i3, %g1, %i3
                            
40013650:	b7 2e e0 02 	sll  %i3, 2, %i3
                              
  return _Chain_Immutable_head( the_chain )->next;
                   
40013654:	c8 04 00 1b 	ld  [ %l0 + %i3 ], %g4
                        
40013658:	a0 04 00 1b 	add  %l0, %i3, %l0
                            
  return &the_chain->Tail.Node;
                                      
4001365c:	b8 04 20 04 	add  %l0, 4, %i4
                              
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
         
40013660:	80 a1 00 1c 	cmp  %g4, %i4
                                 
40013664:	22 80 00 1e 	be,a   400136dc <fat_file_open+0xf0>
          
40013668:	de 06 20 78 	ld  [ %i0 + 0x78 ], %o7
                       
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
 
4001366c:	c2 01 20 20 	ld  [ %g4 + 0x20 ], %g1
                       
    if (cln == 1)
                                                    
40013670:	80 a0 60 01 	cmp  %g1, 1
                                   
40013674:	02 80 00 0b 	be  400136a0 <fat_file_open+0xb4>
             
40013678:	80 a0 60 00 	cmp  %g1, 0
                                   
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

4001367c:	32 80 00 5c 	bne,a   400137ec <fat_file_open+0x200>
        
40013680:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        
40013684:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
40013688:	80 88 a0 03 	btst  3, %g2
                                  
4001368c:	22 80 00 58 	be,a   400137ec <fat_file_open+0x200>
         <== NEVER TAKEN
40013690:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;
                                
40013694:	c2 06 20 28 	ld  [ %i0 + 0x28 ], %g1
                       
            fs_info->vol.sec_mul);
                                   
40013698:	c4 0e 20 03 	ldub  [ %i0 + 3 ], %g2
                        
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<
           
4001369c:	83 28 40 02 	sll  %g1, %g2, %g1
                            
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +
 
400136a0:	c6 01 20 24 	ld  [ %g4 + 0x24 ], %g3
                       
400136a4:	85 30 e0 09 	srl  %g3, 9, %g2
                              
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
 
400136a8:	87 30 e0 05 	srl  %g3, 5, %g3
                              
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
 
400136ac:	82 00 80 01 	add  %g2, %g1, %g1
                            
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
 
400136b0:	86 08 e0 0f 	and  %g3, 0xf, %g3
                            
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +
 
400136b4:	83 28 60 04 	sll  %g1, 4, %g1
                              
400136b8:	82 00 40 03 	add  %g1, %g3, %g1
                            
        if ( (key1) == ck)
                                           
400136bc:	80 a7 40 01 	cmp  %i5, %g1
                                 
400136c0:	22 80 00 80 	be,a   400138c0 <fat_file_open+0x2d4>
         
400136c4:	c2 01 20 08 	ld  [ %g4 + 8 ], %g1
                          
        the_node = the_node->next;
                                   
400136c8:	c8 01 00 00 	ld  [ %g4 ], %g4
                              
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
         
400136cc:	80 a1 00 1c 	cmp  %g4, %i4
                                 
400136d0:	32 bf ff e8 	bne,a   40013670 <fat_file_open+0x84>
         
400136d4:	c2 01 20 20 	ld  [ %g4 + 0x20 ], %g1
                       
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);
      
400136d8:	de 06 20 78 	ld  [ %i0 + 0x78 ], %o7
                       
  return _Chain_Immutable_head( the_chain )->next;
                   
400136dc:	c8 03 c0 1b 	ld  [ %o7 + %i3 ], %g4
                        
400136e0:	9e 03 c0 1b 	add  %o7, %i3, %o7
                            
  return &the_chain->Tail.Node;
                                      
400136e4:	9e 03 e0 04 	add  %o7, 4, %o7
                              
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
         
400136e8:	80 a1 00 0f 	cmp  %g4, %o7
                                 
400136ec:	02 80 00 1e 	be  40013764 <fat_file_open+0x178>
            <== ALWAYS TAKEN
400136f0:	92 10 20 50 	mov  0x50, %o1
                                
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
 
400136f4:	c2 01 20 20 	ld  [ %g4 + 0x20 ], %g1
                       <== NOT EXECUTED
    if (cln == 1)
                                                    
400136f8:	80 a0 60 01 	cmp  %g1, 1
                                   <== NOT EXECUTED
400136fc:	02 80 00 0b 	be  40013728 <fat_file_open+0x13c>
            <== NOT EXECUTED
40013700:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40013704:	32 80 00 3f 	bne,a   40013800 <fat_file_open+0x214>
        <== NOT EXECUTED
40013708:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        <== NOT EXECUTED
4001370c:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     <== NOT EXECUTED
40013710:	80 88 a0 03 	btst  3, %g2
                                  <== NOT EXECUTED
40013714:	22 80 00 3b 	be,a   40013800 <fat_file_open+0x214>
         <== NOT EXECUTED
40013718:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;
                                
4001371c:	c2 06 20 28 	ld  [ %i0 + 0x28 ], %g1
                       <== NOT EXECUTED
            fs_info->vol.sec_mul);
                                   
40013720:	c4 0e 20 03 	ldub  [ %i0 + 3 ], %g2
                        <== NOT EXECUTED
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<
           
40013724:	83 28 40 02 	sll  %g1, %g2, %g1
                            <== NOT EXECUTED
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +
 
40013728:	c6 01 20 24 	ld  [ %g4 + 0x24 ], %g3
                       <== NOT EXECUTED
4001372c:	85 30 e0 09 	srl  %g3, 9, %g2
                              <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
 
40013730:	87 30 e0 05 	srl  %g3, 5, %g3
                              <== NOT EXECUTED
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +
 
40013734:	82 00 80 01 	add  %g2, %g1, %g1
                            <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );
 
40013738:	86 08 e0 0f 	and  %g3, 0xf, %g3
                            <== NOT EXECUTED
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +
 
4001373c:	83 28 60 04 	sll  %g1, 4, %g1
                              <== NOT EXECUTED
40013740:	82 00 40 03 	add  %g1, %g3, %g1
                            <== NOT EXECUTED
        if ( (key1) == ck)
                                           
40013744:	80 a7 40 01 	cmp  %i5, %g1
                                 <== NOT EXECUTED
40013748:	02 80 00 33 	be  40013814 <fat_file_open+0x228>
            <== NOT EXECUTED
4001374c:	80 a7 60 00 	cmp  %i5, 0
                                   <== NOT EXECUTED
        the_node = the_node->next;
                                   
40013750:	c8 01 00 00 	ld  [ %g4 ], %g4
                              <== NOT EXECUTED
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )
         
40013754:	80 a1 00 0f 	cmp  %g4, %o7
                                 <== NOT EXECUTED
40013758:	32 bf ff e8 	bne,a   400136f8 <fat_file_open+0x10c>
        <== NOT EXECUTED
4001375c:	c2 01 20 20 	ld  [ %g4 + 0x20 ], %g1
                       <== NOT EXECUTED
    lfat_fd = (*fat_fd) = (fat_file_fd_t*)calloc(1, sizeof(fat_file_fd_t));

40013760:	92 10 20 50 	mov  0x50, %o1
                                <== NOT EXECUTED
40013764:	7f ff c6 96 	call  400051bc <calloc>
                       
40013768:	90 10 20 01 	mov  1, %o0
                                   
4001376c:	d0 26 80 00 	st  %o0, [ %i2 ]
                              
    if ( lfat_fd == NULL )
                                           
40013770:	80 a2 20 00 	cmp  %o0, 0
                                   
40013774:	02 80 00 5a 	be  400138dc <fat_file_open+0x2f0>
            <== NEVER TAKEN
40013778:	a2 10 00 08 	mov  %o0, %l1
                                 
    lfat_fd->flags &= ~FAT_FILE_REMOVED;
                             
4001377c:	c2 0c 60 30 	ldub  [ %l1 + 0x30 ], %g1
                     
40013780:	82 08 7f fe 	and  %g1, -2, %g1
                             
40013784:	c2 2c 60 30 	stb  %g1, [ %l1 + 0x30 ]
                      
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
                     
40013788:	82 10 3f ff 	mov  -1, %g1
                                  
    lfat_fd->dir_pos = *dir_pos;
                                     
4001378c:	f6 06 40 00 	ld  [ %i1 ], %i3
                              
40013790:	c8 06 60 04 	ld  [ %i1 + 4 ], %g4
                          
40013794:	c6 06 60 08 	ld  [ %i1 + 8 ], %g3
                          
40013798:	c4 06 60 0c 	ld  [ %i1 + 0xc ], %g2
                        
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
                     
4001379c:	c2 24 60 3c 	st  %g1, [ %l1 + 0x3c ]
                       
    lfat_fd->links_num = 1;
                                          
400137a0:	b4 10 20 01 	mov  1, %i2
                                   
  old_last = tail->previous;
                                         
400137a4:	c2 04 20 08 	ld  [ %l0 + 8 ], %g1
                          
400137a8:	f4 24 60 08 	st  %i2, [ %l1 + 8 ]
                          
    lfat_fd->dir_pos = *dir_pos;
                                     
400137ac:	f6 24 60 20 	st  %i3, [ %l1 + 0x20 ]
                       
400137b0:	c8 24 60 24 	st  %g4, [ %l1 + 0x24 ]
                       
400137b4:	c6 24 60 28 	st  %g3, [ %l1 + 0x28 ]
                       
400137b8:	c4 24 60 2c 	st  %g2, [ %l1 + 0x2c ]
                       
        lfat_fd->ino = key;
                                          
400137bc:	fa 24 60 0c 	st  %i5, [ %l1 + 0xc ]
                        
  the_node->next = tail;
                                             
400137c0:	f8 24 40 00 	st  %i4, [ %l1 ]
                              
  tail->previous = the_node;
                                         
400137c4:	e2 24 20 08 	st  %l1, [ %l0 + 8 ]
                          
  old_last->next = the_node;
                                         
400137c8:	e2 20 40 00 	st  %l1, [ %g1 ]
                              
  the_node->previous = old_last;
                                     
400137cc:	c2 24 60 04 	st  %g1, [ %l1 + 4 ]
                          
}
                                                                    
400137d0:	81 c7 e0 08 	ret 
                                          
400137d4:	91 e8 20 00 	restore  %g0, 0, %o0
                          
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
400137d8:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       
400137dc:	82 00 7f fe 	add  %g1, -2, %g1
                             
400137e0:	83 28 40 03 	sll  %g1, %g3, %g1
                            
400137e4:	10 bf ff 8e 	b  4001361c <fat_file_open+0x30>
              
400137e8:	82 00 40 02 	add  %g1, %g2, %g1
                            
400137ec:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       
400137f0:	82 00 7f fe 	add  %g1, -2, %g1
                             
400137f4:	83 28 40 03 	sll  %g1, %g3, %g1
                            
400137f8:	10 bf ff a8 	b  40013698 <fat_file_open+0xac>
              
400137fc:	82 00 40 02 	add  %g1, %g2, %g1
                            
40013800:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       <== NOT EXECUTED
40013804:	82 00 7f fe 	add  %g1, -2, %g1
                             <== NOT EXECUTED
40013808:	83 28 40 03 	sll  %g1, %g3, %g1
                            <== NOT EXECUTED
4001380c:	10 bf ff c5 	b  40013720 <fat_file_open+0x134>
             <== NOT EXECUTED
40013810:	82 00 40 02 	add  %g1, %g2, %g1
                            <== NOT EXECUTED
            if ( ((key2) == 0) || ((key2) == ffd->ino) )
             
40013814:	02 80 00 07 	be  40013830 <fat_file_open+0x244>
            <== NOT EXECUTED
40013818:	92 10 20 50 	mov  0x50, %o1
                                <== NOT EXECUTED
4001381c:	c2 01 20 0c 	ld  [ %g4 + 0xc ], %g1
                        <== NOT EXECUTED
40013820:	80 a7 40 01 	cmp  %i5, %g1
                                 <== NOT EXECUTED
40013824:	32 bf ff cc 	bne,a   40013754 <fat_file_open+0x168>
        <== NOT EXECUTED
40013828:	c8 01 00 00 	ld  [ %g4 ], %g4
                              <== NOT EXECUTED
    lfat_fd = (*fat_fd) = (fat_file_fd_t*)calloc(1, sizeof(fat_file_fd_t));

4001382c:	92 10 20 50 	mov  0x50, %o1
                                <== NOT EXECUTED
40013830:	7f ff c6 63 	call  400051bc <calloc>
                       <== NOT EXECUTED
40013834:	90 10 20 01 	mov  1, %o0
                                   <== NOT EXECUTED
40013838:	d0 26 80 00 	st  %o0, [ %i2 ]
                              <== NOT EXECUTED
    if ( lfat_fd == NULL )
                                           
4001383c:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40013840:	02 80 00 27 	be  400138dc <fat_file_open+0x2f0>
            <== NOT EXECUTED
40013844:	a2 10 00 08 	mov  %o0, %l1
                                 <== NOT EXECUTED
    lfat_fd->flags &= ~FAT_FILE_REMOVED;
                             
40013848:	c2 0c 60 30 	ldub  [ %l1 + 0x30 ], %g1
                     <== NOT EXECUTED
4001384c:	82 08 7f fe 	and  %g1, -2, %g1
                             <== NOT EXECUTED
    lfat_fd->dir_pos = *dir_pos;
                                     
40013850:	fa 06 40 00 	ld  [ %i1 ], %i5
                              <== NOT EXECUTED
40013854:	c8 06 60 04 	ld  [ %i1 + 4 ], %g4
                          <== NOT EXECUTED
40013858:	c6 06 60 08 	ld  [ %i1 + 8 ], %g3
                          <== NOT EXECUTED
4001385c:	c4 06 60 0c 	ld  [ %i1 + 0xc ], %g2
                        <== NOT EXECUTED
    lfat_fd->flags &= ~FAT_FILE_REMOVED;
                             
40013860:	c2 2c 60 30 	stb  %g1, [ %l1 + 0x30 ]
                      <== NOT EXECUTED
    lfat_fd->links_num = 1;
                                          
40013864:	82 10 20 01 	mov  1, %g1
                                   <== NOT EXECUTED
    lfat_fd->dir_pos = *dir_pos;
                                     
40013868:	fa 24 60 20 	st  %i5, [ %l1 + 0x20 ]
                       <== NOT EXECUTED
        lfat_fd->ino = fat_get_unique_ino(fs_info);
                  
4001386c:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
    lfat_fd->links_num = 1;
                                          
40013870:	c2 24 60 08 	st  %g1, [ %l1 + 8 ]
                          <== NOT EXECUTED
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
                     
40013874:	82 10 3f ff 	mov  -1, %g1
                                  <== NOT EXECUTED
    lfat_fd->dir_pos = *dir_pos;
                                     
40013878:	c8 24 60 24 	st  %g4, [ %l1 + 0x24 ]
                       <== NOT EXECUTED
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
                     
4001387c:	c2 24 60 3c 	st  %g1, [ %l1 + 0x3c ]
                       <== NOT EXECUTED
    lfat_fd->dir_pos = *dir_pos;
                                     
40013880:	c6 24 60 28 	st  %g3, [ %l1 + 0x28 ]
                       <== NOT EXECUTED
        lfat_fd->ino = fat_get_unique_ino(fs_info);
                  
40013884:	40 00 07 46 	call  4001559c <fat_get_unique_ino>
           <== NOT EXECUTED
40013888:	c4 24 60 2c 	st  %g2, [ %l1 + 0x2c ]
                       <== NOT EXECUTED
        if ( lfat_fd->ino == 0 )
                                     
4001388c:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40013890:	02 80 00 11 	be  400138d4 <fat_file_open+0x2e8>
            <== NOT EXECUTED
40013894:	d0 24 60 0c 	st  %o0, [ %l1 + 0xc ]
                        <== NOT EXECUTED
40013898:	e0 06 20 74 	ld  [ %i0 + 0x74 ], %l0
                       <== NOT EXECUTED
4001389c:	a0 04 00 1b 	add  %l0, %i3, %l0
                            <== NOT EXECUTED
  old_last = tail->previous;
                                         
400138a0:	c2 04 20 08 	ld  [ %l0 + 8 ], %g1
                          <== NOT EXECUTED
400138a4:	b8 04 20 04 	add  %l0, 4, %i4
                              <== NOT EXECUTED
  the_node->next = tail;
                                             
400138a8:	f8 24 40 00 	st  %i4, [ %l1 ]
                              <== NOT EXECUTED
  tail->previous = the_node;
                                         
400138ac:	e2 24 20 08 	st  %l1, [ %l0 + 8 ]
                          <== NOT EXECUTED
  old_last->next = the_node;
                                         
400138b0:	e2 20 40 00 	st  %l1, [ %g1 ]
                              <== NOT EXECUTED
  the_node->previous = old_last;
                                     
400138b4:	c2 24 60 04 	st  %g1, [ %l1 + 4 ]
                          <== NOT EXECUTED
}
                                                                    
400138b8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400138bc:	91 e8 20 00 	restore  %g0, 0, %o0
                          <== NOT EXECUTED
        (*fat_fd) = lfat_fd;
                                         
400138c0:	c8 26 80 00 	st  %g4, [ %i2 ]
                              
        lfat_fd->links_num++;
                                        
400138c4:	82 00 60 01 	inc  %g1
                                      
400138c8:	c2 21 20 08 	st  %g1, [ %g4 + 8 ]
                          
        return rc;
                                                   
400138cc:	81 c7 e0 08 	ret 
                                          
400138d0:	91 e8 20 00 	restore  %g0, 0, %o0
                          
            free((*fat_fd));
                                         
400138d4:	7f ff c6 bf 	call  400053d0 <free>
                         <== NOT EXECUTED
400138d8:	d0 06 80 00 	ld  [ %i2 ], %o0
                              <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one( ENOMEM );
          
400138dc:	40 00 1e 18 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400138e0:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400138e4:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
400138e8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400138ec:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400138f0:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40013990 <fat_file_read>: {
40013990:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t       cur_cln = 0;
                                      
40013994:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
{
                                                                    
40013998:	ba 10 00 18 	mov  %i0, %i5
                                 
    if (count == 0)
                                                  
4001399c:	80 a6 e0 00 	cmp  %i3, 0
                                   
400139a0:	02 80 00 27 	be  40013a3c <fat_file_read+0xac>
             <== NEVER TAKEN
400139a4:	b0 10 20 00 	clr  %i0
                                      
    if ( start >= fat_fd->fat_file_size )
                            
400139a8:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
400139ac:	80 a0 40 1a 	cmp  %g1, %i2
                                 
400139b0:	08 80 00 23 	bleu  40013a3c <fat_file_read+0xac>
           
400139b4:	80 a0 40 1b 	cmp  %g1, %i3
                                 
    if ((count > fat_fd->fat_file_size) ||
                           
400139b8:	1a 80 00 5d 	bcc  40013b2c <fat_file_read+0x19c>
           
400139bc:	84 20 40 1b 	sub  %g1, %i3, %g2
                            
        count = fat_fd->fat_file_size - start;
                       
400139c0:	b6 20 40 1a 	sub  %g1, %i2, %i3
                            
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
                              
400139c4:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
400139c8:	80 a0 60 01 	cmp  %g1, 1
                                   
400139cc:	32 80 00 1e 	bne,a   40013a44 <fat_file_read+0xb4>
         
400139d0:	e4 0f 60 0c 	ldub  [ %i5 + 0xc ], %l2
                      
400139d4:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
400139d8:	80 a0 60 00 	cmp  %g1, 0
                                   
400139dc:	32 80 00 1a 	bne,a   40013a44 <fat_file_read+0xb4>
         <== NEVER TAKEN
400139e0:	e4 0f 60 0c 	ldub  [ %i5 + 0xc ], %l2
                      <== NOT EXECUTED
400139e4:	c2 0f 60 16 	ldub  [ %i5 + 0x16 ], %g1
                     
400139e8:	80 88 60 03 	btst  3, %g1
                                  
400139ec:	22 80 00 16 	be,a   40013a44 <fat_file_read+0xb4>
          
400139f0:	e4 0f 60 0c 	ldub  [ %i5 + 0xc ], %l2
                      
        sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);
   
400139f4:	c2 06 60 1c 	ld  [ %i1 + 0x1c ], %g1
                       
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

400139f8:	80 a0 60 00 	cmp  %g1, 0
                                   
400139fc:	32 80 00 5c 	bne,a   40013b6c <fat_file_read+0x1dc>
        <== NEVER TAKEN
40013a00:	c4 0f 60 05 	ldub  [ %i5 + 5 ], %g2
                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;
                                
40013a04:	c2 07 60 28 	ld  [ %i5 + 0x28 ], %g1
                       
        byte = start & (fs_info->vol.bps - 1);
                       
40013a08:	d4 17 40 00 	lduh  [ %i5 ], %o2
                            
        sec += (start >> fs_info->vol.sec_log2);
                     
40013a0c:	d2 0f 60 02 	ldub  [ %i5 + 2 ], %o1
                        
        byte = start & (fs_info->vol.bps - 1);
                       
40013a10:	94 02 bf ff 	add  %o2, -1, %o2
                             
        sec += (start >> fs_info->vol.sec_log2);
                     
40013a14:	93 36 80 09 	srl  %i2, %o1, %o1
                            
        ret = _fat_block_read(fs_info, sec, byte, count, buf);
       
40013a18:	98 10 00 1c 	mov  %i4, %o4
                                 
40013a1c:	96 10 00 1b 	mov  %i3, %o3
                                 
40013a20:	94 0a 80 1a 	and  %o2, %i2, %o2
                            
40013a24:	92 02 40 01 	add  %o1, %g1, %o1
                            
40013a28:	40 00 03 1c 	call  40014698 <_fat_block_read>
              
40013a2c:	90 10 00 1d 	mov  %i5, %o0
                                 
40013a30:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40013a34:	06 80 00 43 	bl  40013b40 <fat_file_read+0x1b0>
            <== NEVER TAKEN
40013a38:	01 00 00 00 	nop 
                                          
}
                                                                    
40013a3c:	81 c7 e0 08 	ret 
                                          
40013a40:	81 e8 00 00 	restore 
                                      
    cl_start = start >> fs_info->vol.bpc_log2;
                       
40013a44:	a5 36 80 12 	srl  %i2, %l2, %l2
                            
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);
                 
40013a48:	e0 07 60 08 	ld  [ %i5 + 8 ], %l0
                          
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
        
40013a4c:	94 10 00 12 	mov  %l2, %o2
                                 
40013a50:	96 07 bf fc 	add  %fp, -4, %o3
                             
40013a54:	92 10 00 19 	mov  %i1, %o1
                                 
40013a58:	7f ff fe be 	call  40013550 <fat_file_lseek>
               
40013a5c:	90 10 00 1d 	mov  %i5, %o0
                                 
    if (rc != RC_OK)
                                                 
40013a60:	b0 92 60 00 	orcc  %o1, 0, %i0
                             
40013a64:	12 bf ff f6 	bne  40013a3c <fat_file_read+0xac>
            <== NEVER TAKEN
40013a68:	a0 04 3f ff 	add  %l0, -1, %l0
                             
    uint32_t       cmpltd = 0;
                                       
40013a6c:	a2 10 20 00 	clr  %l1
                                      
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);
                 
40013a70:	b4 0c 00 1a 	and  %l0, %i2, %i2
                            
40013a74:	10 80 00 1f 	b  40013af0 <fat_file_read+0x160>
             
40013a78:	84 10 00 1a 	mov  %i2, %g2
                                 
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40013a7c:	80 88 e0 03 	btst  3, %g3
                                  <== NOT EXECUTED
40013a80:	22 80 00 26 	be,a   40013b18 <fat_file_read+0x188>
         <== NOT EXECUTED
40013a84:	c6 0f 60 05 	ldub  [ %i5 + 5 ], %g3
                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;
                                
40013a88:	c2 07 60 28 	ld  [ %i5 + 0x28 ], %g1
                       <== NOT EXECUTED
        byte = ofs & (fs_info->vol.bps - 1);
                         
40013a8c:	d4 17 40 00 	lduh  [ %i5 ], %o2
                            
        sec += (ofs >> fs_info->vol.sec_log2);
                       
40013a90:	d2 0f 60 02 	ldub  [ %i5 + 2 ], %o1
                        
40013a94:	93 30 80 09 	srl  %g2, %o1, %o1
                            
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
  
40013a98:	98 07 00 11 	add  %i4, %l1, %o4
                            
        byte = ofs & (fs_info->vol.bps - 1);
                         
40013a9c:	94 02 bf ff 	add  %o2, -1, %o2
                             
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);
  
40013aa0:	96 10 00 10 	mov  %l0, %o3
                                 
40013aa4:	94 0a 80 02 	and  %o2, %g2, %o2
                            
40013aa8:	92 02 40 01 	add  %o1, %g1, %o1
                            
40013aac:	40 00 02 fb 	call  40014698 <_fat_block_read>
              
40013ab0:	90 10 00 1d 	mov  %i5, %o0
                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
        
40013ab4:	94 07 bf fc 	add  %fp, -4, %o2
                             
        if ( ret < 0 )
                                               
40013ab8:	80 a2 20 00 	cmp  %o0, 0
                                   
40013abc:	06 80 00 21 	bl  40013b40 <fat_file_read+0x1b0>
            <== NEVER TAKEN
40013ac0:	90 10 00 1d 	mov  %i5, %o0
                                 
        save_cln = cur_cln;
                                          
40013ac4:	e6 07 bf fc 	ld  [ %fp + -4 ], %l3
                         
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
        
40013ac8:	92 10 00 13 	mov  %l3, %o1
                                 
40013acc:	7f ff fc df 	call  40012e48 <fat_get_fat_cluster>
          
40013ad0:	b6 26 c0 10 	sub  %i3, %l0, %i3
                            
        cmpltd += c;
                                                 
40013ad4:	a2 04 40 10 	add  %l1, %l0, %l1
                            
        if ( rc != RC_OK )
                                           
40013ad8:	80 a2 20 00 	cmp  %o0, 0
                                   
40013adc:	12 bf ff d8 	bne  40013a3c <fat_file_read+0xac>
            <== NEVER TAKEN
40013ae0:	b0 10 00 08 	mov  %o0, %i0
                                 
    while (count > 0)
                                                
40013ae4:	80 a6 e0 00 	cmp  %i3, 0
                                   
40013ae8:	02 80 00 18 	be  40013b48 <fat_file_read+0x1b8>
            
40013aec:	84 10 20 00 	clr  %g2
                                      
        c = MIN(count, (fs_info->vol.bpc - ofs));
                    
40013af0:	e0 07 60 08 	ld  [ %i5 + 8 ], %l0
                          
40013af4:	a0 24 00 02 	sub  %l0, %g2, %l0
                            
40013af8:	80 a4 00 1b 	cmp  %l0, %i3
                                 
40013afc:	38 80 00 02 	bgu,a   40013b04 <fat_file_read+0x174>
        
40013b00:	a0 10 00 1b 	mov  %i3, %l0
                                 
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);
       
40013b04:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40013b08:	80 a0 60 00 	cmp  %g1, 0
                                   
40013b0c:	22 bf ff dc 	be,a   40013a7c <fat_file_read+0xec>
          <== NEVER TAKEN
40013b10:	c6 0f 60 16 	ldub  [ %i5 + 0x16 ], %g3
                     <== NOT EXECUTED
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
40013b14:	c6 0f 60 05 	ldub  [ %i5 + 5 ], %g3
                        
40013b18:	d2 07 60 3c 	ld  [ %i5 + 0x3c ], %o1
                       
40013b1c:	82 00 7f fe 	add  %g1, -2, %g1
                             
40013b20:	83 28 40 03 	sll  %g1, %g3, %g1
                            
40013b24:	10 bf ff da 	b  40013a8c <fat_file_read+0xfc>
              
40013b28:	82 00 40 09 	add  %g1, %o1, %g1
                            
    if ((count > fat_fd->fat_file_size) ||
                           
40013b2c:	80 a0 80 1a 	cmp  %g2, %i2
                                 
40013b30:	3a bf ff a6 	bcc,a   400139c8 <fat_file_read+0x38>
         
40013b34:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40013b38:	10 bf ff a3 	b  400139c4 <fat_file_read+0x34>
              
40013b3c:	b6 20 40 1a 	sub  %g1, %i2, %i3
                            
}
                                                                    
40013b40:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013b44:	91 e8 3f ff 	restore  %g0, -1, %o0
                         <== NOT EXECUTED
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);

40013b48:	c4 0f 60 0c 	ldub  [ %i5 + 0xc ], %g2
                      
40013b4c:	82 06 bf ff 	add  %i2, -1, %g1
                             
    fat_fd->map.disk_cln = save_cln;
                                 
40013b50:	e6 26 60 38 	st  %l3, [ %i1 + 0x38 ]
                       
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);

40013b54:	82 00 40 11 	add  %g1, %l1, %g1
                            
40013b58:	83 30 40 02 	srl  %g1, %g2, %g1
                            
    fat_fd->map.file_cln = cl_start +
                                
40013b5c:	a4 00 40 12 	add  %g1, %l2, %l2
                            
40013b60:	e4 26 60 34 	st  %l2, [ %i1 + 0x34 ]
                       
    return cmpltd;
                                                   
40013b64:	81 c7 e0 08 	ret 
                                          
40013b68:	91 e8 00 11 	restore  %g0, %l1, %o0
                        
40013b6c:	d2 07 60 3c 	ld  [ %i5 + 0x3c ], %o1
                       <== NOT EXECUTED
40013b70:	82 00 7f fe 	add  %g1, -2, %g1
                             <== NOT EXECUTED
40013b74:	83 28 40 02 	sll  %g1, %g2, %g1
                            <== NOT EXECUTED
40013b78:	10 bf ff a4 	b  40013a08 <fat_file_read+0x78>
              <== NOT EXECUTED
40013b7c:	82 00 40 09 	add  %g1, %o1, %g1
                            <== NOT EXECUTED

                                                                     

40014314 <fat_file_size>: {
40014314:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t       cur_cln = fat_fd->cln;
                            
40014318:	f8 06 60 1c 	ld  [ %i1 + 0x1c ], %i4
                       
4001431c:	f8 27 bf fc 	st  %i4, [ %fp + -4 ]
                         
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
                              
40014320:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40014324:	80 a0 60 01 	cmp  %g1, 1
                                   
40014328:	22 80 00 22 	be,a   400143b0 <fat_file_size+0x9c>
          
4001432c:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
    fat_fd->fat_file_size = 0;
                                       
40014330:	c0 26 60 18 	clr  [ %i1 + 0x18 ]
                           
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
40014334:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       
40014338:	c4 06 20 1c 	ld  [ %i0 + 0x1c ], %g2
                       
4001433c:	82 0f 00 01 	and  %i4, %g1, %g1
                            
40014340:	80 a0 80 01 	cmp  %g2, %g1
                                 
40014344:	18 80 00 0f 	bgu  40014380 <fat_file_size+0x6c>
            <== ALWAYS TAKEN
40014348:	92 10 00 1c 	mov  %i4, %o1
                                 
    uint32_t       save_cln = 0;
                                     
4001434c:	10 80 00 15 	b  400143a0 <fat_file_size+0x8c>
              <== NOT EXECUTED
40014350:	b8 10 20 00 	clr  %i4
                                      <== NOT EXECUTED
        fat_fd->fat_file_size += fs_info->vol.bpc;
                   
40014354:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
40014358:	82 00 40 02 	add  %g1, %g2, %g1
                            
4001435c:	c2 26 60 18 	st  %g1, [ %i1 + 0x18 ]
                       
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
40014360:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
40014364:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       
40014368:	c6 06 20 1c 	ld  [ %i0 + 0x1c ], %g3
                       
4001436c:	82 08 80 01 	and  %g2, %g1, %g1
                            
40014370:	80 a0 40 03 	cmp  %g1, %g3
                                 
40014374:	1a 80 00 0b 	bcc  400143a0 <fat_file_size+0x8c>
            
40014378:	92 10 00 02 	mov  %g2, %o1
                                 
4001437c:	b8 10 00 02 	mov  %g2, %i4
                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
        
40014380:	94 07 bf fc 	add  %fp, -4, %o2
                             
40014384:	7f ff fa b1 	call  40012e48 <fat_get_fat_cluster>
          
40014388:	90 10 00 18 	mov  %i0, %o0
                                 
        if ( rc != RC_OK )
                                           
4001438c:	80 a2 20 00 	cmp  %o0, 0
                                   
40014390:	22 bf ff f1 	be,a   40014354 <fat_file_size+0x40>
          <== ALWAYS TAKEN
40014394:	c4 06 20 08 	ld  [ %i0 + 8 ], %g2
                          
}
                                                                    
40014398:	81 c7 e0 08 	ret 
                                          
4001439c:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    return rc;
                                                       
400143a0:	90 10 20 00 	clr  %o0
                                      
    fat_fd->map.last_cln = save_cln;
                                 
400143a4:	f8 26 60 3c 	st  %i4, [ %i1 + 0x3c ]
                       
}
                                                                    
400143a8:	81 c7 e0 08 	ret 
                                          
400143ac:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&
                              
400143b0:	80 a0 60 00 	cmp  %g1, 0
                                   
400143b4:	32 bf ff e0 	bne,a   40014334 <fat_file_size+0x20>
         <== NEVER TAKEN
400143b8:	c0 26 60 18 	clr  [ %i1 + 0x18 ]
                           <== NOT EXECUTED
400143bc:	c2 0e 20 16 	ldub  [ %i0 + 0x16 ], %g1
                     
400143c0:	80 88 60 03 	btst  3, %g1
                                  
400143c4:	22 bf ff dc 	be,a   40014334 <fat_file_size+0x20>
          
400143c8:	c0 26 60 18 	clr  [ %i1 + 0x18 ]
                           
        fat_fd->fat_file_size = fs_info->vol.rdir_size;
              
400143cc:	c2 06 20 34 	ld  [ %i0 + 0x34 ], %g1
                       
400143d0:	c2 26 60 18 	st  %g1, [ %i1 + 0x18 ]
                       
        return rc;
                                                   
400143d4:	10 bf ff f1 	b  40014398 <fat_file_size+0x84>
              
400143d8:	90 10 20 00 	clr  %o0
                                      

                                                                     

40013b80 <fat_file_truncate>: {
40013b80:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;
               
40013b84:	82 10 3f ff 	mov  -1, %g1
                                  
    uint32_t       cur_cln = 0;
                                      
40013b88:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;
               
40013b8c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    if ( new_length >= fat_fd->fat_file_size )
                       
40013b90:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
40013b94:	80 a0 40 1a 	cmp  %g1, %i2
                                 
40013b98:	08 80 00 32 	bleu  40013c60 <fat_file_truncate+0xe0>
       
40013b9c:	80 a0 60 00 	cmp  %g1, 0
                                   
    assert(fat_fd->fat_file_size);
                                   
40013ba0:	02 80 00 33 	be  40013c6c <fat_file_truncate+0xec>
         <== NEVER TAKEN
40013ba4:	17 10 00 a8 	sethi  %hi(0x4002a000), %o3
                   
    cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;

40013ba8:	c4 0e 20 0c 	ldub  [ %i0 + 0xc ], %g2
                      
40013bac:	c6 06 20 08 	ld  [ %i0 + 8 ], %g3
                          
40013bb0:	b4 06 80 03 	add  %i2, %g3, %i2
                            
40013bb4:	b4 06 bf ff 	add  %i2, -1, %i2
                             
40013bb8:	b5 36 80 02 	srl  %i2, %g2, %i2
                            
    if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size)

40013bbc:	85 2e 80 02 	sll  %i2, %g2, %g2
                            
40013bc0:	80 a0 40 02 	cmp  %g1, %g2
                                 
40013bc4:	08 80 00 27 	bleu  40013c60 <fat_file_truncate+0xe0>
       
40013bc8:	80 a6 a0 00 	cmp  %i2, 0
                                   
    if (cl_start != 0)
                                               
40013bcc:	02 80 00 0a 	be  40013bf4 <fat_file_truncate+0x74>
         
40013bd0:	96 07 bf f8 	add  %fp, -8, %o3
                             
        rc = fat_file_lseek(fs_info, fat_fd, cl_start - 1, &new_last_cln);

40013bd4:	96 07 bf fc 	add  %fp, -4, %o3
                             
40013bd8:	94 06 bf ff 	add  %i2, -1, %o2
                             
40013bdc:	92 10 00 19 	mov  %i1, %o1
                                 
40013be0:	7f ff fe 5c 	call  40013550 <fat_file_lseek>
               
40013be4:	90 10 00 18 	mov  %i0, %o0
                                 
        if (rc != RC_OK)
                                             
40013be8:	80 a2 60 00 	cmp  %o1, 0
                                   
40013bec:	12 80 00 1e 	bne  40013c64 <fat_file_truncate+0xe4>
        <== NEVER TAKEN
40013bf0:	96 07 bf f8 	add  %fp, -8, %o3
                             
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);
        
40013bf4:	94 10 00 1a 	mov  %i2, %o2
                                 
40013bf8:	92 10 00 19 	mov  %i1, %o1
                                 
40013bfc:	7f ff fe 55 	call  40013550 <fat_file_lseek>
               
40013c00:	90 10 00 18 	mov  %i0, %o0
                                 
    if (rc != RC_OK)
                                                 
40013c04:	80 a2 60 00 	cmp  %o1, 0
                                   
40013c08:	12 80 00 17 	bne  40013c64 <fat_file_truncate+0xe4>
        <== NEVER TAKEN
40013c0c:	01 00 00 00 	nop 
                                          
    rc = fat_free_fat_clusters_chain(fs_info, cur_cln);
              
40013c10:	d2 07 bf f8 	ld  [ %fp + -8 ], %o1
                         
40013c14:	7f ff fd a2 	call  4001329c <fat_free_fat_clusters_chain>
  
40013c18:	90 10 00 18 	mov  %i0, %o0
                                 
    if (rc != RC_OK)
                                                 
40013c1c:	92 92 20 00 	orcc  %o0, 0, %o1
                             
40013c20:	12 80 00 11 	bne  40013c64 <fat_file_truncate+0xe4>
        <== NEVER TAKEN
40013c24:	80 a6 a0 00 	cmp  %i2, 0
                                   
    if (cl_start != 0)
                                               
40013c28:	02 80 00 0f 	be  40013c64 <fat_file_truncate+0xe4>
         
40013c2c:	92 10 20 00 	clr  %o1
                                      
        rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);

40013c30:	d2 07 bf fc 	ld  [ %fp + -4 ], %o1
                         
40013c34:	94 10 3f ff 	mov  -1, %o2
                                  
40013c38:	7f ff fc f7 	call  40013014 <fat_set_fat_cluster>
          
40013c3c:	90 10 00 18 	mov  %i0, %o0
                                 
        if ( rc != RC_OK )
                                           
40013c40:	92 92 20 00 	orcc  %o0, 0, %o1
                             
40013c44:	12 80 00 08 	bne  40013c64 <fat_file_truncate+0xe4>
        <== NEVER TAKEN
40013c48:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
        fat_fd->map.file_cln = cl_start - 1;
                         
40013c4c:	b4 06 bf ff 	add  %i2, -1, %i2
                             
        fat_fd->map.disk_cln = new_last_cln;
                         
40013c50:	c2 26 60 38 	st  %g1, [ %i1 + 0x38 ]
                       
        fat_fd->map.file_cln = cl_start - 1;
                         
40013c54:	f4 26 60 34 	st  %i2, [ %i1 + 0x34 ]
                       
        fat_fd->map.last_cln = new_last_cln;
                         
40013c58:	10 80 00 03 	b  40013c64 <fat_file_truncate+0xe4>
          
40013c5c:	c2 26 60 3c 	st  %g1, [ %i1 + 0x3c ]
                       
        return rc;
                                                   
40013c60:	92 10 20 00 	clr  %o1
                                      
}
                                                                    
40013c64:	81 c7 e0 08 	ret 
                                          
40013c68:	91 e8 00 09 	restore  %g0, %o1, %o0
                        
    assert(fat_fd->fat_file_size);
                                   
40013c6c:	15 10 00 a8 	sethi  %hi(0x4002a000), %o2
                   <== NOT EXECUTED
40013c70:	11 10 00 a8 	sethi  %hi(0x4002a000), %o0
                   <== NOT EXECUTED
40013c74:	96 12 e2 00 	or  %o3, 0x200, %o3
                           <== NOT EXECUTED
40013c78:	94 12 a2 78 	or  %o2, 0x278, %o2
                           <== NOT EXECUTED
40013c7c:	92 10 22 e3 	mov  0x2e3, %o1
                               <== NOT EXECUTED
40013c80:	40 00 07 07 	call  4001589c <__assert_func>
                <== NOT EXECUTED
40013c84:	90 12 22 18 	or  %o0, 0x218, %o0
                           <== NOT EXECUTED
40013c88:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4001390c <fat_file_update>: {
4001390c:	9d e3 bf a0 	save  %sp, -96, %sp
                           
40013910:	c2 0e 60 30 	ldub  [ %i1 + 0x30 ], %g1
                     
    if (!FAT_FILE_IS_REMOVED(fat_fd) &&
                              
40013914:	80 88 60 01 	btst  1, %g1
                                  
40013918:	12 80 00 1c 	bne  40013988 <fat_file_update+0x7c>
          
4001391c:	ba 10 20 00 	clr  %i5
                                      
40013920:	80 88 60 02 	btst  2, %g1
                                  
40013924:	02 80 00 19 	be  40013988 <fat_file_update+0x7c>
           
40013928:	01 00 00 00 	nop 
                                          
        FAT_FILE_HAS_META_DATA_CHANGED(fat_fd) &&
                    
4001392c:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40013930:	80 a0 60 01 	cmp  %g1, 1
                                   
40013934:	12 80 00 06 	bne  4001394c <fat_file_update+0x40>
          
40013938:	92 10 00 19 	mov  %i1, %o1
                                 
        !FAT_FD_OF_ROOT_DIR(fat_fd))
                                 
4001393c:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
40013940:	80 a0 60 00 	cmp  %g1, 0
                                   
40013944:	02 80 00 11 	be  40013988 <fat_file_update+0x7c>
           <== ALWAYS TAKEN
40013948:	01 00 00 00 	nop 
                                          
        rc = fat_file_write_first_cluster_num(fs_info, fat_fd);
      
4001394c:	40 00 13 30 	call  4001860c <fat_file_write_first_cluster_num>

40013950:	90 10 00 18 	mov  %i0, %o0
                                 
        rc = fat_file_write_file_size(fs_info, fat_fd);
              
40013954:	92 10 00 19 	mov  %i1, %o1
                                 
        rc = fat_file_write_first_cluster_num(fs_info, fat_fd);
      
40013958:	ba 10 00 08 	mov  %o0, %i5
                                 
        rc = fat_file_write_file_size(fs_info, fat_fd);
              
4001395c:	40 00 13 5d 	call  400186d0 <fat_file_write_file_size>
     
40013960:	90 10 00 18 	mov  %i0, %o0
                                 
        if (rc != RC_OK)
                                             
40013964:	80 a2 20 00 	cmp  %o0, 0
                                   
40013968:	32 80 00 02 	bne,a   40013970 <fat_file_update+0x64>
       <== NEVER TAKEN
4001396c:	ba 10 00 08 	mov  %o0, %i5
                                 <== NOT EXECUTED
        rc = fat_file_write_time_and_date(fs_info, fat_fd);
          
40013970:	92 10 00 19 	mov  %i1, %o1
                                 
40013974:	40 00 12 c5 	call  40018488 <fat_file_write_time_and_date>
 
40013978:	90 10 00 18 	mov  %i0, %o0
                                 
        if (rc != RC_OK)
                                             
4001397c:	80 a2 20 00 	cmp  %o0, 0
                                   
40013980:	32 80 00 02 	bne,a   40013988 <fat_file_update+0x7c>
       <== NEVER TAKEN
40013984:	ba 10 00 08 	mov  %o0, %i5
                                 <== NOT EXECUTED
}
                                                                    
40013988:	81 c7 e0 08 	ret 
                                          
4001398c:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        

                                                                     

400140a4 <fat_file_write>: {
400140a4:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t       c = 0;
                                            
400140a8:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
    if ( count == 0 )
                                                
400140ac:	80 a6 e0 00 	cmp  %i3, 0
                                   
400140b0:	02 80 00 4c 	be  400141e0 <fat_file_write+0x13c>
           <== NEVER TAKEN
400140b4:	92 10 20 00 	clr  %o1
                                      
    if (start >= fat_fd->size_limit)
                                 
400140b8:	fa 06 60 14 	ld  [ %i1 + 0x14 ], %i5
                       
400140bc:	80 a7 40 1a 	cmp  %i5, %i2
                                 
400140c0:	08 80 00 43 	bleu  400141cc <fat_file_write+0x128>
         <== NEVER TAKEN
400140c4:	ba 27 40 1a 	sub  %i5, %i2, %i5
                            
400140c8:	80 a7 40 1b 	cmp  %i5, %i3
                                 
    bool           zero_fill = start > fat_fd->fat_file_size;
        
400140cc:	18 80 00 47 	bgu  400141e8 <fat_file_write+0x144>
          <== ALWAYS TAKEN
400140d0:	c2 06 60 18 	ld  [ %i1 + 0x18 ], %g1
                       
400140d4:	80 a0 40 1a 	cmp  %g1, %i2
                                 <== NOT EXECUTED
    rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);

400140d8:	92 10 00 19 	mov  %i1, %o1
                                 <== NOT EXECUTED
400140dc:	94 40 20 00 	addx  %g0, 0, %o2
                             <== NOT EXECUTED
400140e0:	b6 06 80 1d 	add  %i2, %i5, %i3
                            <== NOT EXECUTED
400140e4:	98 07 bf f8 	add  %fp, -8, %o4
                             <== NOT EXECUTED
400140e8:	96 10 00 1b 	mov  %i3, %o3
                                 <== NOT EXECUTED
400140ec:	7f ff ff 52 	call  40013e34 <fat_file_extend>
              <== NOT EXECUTED
400140f0:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
    if (RC_OK == rc)
                                                 
400140f4:	92 92 20 00 	orcc  %o0, 0, %o1
                             <== NOT EXECUTED
400140f8:	12 80 00 3a 	bne  400141e0 <fat_file_write+0x13c>
          <== NOT EXECUTED
400140fc:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         <== NOT EXECUTED
        if (c != (start + count))
                                    
40014100:	80 a6 c0 01 	cmp  %i3, %g1
                                 <== NOT EXECUTED
40014104:	32 80 00 02 	bne,a   4001410c <fat_file_write+0x68>
        
40014108:	ba 20 40 1a 	sub  %g1, %i2, %i5
                            
4001410c:	f6 0e 20 0c 	ldub  [ %i0 + 0xc ], %i3
                      
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));

40014110:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40014114:	80 a0 60 01 	cmp  %g1, 1
                                   
40014118:	02 80 00 51 	be  4001425c <fat_file_write+0x1b8>
           
4001411c:	a1 36 80 1b 	srl  %i2, %i3, %l0
                            
    uint32_t       cur_cln = 0;
                                      
40014120:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);
       
40014124:	94 10 00 10 	mov  %l0, %o2
                                 
40014128:	96 07 bf fc 	add  %fp, -4, %o3
                             
4001412c:	92 10 00 19 	mov  %i1, %o1
                                 
40014130:	7f ff fd 08 	call  40013550 <fat_file_lseek>
               
40014134:	90 10 00 18 	mov  %i0, %o0
                                 
    if (RC_OK == rc)
                                                 
40014138:	80 a2 60 00 	cmp  %o1, 0
                                   
4001413c:	12 80 00 44 	bne  4001424c <fat_file_write+0x1a8>
          <== NEVER TAKEN
40014140:	b7 2c 00 1b 	sll  %l0, %i3, %i3
                            
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */

40014144:	a4 10 20 00 	clr  %l2
                                      
    uint32_t       ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);

40014148:	b4 26 80 1b 	sub  %i2, %i3, %i2
                            
    uint32_t       cmpltd = 0;
                                       
4001414c:	a2 10 20 00 	clr  %l1
                                      
    uint32_t       ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);

40014150:	b6 10 00 1a 	mov  %i2, %i3
                                 
            ret = fat_cluster_write(fs_info,
                         
40014154:	94 10 00 1b 	mov  %i3, %o2
                                 
        while (   (RC_OK == rc)
                                      
40014158:	80 a2 60 00 	cmp  %o1, 0
                                   
4001415c:	12 80 00 31 	bne  40014220 <fat_file_write+0x17c>
          <== NEVER TAKEN
40014160:	90 10 00 18 	mov  %i0, %o0
                                 
40014164:	80 a7 60 00 	cmp  %i5, 0
                                   
40014168:	22 80 00 2f 	be,a   40014224 <fat_file_write+0x180>
        
4001416c:	c2 0e 20 0c 	ldub  [ %i0 + 0xc ], %g1
                      
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));
   
40014170:	d6 06 20 08 	ld  [ %i0 + 8 ], %o3
                          
40014174:	96 22 c0 1b 	sub  %o3, %i3, %o3
                            
40014178:	80 a2 c0 1d 	cmp  %o3, %i5
                                 
4001417c:	08 80 00 03 	bleu  40014188 <fat_file_write+0xe4>
          
40014180:	98 07 00 11 	add  %i4, %l1, %o4
                            
40014184:	96 10 00 1d 	mov  %i5, %o3
                                 
            ret = fat_cluster_write(fs_info,
                         
40014188:	40 00 01 ea 	call  40014930 <fat_cluster_write>
            
4001418c:	d2 07 bf fc 	ld  [ %fp + -4 ], %o1
                         
            if (0 > ret)
                                             
40014190:	80 a2 20 00 	cmp  %o0, 0
                                   
40014194:	06 bf ff f0 	bl  40014154 <fat_file_write+0xb0>
            <== NEVER TAKEN
40014198:	92 10 3f ff 	mov  -1, %o1
                                  
                save_cln = cur_cln;
                                  
4001419c:	e4 07 bf fc 	ld  [ %fp + -4 ], %l2
                         
                cmpltd += ret;
                                       
400141a0:	a2 04 40 08 	add  %l1, %o0, %l1
                            
                if (0 < bytes_to_write)
                              
400141a4:	92 10 20 00 	clr  %o1
                                      
400141a8:	ba a7 40 08 	subcc  %i5, %o0, %i5
                          
400141ac:	02 bf ff ea 	be  40014154 <fat_file_write+0xb0>
            
400141b0:	b6 10 20 00 	clr  %i3
                                      
                  rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);

400141b4:	92 10 00 12 	mov  %l2, %o1
                                 
400141b8:	94 07 bf fc 	add  %fp, -4, %o2
                             
400141bc:	7f ff fb 23 	call  40012e48 <fat_get_fat_cluster>
          
400141c0:	90 10 00 18 	mov  %i0, %o0
                                 
400141c4:	10 bf ff e4 	b  40014154 <fat_file_write+0xb0>
             
400141c8:	92 10 00 08 	mov  %o0, %o1
                                 
        rtems_set_errno_and_return_minus_one(EFBIG);
                 
400141cc:	40 00 1b dc 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400141d0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
400141d4:	82 10 20 1b 	mov  0x1b, %g1	! 1b <_TLS_Alignment+0x1a>
     <== NOT EXECUTED
400141d8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400141dc:	92 10 3f ff 	mov  -1, %o1
                                  <== NOT EXECUTED
}
                                                                    
400141e0:	81 c7 e0 08 	ret 
                                          
400141e4:	91 e8 00 09 	restore  %g0, %o1, %o0
                        
    bool           zero_fill = start > fat_fd->fat_file_size;
        
400141e8:	80 a0 40 1a 	cmp  %g1, %i2
                                 
    rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);

400141ec:	92 10 00 19 	mov  %i1, %o1
                                 
400141f0:	94 40 20 00 	addx  %g0, 0, %o2
                             
400141f4:	ba 10 00 1b 	mov  %i3, %i5
                                 
400141f8:	98 07 bf f8 	add  %fp, -8, %o4
                             
400141fc:	b6 06 80 1d 	add  %i2, %i5, %i3
                            
40014200:	90 10 00 18 	mov  %i0, %o0
                                 
40014204:	7f ff ff 0c 	call  40013e34 <fat_file_extend>
              
40014208:	96 10 00 1b 	mov  %i3, %o3
                                 
    if (RC_OK == rc)
                                                 
4001420c:	92 92 20 00 	orcc  %o0, 0, %o1
                             
40014210:	12 bf ff f4 	bne  400141e0 <fat_file_write+0x13c>
          
40014214:	c2 07 bf f8 	ld  [ %fp + -8 ], %g1
                         
        if (c != (start + count))
                                    
40014218:	10 bf ff bb 	b  40014104 <fat_file_write+0x60>
             
4001421c:	80 a6 c0 01 	cmp  %i3, %g1
                                 
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);

40014220:	c2 0e 20 0c 	ldub  [ %i0 + 0xc ], %g1
                      <== NOT EXECUTED
40014224:	b4 06 bf ff 	add  %i2, -1, %i2
                             
        fat_fd->map.disk_cln = save_cln;
                             
40014228:	e4 26 60 38 	st  %l2, [ %i1 + 0x38 ]
                       
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);

4001422c:	b4 06 80 11 	add  %i2, %l1, %i2
                            
40014230:	b5 36 80 01 	srl  %i2, %g1, %i2
                            
        fat_fd->map.file_cln = start_cln +
                           
40014234:	a0 06 80 10 	add  %i2, %l0, %l0
                            
    if (RC_OK != rc)
                                                 
40014238:	80 a2 60 00 	cmp  %o1, 0
                                   
4001423c:	12 80 00 04 	bne  4001424c <fat_file_write+0x1a8>
          <== NEVER TAKEN
40014240:	e0 26 60 34 	st  %l0, [ %i1 + 0x34 ]
                       
      return cmpltd;
                                                 
40014244:	92 10 00 11 	mov  %l1, %o1
                                 
            if (0 > ret)
                                             
40014248:	80 a2 60 00 	cmp  %o1, 0
                                   
4001424c:	16 bf ff e5 	bge  400141e0 <fat_file_write+0x13c>
          <== ALWAYS TAKEN
40014250:	01 00 00 00 	nop 
                                          
              rc = -1;
                                               
40014254:	10 bf ff e3 	b  400141e0 <fat_file_write+0x13c>
            <== NOT EXECUTED
40014258:	92 10 3f ff 	mov  -1, %o1	! ffffffff <RAM_END+0xbfbfffff>
  <== NOT EXECUTED
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));

4001425c:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
40014260:	80 a0 60 00 	cmp  %g1, 0
                                   
40014264:	32 bf ff b0 	bne,a   40014124 <fat_file_write+0x80>
        <== NEVER TAKEN
40014268:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             <== NOT EXECUTED
4001426c:	c2 0e 20 16 	ldub  [ %i0 + 0x16 ], %g1
                     
40014270:	80 88 60 03 	btst  3, %g1
                                  
40014274:	22 bf ff ac 	be,a   40014124 <fat_file_write+0x80>
         
40014278:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
            cln = fat_fd->cln;
                                       
4001427c:	d2 06 60 1c 	ld  [ %i1 + 0x1c ], %o1
                       
            byte = start & (fs_info->vol.bpc -1);
                    
40014280:	d4 06 20 08 	ld  [ %i0 + 8 ], %o2
                          
            ret = fat_cluster_write(fs_info,
                         
40014284:	92 02 40 10 	add  %o1, %l0, %o1
                            
            byte = start & (fs_info->vol.bpc -1);
                    
40014288:	94 02 bf ff 	add  %o2, -1, %o2
                             
            ret = fat_cluster_write(fs_info,
                         
4001428c:	98 10 00 1c 	mov  %i4, %o4
                                 
40014290:	96 10 00 1d 	mov  %i5, %o3
                                 
40014294:	94 0a 80 1a 	and  %o2, %i2, %o2
                            
40014298:	40 00 01 a6 	call  40014930 <fat_cluster_write>
            
4001429c:	90 10 00 18 	mov  %i0, %o0
                                 
            if (0 > ret)
                                             
400142a0:	80 a2 20 00 	cmp  %o0, 0
                                   
400142a4:	06 bf ff ec 	bl  40014254 <fat_file_write+0x1b0>
           <== NEVER TAKEN
400142a8:	92 10 00 08 	mov  %o0, %o1
                                 
}
                                                                    
400142ac:	81 c7 e0 08 	ret 
                                          
400142b0:	91 e8 00 09 	restore  %g0, %o1, %o0
                        

                                                                     

400186d0 <fat_file_write_file_size>: {
400186d0:	9d e3 bf 90 	save  %sp, -112, %sp
                          
    uint32_t         le_new_length = 0;
                              
400186d4:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->dir_pos.sname.cln);

400186d8:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

400186dc:	80 a0 60 00 	cmp  %g1, 0
                                   
400186e0:	32 80 00 07 	bne,a   400186fc <fat_file_write_file_size+0x2c>

400186e4:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        
400186e8:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
400186ec:	80 88 a0 03 	btst  3, %g2
                                  
400186f0:	32 80 00 07 	bne,a   4001870c <fat_file_write_file_size+0x3c>
<== ALWAYS TAKEN
400186f4:	d2 06 20 28 	ld  [ %i0 + 0x28 ], %o1
                       
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
400186f8:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        <== NOT EXECUTED
400186fc:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       
40018700:	92 00 7f fe 	add  %g1, -2, %o1
                             
40018704:	93 2a 40 03 	sll  %o1, %g3, %o1
                            
40018708:	92 02 40 02 	add  %o1, %g2, %o1
                            
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
4001870c:	d4 06 60 24 	ld  [ %i1 + 0x24 ], %o2
                       
40018710:	c2 0e 20 02 	ldub  [ %i0 + 2 ], %g1
                        
    byte = (fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1));
     
40018714:	fa 16 00 00 	lduh  [ %i0 ], %i5
                            
    if (fat_fd->fat_file_type == FAT_DIRECTORY) {
                    
40018718:	c4 06 60 10 	ld  [ %i1 + 0x10 ], %g2
                       
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
4001871c:	83 32 80 01 	srl  %o2, %g1, %g1
                            
    byte = (fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1));
     
40018720:	ba 07 7f ff 	add  %i5, -1, %i5
                             
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
40018724:	92 00 40 09 	add  %g1, %o1, %o1
                            
    if (fat_fd->fat_file_type == FAT_DIRECTORY) {
                    
40018728:	80 a0 a0 00 	cmp  %g2, 0
                                   
4001872c:	02 80 00 07 	be  40018748 <fat_file_write_file_size+0x78>
  
40018730:	ba 0f 40 0a 	and  %i5, %o2, %i5
                            
      le_new_length = CT_LE_L(fat_fd->fat_file_size);
                
40018734:	d0 06 60 18 	ld  [ %i1 + 0x18 ], %o0
                       
40018738:	40 00 40 75 	call  4002890c <__bswapsi2>
                   
4001873c:	d2 27 bf f4 	st  %o1, [ %fp + -12 ]
                        
40018740:	d0 27 bf fc 	st  %o0, [ %fp + -4 ]
                         
40018744:	d2 07 bf f4 	ld  [ %fp + -12 ], %o1
                        
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_SIZE_OFFSET, 4,

40018748:	98 07 bf fc 	add  %fp, -4, %o4
                             
4001874c:	96 10 20 04 	mov  4, %o3
                                   
40018750:	94 07 60 1c 	add  %i5, 0x1c, %o2
                           
40018754:	7f ff ef f1 	call  40014718 <fat_sector_write>
             
40018758:	90 10 00 18 	mov  %i0, %o0
                                 
}
                                                                    
4001875c:	b1 3a 20 1f 	sra  %o0, 0x1f, %i0
                           
40018760:	81 c7 e0 08 	ret 
                                          
40018764:	81 e8 00 00 	restore 
                                      

                                                                     

4001860c <fat_file_write_first_cluster_num>: {
4001860c:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint16_t         le_cl_hi = 0;
                                   
40018610:	c0 37 bf fe 	clrh  [ %fp + -2 ]
                            
    sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->dir_pos.sname.cln);

40018614:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40018618:	80 a0 60 00 	cmp  %g1, 0
                                   
4001861c:	12 80 00 06 	bne  40018634 <fat_file_write_first_cluster_num+0x28>

40018620:	fa 06 60 1c 	ld  [ %i1 + 0x1c ], %i5
                       
40018624:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
40018628:	80 88 a0 03 	btst  3, %g2
                                  
4001862c:	32 80 00 07 	bne,a   40018648 <fat_file_write_first_cluster_num+0x3c>
<== ALWAYS TAKEN
40018630:	c2 06 20 28 	ld  [ %i0 + 0x28 ], %g1
                       
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
40018634:	c6 0e 20 05 	ldub  [ %i0 + 5 ], %g3
                        
40018638:	c4 06 20 3c 	ld  [ %i0 + 0x3c ], %g2
                       
4001863c:	82 00 7f fe 	add  %g1, -2, %g1
                             
40018640:	83 28 40 03 	sll  %g1, %g3, %g1
                            
40018644:	82 00 40 02 	add  %g1, %g2, %g1
                            
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
40018648:	c4 06 60 24 	ld  [ %i1 + 0x24 ], %g2
                       
4001864c:	f8 0e 20 02 	ldub  [ %i0 + 2 ], %i4
                        
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1);
       
40018650:	f6 16 00 00 	lduh  [ %i0 ], %i3
                            
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
40018654:	b9 30 80 1c 	srl  %g2, %i4, %i4
                            
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1);
       
40018658:	b6 06 ff ff 	add  %i3, -1, %i3
                             
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
4001865c:	b8 07 00 01 	add  %i4, %g1, %i4
                            
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1);
       
40018660:	b6 0e c0 02 	and  %i3, %g2, %i3
                            
    le_cl_low = CT_LE_W((uint16_t  )(new_cln & 0x0000FFFF));
         
40018664:	83 2f 60 08 	sll  %i5, 8, %g1
                              
40018668:	85 2f 60 10 	sll  %i5, 0x10, %g2
                           
4001866c:	85 30 a0 18 	srl  %g2, 0x18, %g2
                           
40018670:	82 10 40 02 	or  %g1, %g2, %g1
                             
    ret1 = fat_sector_write(fs_info, sec,
                            
40018674:	98 07 bf fc 	add  %fp, -4, %o4
                             
40018678:	94 06 e0 1a 	add  %i3, 0x1a, %o2
                           
4001867c:	92 10 00 1c 	mov  %i4, %o1
                                 
    le_cl_low = CT_LE_W((uint16_t  )(new_cln & 0x0000FFFF));
         
40018680:	c2 37 bf fc 	sth  %g1, [ %fp + -4 ]
                        
    ret1 = fat_sector_write(fs_info, sec,
                            
40018684:	96 10 20 02 	mov  2, %o3
                                   
40018688:	7f ff f0 24 	call  40014718 <fat_sector_write>
             
4001868c:	90 10 00 18 	mov  %i0, %o0
                                 
    le_cl_hi = CT_LE_W((uint16_t  )((new_cln & 0xFFFF0000) >> 16));
  
40018690:	bb 37 60 10 	srl  %i5, 0x10, %i5
                           
40018694:	83 2f 60 08 	sll  %i5, 8, %g1
                              
    ret1 = fat_sector_write(fs_info, sec,
                            
40018698:	b4 10 00 08 	mov  %o0, %i2
                                 
    ret2 = fat_sector_write(fs_info, sec,
                            
4001869c:	98 07 bf fe 	add  %fp, -2, %o4
                             
400186a0:	96 10 20 02 	mov  2, %o3
                                   
400186a4:	94 06 e0 14 	add  %i3, 0x14, %o2
                           
400186a8:	92 10 00 1c 	mov  %i4, %o1
                                 
400186ac:	90 10 00 18 	mov  %i0, %o0
                                 
    le_cl_hi = CT_LE_W((uint16_t  )((new_cln & 0xFFFF0000) >> 16));
  
400186b0:	bb 37 60 08 	srl  %i5, 8, %i5
                              
400186b4:	ba 10 40 1d 	or  %g1, %i5, %i5
                             
    ret2 = fat_sector_write(fs_info, sec,
                            
400186b8:	7f ff f0 18 	call  40014718 <fat_sector_write>
             
400186bc:	fa 37 bf fe 	sth  %i5, [ %fp + -2 ]
                        
    if ( (ret1 < 0) || (ret2 < 0) )
                                  
400186c0:	b0 12 00 1a 	or  %o0, %i2, %i0
                             
}
                                                                    
400186c4:	b1 3e 20 1f 	sra  %i0, 0x1f, %i0
                           
400186c8:	81 c7 e0 08 	ret 
                                          
400186cc:	81 e8 00 00 	restore 
                                      

                                                                     

40018488 <fat_file_write_time_and_date>: {
40018488:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->dir_pos.sname.cln);

4001848c:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40018490:	80 a0 60 00 	cmp  %g1, 0
                                   
40018494:	12 80 00 06 	bne  400184ac <fat_file_write_time_and_date+0x24>

40018498:	ba 10 00 18 	mov  %i0, %i5
                                 
4001849c:	c4 0e 20 16 	ldub  [ %i0 + 0x16 ], %g2
                     
400184a0:	80 88 a0 03 	btst  3, %g2
                                  
400184a4:	32 80 00 07 	bne,a   400184c0 <fat_file_write_time_and_date+0x38>
<== ALWAYS TAKEN
400184a8:	c2 06 20 28 	ld  [ %i0 + 0x28 ], %g1
                       
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
400184ac:	c4 0f 60 05 	ldub  [ %i5 + 5 ], %g2
                        
400184b0:	f8 07 60 3c 	ld  [ %i5 + 0x3c ], %i4
                       
400184b4:	82 00 7f fe 	add  %g1, -2, %g1
                             
400184b8:	83 28 40 02 	sll  %g1, %g2, %g1
                            
400184bc:	82 00 40 1c 	add  %g1, %i4, %g1
                            
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
400184c0:	c4 06 60 24 	ld  [ %i1 + 0x24 ], %g2
                       
400184c4:	f8 0f 60 02 	ldub  [ %i5 + 2 ], %i4
                        
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1);
       
400184c8:	f6 17 40 00 	lduh  [ %i5 ], %i3
                            
    msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
            
400184cc:	d0 06 60 4c 	ld  [ %i1 + 0x4c ], %o0
                       
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
400184d0:	b9 30 80 1c 	srl  %g2, %i4, %i4
                            
    msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
            
400184d4:	94 07 bf fc 	add  %fp, -4, %o2
                             
    sec += (fat_fd->dir_pos.sname.ofs >> fs_info->vol.sec_log2);
     
400184d8:	b8 07 00 01 	add  %i4, %g1, %i4
                            
    msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
            
400184dc:	92 07 bf fe 	add  %fp, -2, %o1
                             
    byte = fat_fd->dir_pos.sname.ofs & (fs_info->vol.bps - 1);
       
400184e0:	b6 06 ff ff 	add  %i3, -1, %i3
                             
    msdos_date_unix2dos(fat_fd->mtime, &date, &time_val);
            
400184e4:	40 00 06 46 	call  40019dfc <msdos_date_unix2dos>
          
400184e8:	b6 0e c0 02 	and  %i3, %g2, %i3
                            
    time_val = CT_LE_W(time_val);
                                    
400184ec:	c2 17 bf fc 	lduh  [ %fp + -4 ], %g1
                       
400184f0:	85 28 60 08 	sll  %g1, 8, %g2
                              
400184f4:	83 30 60 08 	srl  %g1, 8, %g1
                              
400184f8:	82 10 80 01 	or  %g2, %g1, %g1
                             
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_WTIME_OFFSET,

400184fc:	98 07 bf fc 	add  %fp, -4, %o4
                             
40018500:	96 10 20 02 	mov  2, %o3
                                   
40018504:	94 06 e0 16 	add  %i3, 0x16, %o2
                           
40018508:	92 10 00 1c 	mov  %i4, %o1
                                 
    time_val = CT_LE_W(time_val);
                                    
4001850c:	c2 37 bf fc 	sth  %g1, [ %fp + -4 ]
                        
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_WTIME_OFFSET,

40018510:	7f ff f0 82 	call  40014718 <fat_sector_write>
             
40018514:	90 10 00 1d 	mov  %i5, %o0
                                 
    date = CT_LE_W(date);
                                            
40018518:	c2 17 bf fe 	lduh  [ %fp + -2 ], %g1
                       
4001851c:	85 28 60 08 	sll  %g1, 8, %g2
                              
40018520:	83 30 60 08 	srl  %g1, 8, %g1
                              
40018524:	82 10 80 01 	or  %g2, %g1, %g1
                             
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_WTIME_OFFSET,

40018528:	b4 10 00 08 	mov  %o0, %i2
                                 
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_WDATE_OFFSET,

4001852c:	98 07 bf fe 	add  %fp, -2, %o4
                             
40018530:	96 10 20 02 	mov  2, %o3
                                   
    date = CT_LE_W(date);
                                            
40018534:	c2 37 bf fe 	sth  %g1, [ %fp + -2 ]
                        
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_WDATE_OFFSET,

40018538:	94 06 e0 18 	add  %i3, 0x18, %o2
                           
4001853c:	92 10 00 1c 	mov  %i4, %o1
                                 
40018540:	90 10 00 1d 	mov  %i5, %o0
                                 
40018544:	7f ff f0 75 	call  40014718 <fat_sector_write>
             
40018548:	b0 10 3f ff 	mov  -1, %i0
                                  
    if ( ret < 0 )
                                                   
4001854c:	80 a2 20 00 	cmp  %o0, 0
                                   
40018550:	36 80 00 02 	bge,a   40018558 <fat_file_write_time_and_date+0xd0>
<== ALWAYS TAKEN
40018554:	b1 3e a0 1f 	sra  %i2, 0x1f, %i0
                           
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_ADATE_OFFSET,

40018558:	98 07 bf fe 	add  %fp, -2, %o4
                             
4001855c:	96 10 20 02 	mov  2, %o3
                                   
40018560:	94 06 e0 12 	add  %i3, 0x12, %o2
                           
40018564:	92 10 00 1c 	mov  %i4, %o1
                                 
40018568:	7f ff f0 6c 	call  40014718 <fat_sector_write>
             
4001856c:	90 10 00 1d 	mov  %i5, %o0
                                 
    if ( ret < 0 )
                                                   
40018570:	80 a2 20 00 	cmp  %o0, 0
                                   
40018574:	26 80 00 02 	bl,a   4001857c <fat_file_write_time_and_date+0xf4>
<== NEVER TAKEN
40018578:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
    msdos_date_unix2dos(fat_fd->ctime, &date, &time_val);
            
4001857c:	d0 06 60 44 	ld  [ %i1 + 0x44 ], %o0
                       
40018580:	94 07 bf fc 	add  %fp, -4, %o2
                             
40018584:	40 00 06 1e 	call  40019dfc <msdos_date_unix2dos>
          
40018588:	92 07 bf fe 	add  %fp, -2, %o1
                             
    time_val = CT_LE_W(time_val);
                                    
4001858c:	c2 17 bf fc 	lduh  [ %fp + -4 ], %g1
                       
40018590:	85 28 60 08 	sll  %g1, 8, %g2
                              
40018594:	83 30 60 08 	srl  %g1, 8, %g1
                              
40018598:	82 10 80 01 	or  %g2, %g1, %g1
                             
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_CTIME_OFFSET,

4001859c:	98 07 bf fc 	add  %fp, -4, %o4
                             
400185a0:	96 10 20 02 	mov  2, %o3
                                   
    time_val = CT_LE_W(time_val);
                                    
400185a4:	c2 37 bf fc 	sth  %g1, [ %fp + -4 ]
                        
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_CTIME_OFFSET,

400185a8:	94 06 e0 0e 	add  %i3, 0xe, %o2
                            
400185ac:	92 10 00 1c 	mov  %i4, %o1
                                 
400185b0:	7f ff f0 5a 	call  40014718 <fat_sector_write>
             
400185b4:	90 10 00 1d 	mov  %i5, %o0
                                 
    if ( ret < 0 )
                                                   
400185b8:	80 a2 20 00 	cmp  %o0, 0
                                   
400185bc:	26 80 00 02 	bl,a   400185c4 <fat_file_write_time_and_date+0x13c>
<== NEVER TAKEN
400185c0:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
    date = CT_LE_W(date);
                                            
400185c4:	c2 17 bf fe 	lduh  [ %fp + -2 ], %g1
                       
400185c8:	85 28 60 08 	sll  %g1, 8, %g2
                              
400185cc:	83 30 60 08 	srl  %g1, 8, %g1
                              
400185d0:	82 10 80 01 	or  %g2, %g1, %g1
                             
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_CDATE_OFFSET,

400185d4:	98 07 bf fe 	add  %fp, -2, %o4
                             
400185d8:	96 10 20 02 	mov  2, %o3
                                   
    date = CT_LE_W(date);
                                            
400185dc:	c2 37 bf fe 	sth  %g1, [ %fp + -2 ]
                        
    ret = fat_sector_write(fs_info, sec, byte + MSDOS_FILE_CDATE_OFFSET,

400185e0:	94 06 e0 10 	add  %i3, 0x10, %o2
                           
400185e4:	92 10 00 1c 	mov  %i4, %o1
                                 
400185e8:	7f ff f0 4c 	call  40014718 <fat_sector_write>
             
400185ec:	90 10 00 1d 	mov  %i5, %o0
                                 
    if ( ret < 0 )
                                                   
400185f0:	80 a2 20 00 	cmp  %o0, 0
                                   
400185f4:	06 80 00 04 	bl  40018604 <fat_file_write_time_and_date+0x17c>
<== NEVER TAKEN
400185f8:	01 00 00 00 	nop 
                                          
}
                                                                    
400185fc:	81 c7 e0 08 	ret 
                                          
40018600:	81 e8 00 00 	restore 
                                      
40018604:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40018608:	91 e8 3f ff 	restore  %g0, -1, %o0
                         <== NOT EXECUTED

                                                                     

4001329c <fat_free_fat_clusters_chain>: {
4001329c:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t       next_cln = 0;
                                     
400132a0:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
400132a4:	c2 06 20 18 	ld  [ %i0 + 0x18 ], %g1
                       
400132a8:	c4 06 20 1c 	ld  [ %i0 + 0x1c ], %g2
                       
400132ac:	82 0e 40 01 	and  %i1, %g1, %g1
                            
400132b0:	80 a0 80 01 	cmp  %g2, %g1
                                 
400132b4:	08 80 00 26 	bleu  4001334c <fat_free_fat_clusters_chain+0xb0>
<== NEVER TAKEN
400132b8:	ba 10 00 18 	mov  %i0, %i5
                                 
    uint32_t       cur_cln = chain;
                                  
400132bc:	b8 10 00 19 	mov  %i1, %i4
                                 
    uint32_t       freed_cls_cnt = 0;
                                
400132c0:	b6 10 20 00 	clr  %i3
                                      
    int            rc = RC_OK, rc1 = RC_OK;
                          
400132c4:	10 80 00 0e 	b  400132fc <fat_free_fat_clusters_chain+0x60>

400132c8:	b0 10 20 00 	clr  %i0
                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);
 
400132cc:	7f ff ff 52 	call  40013014 <fat_set_fat_cluster>
          
400132d0:	01 00 00 00 	nop 
                                          
        if ( rc != RC_OK )
                                           
400132d4:	80 a2 20 00 	cmp  %o0, 0
                                   
400132d8:	32 80 00 02 	bne,a   400132e0 <fat_free_fat_clusters_chain+0x44>
<== NEVER TAKEN
400132dc:	b0 10 00 08 	mov  %o0, %i0
                                 <== NOT EXECUTED
        cur_cln = next_cln;
                                          
400132e0:	f8 07 bf fc 	ld  [ %fp + -4 ], %i4
                         
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
400132e4:	c2 07 60 18 	ld  [ %i5 + 0x18 ], %g1
                       
400132e8:	c4 07 60 1c 	ld  [ %i5 + 0x1c ], %g2
                       
400132ec:	82 0f 00 01 	and  %i4, %g1, %g1
                            
400132f0:	80 a0 40 02 	cmp  %g1, %g2
                                 
400132f4:	1a 80 00 18 	bcc  40013354 <fat_free_fat_clusters_chain+0xb8>

400132f8:	b6 06 e0 01 	inc  %i3
                                      
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);
       
400132fc:	92 10 00 1c 	mov  %i4, %o1
                                 
40013300:	94 07 bf fc 	add  %fp, -4, %o2
                             
40013304:	7f ff fe d1 	call  40012e48 <fat_get_fat_cluster>
          
40013308:	90 10 00 1d 	mov  %i5, %o0
                                 
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);
 
4001330c:	92 10 00 1c 	mov  %i4, %o1
                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);
       
40013310:	82 10 00 08 	mov  %o0, %g1
                                 
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);
 
40013314:	94 10 20 00 	clr  %o2
                                      
        if ( rc != RC_OK )
                                           
40013318:	80 a0 60 00 	cmp  %g1, 0
                                   
4001331c:	02 bf ff ec 	be  400132cc <fat_free_fat_clusters_chain+0x30>
<== ALWAYS TAKEN
40013320:	90 10 00 1d 	mov  %i5, %o0
                                 
              if(fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
       
40013324:	c4 07 60 4c 	ld  [ %i5 + 0x4c ], %g2
                       <== NOT EXECUTED
40013328:	80 a0 bf ff 	cmp  %g2, -1
                                  <== NOT EXECUTED
4001332c:	02 80 00 03 	be  40013338 <fat_free_fat_clusters_chain+0x9c>
<== NOT EXECUTED
40013330:	b6 00 80 1b 	add  %g2, %i3, %i3
                            <== NOT EXECUTED
                fs_info->vol.free_cls += freed_cls_cnt;
              
40013334:	f6 27 60 4c 	st  %i3, [ %i5 + 0x4c ]
                       <== NOT EXECUTED
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);
       
40013338:	b0 10 00 01 	mov  %g1, %i0
                                 <== NOT EXECUTED
            fat_buf_release(fs_info);
                                
4001333c:	40 00 04 ce 	call  40014674 <fat_buf_release>
              <== NOT EXECUTED
40013340:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
            return rc;
                                               
40013344:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013348:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    uint32_t       freed_cls_cnt = 0;
                                
4001334c:	b6 10 20 00 	clr  %i3
                                      <== NOT EXECUTED
    int            rc = RC_OK, rc1 = RC_OK;
                          
40013350:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
        fs_info->vol.next_cl = chain;
                                
40013354:	f2 27 60 54 	st  %i1, [ %i5 + 0x54 ]
                       
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
            
40013358:	c2 07 60 4c 	ld  [ %i5 + 0x4c ], %g1
                       
4001335c:	80 a0 7f ff 	cmp  %g1, -1
                                  
40013360:	02 80 00 03 	be  4001336c <fat_free_fat_clusters_chain+0xd0>
<== ALWAYS TAKEN
40013364:	b6 00 40 1b 	add  %g1, %i3, %i3
                            
            fs_info->vol.free_cls += freed_cls_cnt;
                  
40013368:	f6 27 60 4c 	st  %i3, [ %i5 + 0x4c ]
                       <== NOT EXECUTED
    fat_buf_release(fs_info);
                                        
4001336c:	40 00 04 c2 	call  40014674 <fat_buf_release>
              
40013370:	90 10 00 1d 	mov  %i5, %o0
                                 
}
                                                                    
40013374:	81 c7 e0 08 	ret 
                                          
40013378:	81 e8 00 00 	restore 
                                      

                                                                     

40015698 <fat_free_unique_ino>: fat_free_unique_ino( fat_fs_info_t *fs_info, uint32_t ino ) { FAT_SET_UNIQ_INO_FREE((ino - fs_info->uino_base), fs_info->uino);
40015698:	c2 02 20 88 	ld  [ %o0 + 0x88 ], %g1
                       <== NOT EXECUTED
4001569c:	c6 02 20 7c 	ld  [ %o0 + 0x7c ], %g3
                       <== NOT EXECUTED
400156a0:	92 22 40 01 	sub  %o1, %g1, %o1
                            <== NOT EXECUTED
400156a4:	85 32 60 03 	srl  %o1, 3, %g2
                              <== NOT EXECUTED
400156a8:	c8 08 c0 02 	ldub  [ %g3 + %g2 ], %g4
                      <== NOT EXECUTED
400156ac:	92 0a 60 07 	and  %o1, 7, %o1
                              <== NOT EXECUTED
400156b0:	82 10 20 01 	mov  1, %g1
                                   <== NOT EXECUTED
400156b4:	93 28 40 09 	sll  %g1, %o1, %o1
                            <== NOT EXECUTED
400156b8:	92 29 00 09 	andn  %g4, %o1, %o1
                           <== NOT EXECUTED
}
                                                                    
400156bc:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
400156c0:	d2 28 c0 02 	stb  %o1, [ %g3 + %g2 ]
                       <== NOT EXECUTED

                                                                     

40012e48 <fat_get_fat_cluster>: fat_get_fat_cluster( fat_fs_info_t *fs_info, uint32_t cln, uint32_t *ret_val ) {
40012e48:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint8_t                *sec_buf;
                                 
    uint32_t                sec = 0;
                                 
    uint32_t                ofs = 0;
                                 

                                                                     
    /* sanity check */
                                               
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
          
40012e4c:	80 a6 60 01 	cmp  %i1, 1
                                   
40012e50:	08 80 00 26 	bleu  40012ee8 <fat_get_fat_cluster+0xa0>
     <== NEVER TAKEN
40012e54:	ba 10 00 18 	mov  %i0, %i5
                                 
40012e58:	c2 06 20 40 	ld  [ %i0 + 0x40 ], %g1
                       
40012e5c:	82 00 60 01 	inc  %g1
                                      
40012e60:	80 a0 40 19 	cmp  %g1, %i1
                                 
40012e64:	0a 80 00 21 	bcs  40012ee8 <fat_get_fat_cluster+0xa0>
      <== NEVER TAKEN
40012e68:	01 00 00 00 	nop 
                                          
        rtems_set_errno_and_return_minus_one(EIO);
                   

                                                                     
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

40012e6c:	c2 0e 20 16 	ldub  [ %i0 + 0x16 ], %g1
                     
40012e70:	80 88 60 01 	btst  1, %g1
                                  
40012e74:	12 80 00 23 	bne  40012f00 <fat_get_fat_cluster+0xb8>
      
40012e78:	b7 36 60 01 	srl  %i1, 1, %i3
                              
40012e7c:	80 88 60 02 	btst  2, %g1
                                  
40012e80:	02 80 00 03 	be  40012e8c <fat_get_fat_cluster+0x44>
       
40012e84:	a1 2e 60 02 	sll  %i1, 2, %l0
                              
40012e88:	a1 2e 60 01 	sll  %i1, 1, %l0
                              
40012e8c:	f8 0f 60 02 	ldub  [ %i5 + 2 ], %i4
                        
40012e90:	c2 07 60 60 	ld  [ %i5 + 0x60 ], %g1
                       
40012e94:	b9 34 00 1c 	srl  %l0, %i4, %i4
                            
          fs_info->vol.afat_loc;
                                     
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);

40012e98:	f6 17 40 00 	lduh  [ %i5 ], %i3
                            
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

40012e9c:	b8 07 00 01 	add  %i4, %g1, %i4
                            

                                                                     
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
   
40012ea0:	94 10 20 01 	mov  1, %o2
                                   
40012ea4:	96 07 bf fc 	add  %fp, -4, %o3
                             
40012ea8:	92 10 00 1c 	mov  %i4, %o1
                                 
40012eac:	40 00 05 c2 	call  400145b4 <fat_buf_access>
               
40012eb0:	90 10 00 1d 	mov  %i5, %o0
                                 
    if (rc != RC_OK)
                                                 
40012eb4:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40012eb8:	12 80 00 45 	bne  40012fcc <fat_get_fat_cluster+0x184>
     <== NEVER TAKEN
40012ebc:	01 00 00 00 	nop 
                                          
        return rc;
                                                   

                                                                     
    switch ( fs_info->vol.type )
                                     
40012ec0:	c2 0f 60 16 	ldub  [ %i5 + 0x16 ], %g1
                     
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);

40012ec4:	b6 06 ff ff 	add  %i3, -1, %i3
                             
    switch ( fs_info->vol.type )
                                     
40012ec8:	80 a0 60 02 	cmp  %g1, 2
                                   
40012ecc:	02 80 00 35 	be  40012fa0 <fat_get_fat_cluster+0x158>
      
40012ed0:	b6 0e c0 10 	and  %i3, %l0, %i3
                            
40012ed4:	80 a0 60 04 	cmp  %g1, 4
                                   
40012ed8:	02 80 00 2c 	be  40012f88 <fat_get_fat_cluster+0x140>
      
40012edc:	80 a0 60 01 	cmp  %g1, 1
                                   
40012ee0:	02 80 00 18 	be  40012f40 <fat_get_fat_cluster+0xf8>
       <== ALWAYS TAKEN
40012ee4:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
            *ret_val = *((uint32_t   *)(sec_buf + ofs));
             
            *ret_val = CF_LE_L(*ret_val);
                            
            break;
                                                   

                                                                     
        default:
                                                     
            rtems_set_errno_and_return_minus_one(EIO);
               
40012ee8:	40 00 20 95 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40012eec:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40012ef0:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
40012ef4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40012ef8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40012efc:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

40012f00:	f8 0f 60 02 	ldub  [ %i5 + 2 ], %i4
                        
40012f04:	c2 07 60 60 	ld  [ %i5 + 0x60 ], %g1
                       
40012f08:	a0 06 c0 19 	add  %i3, %i1, %l0
                            
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
   
40012f0c:	94 10 20 01 	mov  1, %o2
                                   
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

40012f10:	b9 34 00 1c 	srl  %l0, %i4, %i4
                            
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);

40012f14:	f6 17 40 00 	lduh  [ %i5 ], %i3
                            
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

40012f18:	b8 07 00 01 	add  %i4, %g1, %i4
                            
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
   
40012f1c:	96 07 bf fc 	add  %fp, -4, %o3
                             
40012f20:	92 10 00 1c 	mov  %i4, %o1
                                 
40012f24:	40 00 05 a4 	call  400145b4 <fat_buf_access>
               
40012f28:	90 10 00 1d 	mov  %i5, %o0
                                 
    if (rc != RC_OK)
                                                 
40012f2c:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40012f30:	22 bf ff e5 	be,a   40012ec4 <fat_get_fat_cluster+0x7c>
    <== ALWAYS TAKEN
40012f34:	c2 0f 60 16 	ldub  [ %i5 + 0x16 ], %g1
                     
            break;
                                                   
    }
                                                                

                                                                     
    return RC_OK;
                                                    
}
                                                                    
40012f38:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40012f3c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
            *ret_val = (*(sec_buf + ofs));
                           
40012f40:	c8 08 80 1b 	ldub  [ %g2 + %i3 ], %g4
                      
40012f44:	c8 26 80 00 	st  %g4, [ %i2 ]
                              
            if ( ofs == (fs_info->vol.bps - 1) )
                     
40012f48:	c6 17 40 00 	lduh  [ %i5 ], %g3
                            
40012f4c:	86 00 ff ff 	add  %g3, -1, %g3
                             
40012f50:	80 a0 c0 1b 	cmp  %g3, %i3
                                 
40012f54:	02 80 00 20 	be  40012fd4 <fat_get_fat_cluster+0x18c>
      
40012f58:	b6 00 80 1b 	add  %g2, %i3, %i3
                            
                *ret_val |= *(sec_buf + ofs + 1) << 8;
               
40012f5c:	c2 0e e0 01 	ldub  [ %i3 + 1 ], %g1
                        
40012f60:	83 28 60 08 	sll  %g1, 8, %g1
                              
40012f64:	82 10 40 04 	or  %g1, %g4, %g1
                             
40012f68:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
            if ( FAT_CLUSTER_IS_ODD(cln) )
                           
40012f6c:	80 8e 60 01 	btst  1, %i1
                                  
40012f70:	22 80 00 16 	be,a   40012fc8 <fat_get_fat_cluster+0x180>
   
40012f74:	82 08 6f ff 	and  %g1, 0xfff, %g1
                          
                *ret_val = (*ret_val) >> FAT12_SHIFT;
                
40012f78:	83 30 60 04 	srl  %g1, 4, %g1
                              
40012f7c:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
40012f80:	81 c7 e0 08 	ret 
                                          
40012f84:	81 e8 00 00 	restore 
                                      
            *ret_val = *((uint32_t   *)(sec_buf + ofs));
             
40012f88:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
            *ret_val = CF_LE_L(*ret_val);
                            
40012f8c:	40 00 56 60 	call  4002890c <__bswapsi2>
                   
40012f90:	d0 00 40 1b 	ld  [ %g1 + %i3 ], %o0
                        
40012f94:	d0 26 80 00 	st  %o0, [ %i2 ]
                              
            break;
                                                   
40012f98:	81 c7 e0 08 	ret 
                                          
40012f9c:	81 e8 00 00 	restore 
                                      
            *ret_val = *((uint16_t   *)(sec_buf + ofs));
             
40012fa0:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
            *ret_val = CF_LE_W(*ret_val);
                            
40012fa4:	c4 10 40 1b 	lduh  [ %g1 + %i3 ], %g2
                      
40012fa8:	83 28 a0 08 	sll  %g2, 8, %g1
                              
40012fac:	85 30 a0 08 	srl  %g2, 8, %g2
                              
40012fb0:	82 10 40 02 	or  %g1, %g2, %g1
                             
40012fb4:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
40012fb8:	83 30 60 10 	srl  %g1, 0x10, %g1
                           
40012fbc:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
            break;
                                                   
40012fc0:	81 c7 e0 08 	ret 
                                          
40012fc4:	81 e8 00 00 	restore 
                                      
                *ret_val = (*ret_val) & FAT_FAT12_MASK;
              
40012fc8:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
40012fcc:	81 c7 e0 08 	ret 
                                          
40012fd0:	81 e8 00 00 	restore 
                                      
                rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,

40012fd4:	96 07 bf fc 	add  %fp, -4, %o3
                             
40012fd8:	94 10 20 01 	mov  1, %o2
                                   
40012fdc:	92 07 20 01 	add  %i4, 1, %o1
                              
40012fe0:	40 00 05 75 	call  400145b4 <fat_buf_access>
               
40012fe4:	90 10 00 1d 	mov  %i5, %o0
                                 
                if (rc != RC_OK)
                                     
40012fe8:	80 a2 20 00 	cmp  %o0, 0
                                   
40012fec:	12 80 00 08 	bne  4001300c <fat_get_fat_cluster+0x1c4>
     <== NEVER TAKEN
40012ff0:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
                *ret_val |= *sec_buf << 8;
                           
40012ff4:	c2 08 40 00 	ldub  [ %g1 ], %g1
                            
40012ff8:	c4 06 80 00 	ld  [ %i2 ], %g2
                              
40012ffc:	83 28 60 08 	sll  %g1, 8, %g1
                              
40013000:	82 10 40 02 	or  %g1, %g2, %g1
                             
40013004:	10 bf ff da 	b  40012f6c <fat_get_fat_cluster+0x124>
       
40013008:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
}
                                                                    
4001300c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013010:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED

                                                                     

4001559c <fat_get_unique_ino>: * 0 means FAILED !!! * */ uint32_t fat_get_unique_ino(fat_fs_info_t *fs_info) {
4001559c:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
400155a0:	d2 06 20 84 	ld  [ %i0 + 0x84 ], %o1
                       <== NOT EXECUTED
            fs_info->index++;
                                        
            if (fs_info->index >= fs_info->uino_pool_size)
           
                fs_info->index = 0;
                                  
        }
                                                            

                                                                     
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))

400155a4:	03 03 ff ff 	sethi  %hi(0xffffc00), %g1
                    <== NOT EXECUTED
400155a8:	b4 10 63 ff 	or  %g1, 0x3ff, %i2	! fffffff <RAM_SIZE+0xfbfffff>
<== NOT EXECUTED
        for (j = 0; j < fs_info->uino_pool_size; j++)
                
400155ac:	80 a2 60 00 	cmp  %o1, 0
                                   <== NOT EXECUTED
400155b0:	22 80 00 23 	be,a   4001563c <fat_get_unique_ino+0xa0>
     <== NOT EXECUTED
400155b4:	c2 06 20 88 	ld  [ %i0 + 0x88 ], %g1
                       <== NOT EXECUTED
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino))

400155b8:	c8 06 20 7c 	ld  [ %i0 + 0x7c ], %g4
                       <== NOT EXECUTED
400155bc:	c2 06 20 80 	ld  [ %i0 + 0x80 ], %g1
                       <== NOT EXECUTED
400155c0:	87 30 60 03 	srl  %g1, 3, %g3
                              <== NOT EXECUTED
400155c4:	c4 49 00 03 	ldsb  [ %g4 + %g3 ], %g2
                      <== NOT EXECUTED
400155c8:	b8 08 60 07 	and  %g1, 7, %i4
                              <== NOT EXECUTED
400155cc:	b6 01 00 03 	add  %g4, %g3, %i3
                            <== NOT EXECUTED
400155d0:	85 38 80 1c 	sra  %g2, %i4, %g2
                            <== NOT EXECUTED
400155d4:	80 88 a0 01 	btst  1, %g2
                                  <== NOT EXECUTED
400155d8:	02 80 00 26 	be  40015670 <fat_get_unique_ino+0xd4>
        <== NOT EXECUTED
400155dc:	c6 09 00 03 	ldub  [ %g4 + %g3 ], %g3
                      <== NOT EXECUTED
        for (j = 0; j < fs_info->uino_pool_size; j++)
                
400155e0:	10 80 00 0e 	b  40015618 <fat_get_unique_ino+0x7c>
         <== NOT EXECUTED
400155e4:	ba 10 20 00 	clr  %i5
                                      <== NOT EXECUTED
400155e8:	80 a7 40 09 	cmp  %i5, %o1
                                 <== NOT EXECUTED
400155ec:	02 80 00 12 	be  40015634 <fat_get_unique_ino+0x98>
        <== NOT EXECUTED
400155f0:	c2 26 20 80 	st  %g1, [ %i0 + 0x80 ]
                       <== NOT EXECUTED
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino))

400155f4:	c2 06 20 80 	ld  [ %i0 + 0x80 ], %g1
                       <== NOT EXECUTED
400155f8:	87 30 60 03 	srl  %g1, 3, %g3
                              <== NOT EXECUTED
400155fc:	c4 49 00 03 	ldsb  [ %g4 + %g3 ], %g2
                      <== NOT EXECUTED
40015600:	b8 08 60 07 	and  %g1, 7, %i4
                              <== NOT EXECUTED
40015604:	b6 01 00 03 	add  %g4, %g3, %i3
                            <== NOT EXECUTED
40015608:	85 38 80 1c 	sra  %g2, %i4, %g2
                            <== NOT EXECUTED
4001560c:	80 88 a0 01 	btst  1, %g2
                                  <== NOT EXECUTED
40015610:	02 80 00 18 	be  40015670 <fat_get_unique_ino+0xd4>
        <== NOT EXECUTED
40015614:	c6 09 00 03 	ldub  [ %g4 + %g3 ], %g3
                      <== NOT EXECUTED
            fs_info->index++;
                                        
40015618:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
            if (fs_info->index >= fs_info->uino_pool_size)
           
4001561c:	80 a0 40 09 	cmp  %g1, %o1
                                 <== NOT EXECUTED
40015620:	0a bf ff f2 	bcs  400155e8 <fat_get_unique_ino+0x4c>
       <== NOT EXECUTED
40015624:	ba 07 60 01 	inc  %i5
                                      <== NOT EXECUTED
        for (j = 0; j < fs_info->uino_pool_size; j++)
                
40015628:	80 a7 40 09 	cmp  %i5, %o1
                                 <== NOT EXECUTED
4001562c:	12 bf ff f2 	bne  400155f4 <fat_get_unique_ino+0x58>
       <== NOT EXECUTED
40015630:	c0 26 20 80 	clr  [ %i0 + 0x80 ]
                           <== NOT EXECUTED
40015634:	93 2a 60 01 	sll  %o1, 1, %o1
                              <== NOT EXECUTED
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))

40015638:	c2 06 20 88 	ld  [ %i0 + 0x88 ], %g1
                       <== NOT EXECUTED
4001563c:	82 26 80 01 	sub  %i2, %g1, %g1
                            <== NOT EXECUTED
40015640:	80 a0 40 09 	cmp  %g1, %o1
                                 <== NOT EXECUTED
40015644:	08 80 00 13 	bleu  40015690 <fat_get_unique_ino+0xf4>
      <== NOT EXECUTED
40015648:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
        {
                                                            
            fs_info->uino_pool_size <<= 1;
                           
4001564c:	d2 26 20 84 	st  %o1, [ %i0 + 0x84 ]
                       <== NOT EXECUTED
            fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);

40015650:	7f ff c2 f4 	call  40006220 <realloc>
                      <== NOT EXECUTED
40015654:	d0 06 20 7c 	ld  [ %i0 + 0x7c ], %o0
                       <== NOT EXECUTED
            if (fs_info->uino != NULL)
                               
40015658:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4001565c:	02 80 00 0d 	be  40015690 <fat_get_unique_ino+0xf4>
        <== NOT EXECUTED
40015660:	d0 26 20 7c 	st  %o0, [ %i0 + 0x7c ]
                       <== NOT EXECUTED
                fs_info->index = fs_info->uino_pool_size;
            
40015664:	d2 06 20 84 	ld  [ %i0 + 0x84 ], %o1
                       <== NOT EXECUTED
40015668:	10 bf ff d1 	b  400155ac <fat_get_unique_ino+0x10>
         <== NOT EXECUTED
4001566c:	d2 26 20 80 	st  %o1, [ %i0 + 0x80 ]
                       <== NOT EXECUTED
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino);

40015670:	82 10 20 01 	mov  1, %g1
                                   <== NOT EXECUTED
40015674:	b9 28 40 1c 	sll  %g1, %i4, %i4
                            <== NOT EXECUTED
40015678:	86 17 00 03 	or  %i4, %g3, %g3
                             <== NOT EXECUTED
4001567c:	c6 2e c0 00 	stb  %g3, [ %i3 ]
                             <== NOT EXECUTED
                return (fs_info->uino_base + fs_info->index);
        
40015680:	c2 06 20 88 	ld  [ %i0 + 0x88 ], %g1
                       <== NOT EXECUTED
40015684:	f0 06 20 80 	ld  [ %i0 + 0x80 ], %i0
                       <== NOT EXECUTED
40015688:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001568c:	91 e8 40 18 	restore  %g1, %i0, %o0
                        <== NOT EXECUTED
        }
                                                            
        else
                                                         
            resrc_unsuff = true;
                                     
    }
                                                                
    return 0;
                                                        
}
                                                                    
40015690:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40015694:	91 e8 20 00 	restore  %g0, 0, %o0
                          <== NOT EXECUTED

                                                                     

40015524 <fat_init_clusters_chain>: int fat_init_clusters_chain( fat_fs_info_t *fs_info, uint32_t start_cln ) {
40015524:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    int                     rc = RC_OK;
                              
    ssize_t                 ret = 0;
                                 
    uint32_t                cur_cln = start_cln;
                     

                                                                     
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
40015528:	10 80 00 0e 	b  40015560 <fat_init_clusters_chain+0x3c>
    
4001552c:	f2 27 bf fc 	st  %i1, [ %fp + -4 ]
                         
    {
                                                                
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);

40015530:	7f ff fc a5 	call  400147c4 <fat_cluster_set>
              
40015534:	d6 06 20 08 	ld  [ %i0 + 8 ], %o3
                          
        if ( ret != fs_info->vol.bpc )
                               
40015538:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
4001553c:	80 a0 40 08 	cmp  %g1, %o0
                                 
        {
                                                            
            return -1;
                                               
        }
                                                            

                                                                     
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
       
40015540:	94 07 bf fc 	add  %fp, -4, %o2
                             
        if ( ret != fs_info->vol.bpc )
                               
40015544:	12 80 00 13 	bne  40015590 <fat_init_clusters_chain+0x6c>
  <== NEVER TAKEN
40015548:	90 10 00 18 	mov  %i0, %o0
                                 
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
       
4001554c:	7f ff f6 3f 	call  40012e48 <fat_get_fat_cluster>
          
40015550:	d2 07 bf fc 	ld  [ %fp + -4 ], %o1
                         
        if ( rc != RC_OK )
                                           
40015554:	80 a2 20 00 	cmp  %o0, 0
                                   
40015558:	12 80 00 0c 	bne  40015588 <fat_init_clusters_chain+0x64>
  <== NEVER TAKEN
4001555c:	f2 07 bf fc 	ld  [ %fp + -4 ], %i1
                         
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
40015560:	c4 06 20 18 	ld  [ %i0 + 0x18 ], %g2
                       
40015564:	c2 06 20 1c 	ld  [ %i0 + 0x1c ], %g1
                       
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);

40015568:	92 10 00 19 	mov  %i1, %o1
                                 
4001556c:	98 10 20 00 	clr  %o4
                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
40015570:	b2 0e 40 02 	and  %i1, %g2, %i1
                            
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);

40015574:	94 10 20 00 	clr  %o2
                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)
     
40015578:	80 a6 40 01 	cmp  %i1, %g1
                                 
4001557c:	0a bf ff ed 	bcs  40015530 <fat_init_clusters_chain+0xc>
   
40015580:	90 10 00 18 	mov  %i0, %o0
                                 
            return rc;
                                               
        }
                                                            

                                                                     
    }
                                                                

                                                                     
    return rc;
                                                       
40015584:	90 10 20 00 	clr  %o0
                                      
}
                                                                    
40015588:	81 c7 e0 08 	ret 
                                          
4001558c:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
            return -1;
                                               
40015590:	90 10 3f ff 	mov  -1, %o0
                                  <== NOT EXECUTED
}
                                                                    
40015594:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40015598:	91 e8 00 08 	restore  %g0, %o0, %o0
                        <== NOT EXECUTED

                                                                     

40014a9c <fat_init_volume_info>: * RC_OK on success, or -1 if error occured * and errno set appropriately */ int fat_init_volume_info(fat_fs_info_t *fs_info, const char *device) {
40014a9c:	9d e3 be e8 	save  %sp, -280, %sp
                          
    ssize_t             ret = 0;
                                     
    struct stat         stat_buf;
                                    
    int                 i = 0;
                                       
    rtems_bdbuf_buffer *block = NULL;
                                

                                                                     
    vol->fd = open(device, O_RDWR);
                                  
40014aa0:	92 10 20 02 	mov  2, %o1
                                   
{
                                                                    
40014aa4:	a4 10 00 18 	mov  %i0, %l2
                                 
    rtems_bdbuf_buffer *block = NULL;
                                
40014aa8:	c0 27 bf 8c 	clr  [ %fp + -116 ]
                           
    vol->fd = open(device, O_RDWR);
                                  
40014aac:	7f ff c5 2d 	call  40005f60 <open>
                         
40014ab0:	90 10 00 19 	mov  %i1, %o0
                                 
    if (vol->fd < 0)
                                                 
40014ab4:	80 a2 20 00 	cmp  %o0, 0
                                   
40014ab8:	06 80 01 cb 	bl  400151e4 <fat_init_volume_info+0x748>
     <== NEVER TAKEN
40014abc:	d0 24 a0 68 	st  %o0, [ %l2 + 0x68 ]
                       
    {
                                                                
        rtems_set_errno_and_return_minus_one(ENXIO);
                 
    }
                                                                

                                                                     
    rc = fstat(vol->fd, &stat_buf);
                                  
40014ac0:	7f ff c2 5a 	call  40005428 <fstat>
                        
40014ac4:	92 07 bf a0 	add  %fp, -96, %o1
                            
    if (rc != 0)
                                                     
40014ac8:	80 a2 20 00 	cmp  %o0, 0
                                   
40014acc:	12 80 01 c3 	bne  400151d8 <fat_init_volume_info+0x73c>
    <== NEVER TAKEN
40014ad0:	07 00 00 3c 	sethi  %hi(0xf000), %g3
                       
        close(vol->fd);
                                              
        rtems_set_errno_and_return_minus_one(ENXIO);
                 
    }
                                                                

                                                                     
    /* Must be a block device. */
                                    
    if (!S_ISBLK(stat_buf.st_mode))
                                  
40014ad4:	c4 07 bf ac 	ld  [ %fp + -84 ], %g2
                        
40014ad8:	84 08 80 03 	and  %g2, %g3, %g2
                            
40014adc:	07 00 00 18 	sethi  %hi(0x6000), %g3
                       
40014ae0:	80 a0 80 03 	cmp  %g2, %g3
                                 
40014ae4:	12 80 01 be 	bne  400151dc <fat_init_volume_info+0x740>
    <== NEVER TAKEN
40014ae8:	d0 06 20 68 	ld  [ %i0 + 0x68 ], %o0
                       
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
                  
40014aec:	94 06 20 6c 	add  %i0, 0x6c, %o2
                           
40014af0:	13 10 01 10 	sethi  %hi(0x40044000), %o1
                   
40014af4:	40 00 04 31 	call  40015bb8 <ioctl>
                        
40014af8:	92 12 62 09 	or  %o1, 0x209, %o1	! 40044209 <__end+0x16329>

        rtems_set_errno_and_return_minus_one(ENXIO);
                 
    }
                                                                

                                                                     
    /* check that device is registred as block device and lock it */
 
    rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);
           
    if (rc != 0) {
                                                   
40014afc:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40014b00:	12 80 01 b6 	bne  400151d8 <fat_init_volume_info+0x73c>
    <== NEVER TAKEN
40014b04:	94 07 bf 8c 	add  %fp, -116, %o2
                           
        rtems_set_errno_and_return_minus_one(ENXIO);
                 
    }
                                                                

                                                                     
    /* Read boot record */
                                           
    /* FIXME: Asserts FAT_MAX_BPB_SIZE < bdbuf block size */
         
    sc = rtems_bdbuf_read( vol->dd, 0, &block);
                      
40014b08:	d0 04 a0 6c 	ld  [ %l2 + 0x6c ], %o0
                       
40014b0c:	7f ff f3 be 	call  40011a04 <rtems_bdbuf_read>
             
40014b10:	92 10 20 00 	clr  %o1
                                      
    if (sc != RTEMS_SUCCESSFUL)
                                      
40014b14:	80 a2 20 00 	cmp  %o0, 0
                                   
40014b18:	12 80 01 b9 	bne  400151fc <fat_init_volume_info+0x760>
    <== NEVER TAKEN
40014b1c:	d0 07 bf 8c 	ld  [ %fp + -116 ], %o0
                       
    {
                                                                
        close(vol->fd);
                                              
        rtems_set_errno_and_return_minus_one( EIO);
                  
    }
                                                                

                                                                     
    memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);
              
40014b20:	c4 02 20 1c 	ld  [ %o0 + 0x1c ], %g2
                       
40014b24:	c2 08 a0 20 	ldub  [ %g2 + 0x20 ], %g1
                     
40014b28:	c2 2f bf 87 	stb  %g1, [ %fp + -121 ]
                      
40014b2c:	c2 08 a0 21 	ldub  [ %g2 + 0x21 ], %g1
                     
40014b30:	c2 2f bf 83 	stb  %g1, [ %fp + -125 ]
                      
40014b34:	c2 08 a0 22 	ldub  [ %g2 + 0x22 ], %g1
                     
40014b38:	c2 2f bf 7f 	stb  %g1, [ %fp + -129 ]
                      
40014b3c:	c2 08 a0 23 	ldub  [ %g2 + 0x23 ], %g1
                     
40014b40:	c2 2f bf 7b 	stb  %g1, [ %fp + -133 ]
                      
40014b44:	c2 08 a0 24 	ldub  [ %g2 + 0x24 ], %g1
                     
40014b48:	c2 2f bf 77 	stb  %g1, [ %fp + -137 ]
                      
40014b4c:	c2 08 a0 25 	ldub  [ %g2 + 0x25 ], %g1
                     
40014b50:	c2 2f bf 73 	stb  %g1, [ %fp + -141 ]
                      
40014b54:	c2 08 a0 26 	ldub  [ %g2 + 0x26 ], %g1
                     
40014b58:	c2 2f bf 6f 	stb  %g1, [ %fp + -145 ]
                      
40014b5c:	c2 08 a0 27 	ldub  [ %g2 + 0x27 ], %g1
                     
40014b60:	c2 2f bf 6b 	stb  %g1, [ %fp + -149 ]
                      
40014b64:	c2 08 a0 28 	ldub  [ %g2 + 0x28 ], %g1
                     
40014b68:	e6 08 a0 0b 	ldub  [ %g2 + 0xb ], %l3
                      
40014b6c:	fa 08 a0 0c 	ldub  [ %g2 + 0xc ], %i5
                      
40014b70:	e0 08 a0 0d 	ldub  [ %g2 + 0xd ], %l0
                      
40014b74:	ee 08 a0 0e 	ldub  [ %g2 + 0xe ], %l7
                      
40014b78:	f4 08 a0 0f 	ldub  [ %g2 + 0xf ], %i2
                      
40014b7c:	e2 08 a0 10 	ldub  [ %g2 + 0x10 ], %l1
                     
40014b80:	ec 08 a0 11 	ldub  [ %g2 + 0x11 ], %l6
                     
40014b84:	f2 08 a0 12 	ldub  [ %g2 + 0x12 ], %i1
                     
40014b88:	e8 08 a0 13 	ldub  [ %g2 + 0x13 ], %l4
                     
40014b8c:	f8 08 a0 14 	ldub  [ %g2 + 0x14 ], %i4
                     
40014b90:	ea 08 a0 16 	ldub  [ %g2 + 0x16 ], %l5
                     
40014b94:	f6 08 a0 17 	ldub  [ %g2 + 0x17 ], %i3
                     
40014b98:	c2 2f bf 67 	stb  %g1, [ %fp + -153 ]
                      
40014b9c:	c2 08 a0 2c 	ldub  [ %g2 + 0x2c ], %g1
                     
40014ba0:	c2 2f bf 5b 	stb  %g1, [ %fp + -165 ]
                      
40014ba4:	c2 08 a0 2d 	ldub  [ %g2 + 0x2d ], %g1
                     
40014ba8:	c2 2f bf 57 	stb  %g1, [ %fp + -169 ]
                      
40014bac:	c2 08 a0 2e 	ldub  [ %g2 + 0x2e ], %g1
                     
40014bb0:	c2 2f bf 63 	stb  %g1, [ %fp + -157 ]
                      
40014bb4:	c2 08 a0 2f 	ldub  [ %g2 + 0x2f ], %g1
                     
40014bb8:	c2 2f bf 5f 	stb  %g1, [ %fp + -161 ]
                      
40014bbc:	c2 08 a0 30 	ldub  [ %g2 + 0x30 ], %g1
                     
40014bc0:	c2 2f bf 53 	stb  %g1, [ %fp + -173 ]
                      
40014bc4:	c2 08 a0 31 	ldub  [ %g2 + 0x31 ], %g1
                     

                                                                     
    sc = rtems_bdbuf_release( block);
                                
40014bc8:	7f ff f4 18 	call  40011c28 <rtems_bdbuf_release>
          
40014bcc:	c2 2f bf 4f 	stb  %g1, [ %fp + -177 ]
                      
    if (sc != RTEMS_SUCCESSFUL)
                                      
40014bd0:	80 a2 20 00 	cmp  %o0, 0
                                   
40014bd4:	12 80 01 8a 	bne  400151fc <fat_init_volume_info+0x760>
    <== NEVER TAKEN
40014bd8:	bb 2f 60 08 	sll  %i5, 8, %i5
                              
        close(vol->fd);
                                              
        rtems_set_errno_and_return_minus_one( EIO );
                 
    }
                                                                

                                                                     
    /* Evaluate boot record */
                                       
    vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);
                
40014bdc:	a6 17 40 13 	or  %i5, %l3, %l3
                             

                                                                     
    if ( (vol->bps != 512)  &&
                                       
40014be0:	84 04 fe 00 	add  %l3, -512, %g2
                           
40014be4:	84 08 bd ff 	and  %g2, -513, %g2
                           
40014be8:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
         (vol->bps != 1024) &&
                                       
         (vol->bps != 2048) &&
                                       
40014bec:	80 a0 a0 00 	cmp  %g2, 0
                                   
40014bf0:	02 80 00 07 	be  40014c0c <fat_init_volume_info+0x170>
     <== ALWAYS TAKEN
40014bf4:	e6 34 80 00 	sth  %l3, [ %l2 ]
                             
         (vol->bps != 1024) &&
                                       
40014bf8:	84 04 f8 00 	add  %l3, -2048, %g2
                          <== NOT EXECUTED
40014bfc:	07 3f ff c2 	sethi  %hi(0xffff0800), %g3
                   <== NOT EXECUTED
         (vol->bps != 2048) &&
                                       
40014c00:	80 a8 80 03 	andncc  %g2, %g3, %g0
                         <== NOT EXECUTED
40014c04:	12 80 00 41 	bne  40014d08 <fat_init_volume_info+0x26c>
    <== NOT EXECUTED
40014c08:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
         (vol->bps != 4096))
                                         
    {
                                                                
        close(vol->fd);
                                              
        rtems_set_errno_and_return_minus_one( EINVAL );
              
    }
                                                                
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;

40014c0c:	93 2c e0 10 	sll  %l3, 0x10, %o1
                           
40014c10:	85 32 60 19 	srl  %o1, 0x19, %g2
                           
40014c14:	80 88 a0 01 	btst  1, %g2
                                  
40014c18:	12 80 00 09 	bne  40014c3c <fat_init_volume_info+0x1a0>
    <== ALWAYS TAKEN
40014c1c:	c0 2c a0 03 	clrb  [ %l2 + 3 ]
                             
40014c20:	86 10 20 00 	clr  %g3
                                      <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);
                                   
40014c24:	85 38 a0 01 	sra  %g2, 1, %g2
                              <== NOT EXECUTED
40014c28:	88 00 e0 01 	add  %g3, 1, %g4
                              <== NOT EXECUTED
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;

40014c2c:	80 88 a0 01 	btst  1, %g2
                                  <== NOT EXECUTED
40014c30:	02 bf ff fd 	be  40014c24 <fat_init_volume_info+0x188>
     <== NOT EXECUTED
40014c34:	86 10 00 04 	mov  %g4, %g3
                                 <== NOT EXECUTED
40014c38:	c8 2c a0 03 	stb  %g4, [ %l2 + 3 ]
                         <== NOT EXECUTED
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
              
40014c3c:	85 32 60 10 	srl  %o1, 0x10, %g2
                           
40014c40:	80 8c e0 01 	btst  1, %l3
                                  
40014c44:	12 80 00 0a 	bne  40014c6c <fat_init_volume_info+0x1d0>
    <== NEVER TAKEN
40014c48:	c0 2c a0 02 	clrb  [ %l2 + 2 ]
                             
40014c4c:	10 80 00 03 	b  40014c58 <fat_init_volume_info+0x1bc>
      
40014c50:	86 10 20 01 	mov  1, %g3
                                   
40014c54:	86 10 00 01 	mov  %g1, %g3
                                 
         i >>= 1, vol->sec_log2++);
                                  
40014c58:	85 38 a0 01 	sra  %g2, 1, %g2
                              
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;
              
40014c5c:	80 88 a0 01 	btst  1, %g2
                                  
40014c60:	02 bf ff fd 	be  40014c54 <fat_init_volume_info+0x1b8>
     
40014c64:	82 00 e0 01 	add  %g3, 1, %g1
                              
40014c68:	c6 2c a0 02 	stb  %g3, [ %l2 + 2 ]
                         

                                                                     
    /* Assign the sector size as bdbuf block size for now.
           
     * If possible the bdbuf block size will get increased to the cluster

     * size at the end of this method for better performance */
      
    sc = rtems_bdbuf_set_block_size (vol->dd, vol->bps, true);
       
40014c6c:	94 10 20 01 	mov  1, %o2
                                   
40014c70:	d0 04 a0 6c 	ld  [ %l2 + 0x6c ], %o0
                       
40014c74:	7f ff f4 78 	call  40011e54 <rtems_bdbuf_set_block_size>
   
40014c78:	93 32 60 10 	srl  %o1, 0x10, %o1
                           
    if (sc != RTEMS_SUCCESSFUL)
                                      
40014c7c:	80 a2 20 00 	cmp  %o0, 0
                                   
40014c80:	12 80 00 22 	bne  40014d08 <fat_init_volume_info+0x26c>
    <== NEVER TAKEN
40014c84:	84 10 20 01 	mov  1, %g2
                                   
    {
                                                                
      close(vol->fd);
                                                
      rtems_set_errno_and_return_minus_one( EINVAL );
                
    }
                                                                
    vol->bytes_per_block = vol->bps;
                                 
40014c88:	c8 14 80 00 	lduh  [ %l2 ], %g4
                            
    vol->bytes_per_block_log2 = vol->sec_log2;
                       
40014c8c:	de 0c a0 02 	ldub  [ %l2 + 2 ], %o7
                        
    vol->bytes_per_block = vol->bps;
                                 
40014c90:	89 29 20 10 	sll  %g4, 0x10, %g4
                           
40014c94:	bb 31 20 10 	srl  %g4, 0x10, %i5
                           
    vol->bytes_per_block_log2 = vol->sec_log2;
                       
40014c98:	de 2c a0 14 	stb  %o7, [ %l2 + 0x14 ]
                      
    vol->spc = FAT_GET_BR_SECTORS_PER_CLUSTER(boot_rec);
             
    /*
                                                               
     * "sectors per cluster" of zero is invalid
                      
     * (and would hang the following loop)
                           
     */
                                                              
    if (vol->spc == 0)
                                               
40014c9c:	9a 8c 20 ff 	andcc  %l0, 0xff, %o5
                         
    vol->bytes_per_block = vol->bps;
                                 
40014ca0:	fa 24 a0 10 	st  %i5, [ %l2 + 0x10 ]
                       
    vol->sectors_per_block = 1;
                                      
40014ca4:	c4 2c a0 0d 	stb  %g2, [ %l2 + 0xd ]
                       
    if (vol->spc == 0)
                                               
40014ca8:	02 80 00 18 	be  40014d08 <fat_init_volume_info+0x26c>
     <== NEVER TAKEN
40014cac:	e0 2c a0 04 	stb  %l0, [ %l2 + 4 ]
                         
    {
                                                                
        close(vol->fd);
                                              
        rtems_set_errno_and_return_minus_one(EINVAL);
                
    }
                                                                

                                                                     
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
              
40014cb0:	c0 2c a0 05 	clrb  [ %l2 + 5 ]
                             
40014cb4:	80 8c 20 01 	btst  1, %l0
                                  
40014cb8:	12 80 00 1c 	bne  40014d28 <fat_init_volume_info+0x28c>
    
40014cbc:	84 10 00 0d 	mov  %o5, %g2
                                 
40014cc0:	10 80 00 03 	b  40014ccc <fat_init_volume_info+0x230>
      
40014cc4:	86 10 20 01 	mov  1, %g3
                                   
40014cc8:	86 10 00 01 	mov  %g1, %g3
                                 
         i >>= 1, vol->spc_log2++);
                                  
40014ccc:	85 38 a0 01 	sra  %g2, 1, %g2
                              
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
              
40014cd0:	80 88 a0 01 	btst  1, %g2
                                  
40014cd4:	02 bf ff fd 	be  40014cc8 <fat_init_volume_info+0x22c>
     
40014cd8:	82 00 e0 01 	add  %g3, 1, %g1
                              
40014cdc:	84 08 e0 ff 	and  %g3, 0xff, %g2
                           
40014ce0:	c6 2c a0 05 	stb  %g3, [ %l2 + 5 ]
                         
40014ce4:	86 10 20 01 	mov  1, %g3
                                   
40014ce8:	10 80 00 12 	b  40014d30 <fat_init_volume_info+0x294>
      
40014cec:	87 28 c0 02 	sll  %g3, %g2, %g3
                            
    if (fs_info->c.state == FAT_CACHE_EMPTY)
                         
40014cf0:	c4 0c a0 91 	ldub  [ %l2 + 0x91 ], %g2
                     <== NOT EXECUTED
40014cf4:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
40014cf8:	02 80 00 04 	be  40014d08 <fat_init_volume_info+0x26c>
     <== NOT EXECUTED
40014cfc:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40014d00:	7f ff fd b7 	call  400143dc <fat_buf_release.part.5>
       <== NOT EXECUTED
40014d04:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED

                                                                     
            if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=
     
                FAT_FSINFO_LEAD_SIGNATURE_VALUE)
                     
            {
                                                        
                _fat_block_release(fs_info);
                         
                close(vol->fd);
                                      
40014d08:	7f ff c1 52 	call  40005250 <close>
                        <== NOT EXECUTED
40014d0c:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
                rtems_set_errno_and_return_minus_one( EINVAL );
      
40014d10:	40 00 19 0b 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40014d14:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
40014d18:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
40014d1c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40014d20:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40014d24:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;
              
40014d28:	84 10 20 00 	clr  %g2
                                      
40014d2c:	86 10 20 01 	mov  1, %g3
                                   
    if (vol->spc != UINT32_C(1) << vol->spc_log2)
                    
40014d30:	80 a3 40 03 	cmp  %o5, %g3
                                 
40014d34:	12 bf ff f5 	bne  40014d08 <fat_init_volume_info+0x26c>
    <== NEVER TAKEN
40014d38:	bb 2f 40 02 	sll  %i5, %g2, %i5
                            
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
              
40014d3c:	c0 2c a0 0c 	clrb  [ %l2 + 0xc ]
                           
40014d40:	84 10 00 1d 	mov  %i5, %g2
                                 
40014d44:	80 8f 60 01 	btst  1, %i5
                                  
40014d48:	12 80 00 0a 	bne  40014d70 <fat_init_volume_info+0x2d4>
    <== NEVER TAKEN
40014d4c:	fa 24 a0 08 	st  %i5, [ %l2 + 8 ]
                          
40014d50:	10 80 00 03 	b  40014d5c <fat_init_volume_info+0x2c0>
      
40014d54:	86 10 20 01 	mov  1, %g3
                                   
40014d58:	86 10 00 01 	mov  %g1, %g3
                                 
         i >>= 1, vol->bpc_log2++);
                                  
40014d5c:	85 38 a0 01 	sra  %g2, 1, %g2
                              
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;
              
40014d60:	80 88 a0 01 	btst  1, %g2
                                  
40014d64:	02 bf ff fd 	be  40014d58 <fat_init_volume_info+0x2bc>
     
40014d68:	82 00 e0 01 	add  %g3, 1, %g1
                              
40014d6c:	c6 2c a0 0c 	stb  %g3, [ %l2 + 0xc ]
                       
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /

40014d70:	89 31 20 10 	srl  %g4, 0x10, %g4
                           
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
        
40014d74:	b5 2e a0 08 	sll  %i2, 8, %i2
                              
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /

40014d78:	86 01 3f ff 	add  %g4, -1, %g3
                             
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
       
40014d7c:	b3 2e 60 08 	sll  %i1, 8, %i1
                              
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
        
40014d80:	ae 16 80 17 	or  %i2, %l7, %l7
                             
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
       
40014d84:	ac 16 40 16 	or  %i1, %l6, %l6
                             
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);
                        
40014d88:	e2 2c a0 15 	stb  %l1, [ %l2 + 0x15 ]
                      
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /

40014d8c:	85 2d a0 05 	sll  %l6, 5, %g2
                              
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);
        
40014d90:	ee 34 a0 20 	sth  %l7, [ %l2 + 0x20 ]
                      
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /

40014d94:	84 00 80 03 	add  %g2, %g3, %g2
                            
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);
       
40014d98:	ec 34 a0 2c 	sth  %l6, [ %l2 + 0x2c ]
                      
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /

40014d9c:	83 38 a0 1f 	sra  %g2, 0x1f, %g1
                           
40014da0:	81 80 60 00 	wr  %g1, %y
                                   
40014da4:	01 00 00 00 	nop 
                                          
40014da8:	01 00 00 00 	nop 
                                          
40014dac:	01 00 00 00 	nop 
                                          
40014db0:	88 78 80 04 	sdiv  %g2, %g4, %g4
                           
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;
                
40014db4:	9f 29 00 0f 	sll  %g4, %o7, %o7
                            
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /

40014db8:	c8 24 a0 30 	st  %g4, [ %l2 + 0x30 ]
                       
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)
                
40014dbc:	b7 2e e0 08 	sll  %i3, 8, %i3
                              
40014dc0:	aa 16 c0 15 	or  %i3, %l5, %l5
                             
40014dc4:	ab 2d 60 10 	sll  %l5, 0x10, %l5
                           
40014dc8:	80 a5 60 00 	cmp  %l5, 0
                                   
40014dcc:	02 80 00 98 	be  4001502c <fat_init_volume_info+0x590>
     
40014dd0:	de 24 a0 34 	st  %o7, [ %l2 + 0x34 ]
                       
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);
      
40014dd4:	ab 35 60 10 	srl  %l5, 0x10, %l5
                           
40014dd8:	ea 24 a0 24 	st  %l5, [ %l2 + 0x24 ]
                       
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +
    
40014ddc:	a2 5d 40 11 	smul  %l5, %l1, %l1
                           
40014de0:	ae 04 40 17 	add  %l1, %l7, %l7
                            
40014de4:	88 01 00 17 	add  %g4, %l7, %g4
                            
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;
      
40014de8:	ee 24 a0 28 	st  %l7, [ %l2 + 0x28 ]
                       
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)
            
40014dec:	b9 2f 20 08 	sll  %i4, 8, %i4
                              
40014df0:	a8 17 00 14 	or  %i4, %l4, %l4
                             
40014df4:	a9 2d 20 10 	sll  %l4, 0x10, %l4
                           
40014df8:	80 a5 20 00 	cmp  %l4, 0
                                   
40014dfc:	02 80 00 80 	be  40014ffc <fat_init_volume_info+0x560>
     
40014e00:	c8 24 a0 3c 	st  %g4, [ %l2 + 0x3c ]
                       
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);
    
40014e04:	a9 35 20 10 	srl  %l4, 0x10, %l4
                           
40014e08:	e8 24 a0 38 	st  %l4, [ %l2 + 0x38 ]
                       
    data_secs = vol->tot_secs - vol->data_fsec;
                      
40014e0c:	a8 25 00 04 	sub  %l4, %g4, %l4
                            
    vol->data_cls = data_secs / vol->spc;
                            
40014e10:	81 80 20 00 	wr  %g0, %y
                                   
40014e14:	01 00 00 00 	nop 
                                          
40014e18:	01 00 00 00 	nop 
                                          
40014e1c:	01 00 00 00 	nop 
                                          
40014e20:	84 75 00 0d 	udiv  %l4, %o5, %g2
                           
    if ( vol->data_cls < FAT_FAT12_MAX_CLN)
                          
40014e24:	80 a0 af f4 	cmp  %g2, 0xff4
                               
40014e28:	18 80 00 69 	bgu  40014fcc <fat_init_volume_info+0x530>
    
40014e2c:	c4 24 a0 40 	st  %g2, [ %l2 + 0x40 ]
                       
        vol->type = FAT_FAT12;
                                       
40014e30:	84 10 20 01 	mov  1, %g2
                                   
40014e34:	c4 2c a0 16 	stb  %g2, [ %l2 + 0x16 ]
                      
        vol->mask = FAT_FAT12_MASK;
                                  
40014e38:	84 10 2f ff 	mov  0xfff, %g2
                               
40014e3c:	c4 24 a0 18 	st  %g2, [ %l2 + 0x18 ]
                       
        vol->eoc_val = FAT_FAT12_EOC;
                                
40014e40:	84 10 2f f8 	mov  0xff8, %g2
                               
40014e44:	c4 24 a0 1c 	st  %g2, [ %l2 + 0x1c ]
                       
    else
                                                             
    {
                                                                
        vol->rdir_cl = 0;
                                            
        vol->mirror = 0;
                                             
        vol->afat = 0;
                                               
        vol->free_cls = FAT_UNDEFINED_VALUE;
                         
40014e48:	84 10 3f ff 	mov  -1, %g2
                                  
        vol->rdir_cl = 0;
                                            
40014e4c:	c0 24 a0 44 	clr  [ %l2 + 0x44 ]
                           
        vol->mirror = 0;
                                             
40014e50:	c0 2c a0 5c 	clrb  [ %l2 + 0x5c ]
                          
        vol->afat = 0;
                                               
40014e54:	c0 2c a0 64 	clrb  [ %l2 + 0x64 ]
                          
        vol->free_cls = FAT_UNDEFINED_VALUE;
                         
40014e58:	c4 24 a0 4c 	st  %g2, [ %l2 + 0x4c ]
                       
        vol->next_cl = FAT_UNDEFINED_VALUE;
                          
40014e5c:	c4 24 a0 54 	st  %g2, [ %l2 + 0x54 ]
                       
    if (fs_info->c.state == FAT_CACHE_EMPTY)
                         
40014e60:	c4 0c a0 91 	ldub  [ %l2 + 0x91 ], %g2
                     
40014e64:	80 a0 a0 00 	cmp  %g2, 0
                                   
40014e68:	12 80 00 7d 	bne  4001505c <fat_init_volume_info+0x5c0>
    
40014e6c:	01 00 00 00 	nop 
                                          
    }
                                                                

                                                                     
    _fat_block_release(fs_info);
                                     

                                                                     
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
      
40014e70:	c4 0c a0 64 	ldub  [ %l2 + 0x64 ], %g2
                     
40014e74:	c8 04 a0 24 	ld  [ %l2 + 0x24 ], %g4
                       
40014e78:	c6 14 a0 20 	lduh  [ %l2 + 0x20 ], %g3
                     
40014e7c:	84 58 80 04 	smul  %g2, %g4, %g2
                           
40014e80:	84 00 80 03 	add  %g2, %g3, %g2
                            
40014e84:	c4 24 a0 60 	st  %g2, [ %l2 + 0x60 ]
                       

                                                                     
    /* set up collection of fat-files fd */
                          
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));

40014e88:	92 10 20 0c 	mov  0xc, %o1
                                 
40014e8c:	7f ff c0 cc 	call  400051bc <calloc>
                       
40014e90:	90 10 20 02 	mov  2, %o0
                                   
40014e94:	d0 24 a0 74 	st  %o0, [ %l2 + 0x74 ]
                       
    if ( fs_info->vhash == NULL )
                                    
40014e98:	80 a2 20 00 	cmp  %o0, 0
                                   
40014e9c:	02 80 01 03 	be  400152a8 <fat_init_volume_info+0x80c>
     <== NEVER TAKEN
40014ea0:	84 10 00 08 	mov  %o0, %g2
                                 
  head->previous = NULL;
                                             
40014ea4:	c0 22 20 04 	clr  [ %o0 + 4 ]
                              
  return &the_chain->Tail.Node;
                                      
40014ea8:	ba 02 20 04 	add  %o0, 4, %i5
                              
  head->next = tail;
                                                 
40014eac:	fa 22 00 00 	st  %i5, [ %o0 ]
                              
  return &the_chain->Tail.Node;
                                      
40014eb0:	86 02 20 0c 	add  %o0, 0xc, %g3
                            
40014eb4:	88 02 20 10 	add  %o0, 0x10, %g4
                           
  tail->previous = head;
                                             
40014eb8:	c4 20 a0 08 	st  %g2, [ %g2 + 8 ]
                          
    }
                                                                

                                                                     
    for (i = 0; i < FAT_HASH_SIZE; i++)
                              
        rtems_chain_initialize_empty(fs_info->vhash + i);
            

                                                                     
    fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));

40014ebc:	92 10 20 0c 	mov  0xc, %o1
                                 
  head->next = tail;
                                                 
40014ec0:	c8 20 a0 0c 	st  %g4, [ %g2 + 0xc ]
                        
40014ec4:	90 10 20 02 	mov  2, %o0
                                   
  head->previous = NULL;
                                             
40014ec8:	c0 20 a0 10 	clr  [ %g2 + 0x10 ]
                           
40014ecc:	7f ff c0 bc 	call  400051bc <calloc>
                       
40014ed0:	c6 20 a0 14 	st  %g3, [ %g2 + 0x14 ]
                       
40014ed4:	d0 24 a0 78 	st  %o0, [ %l2 + 0x78 ]
                       
    if ( fs_info->rhash == NULL )
                                    
40014ed8:	80 a2 20 00 	cmp  %o0, 0
                                   
40014edc:	02 80 00 e7 	be  40015278 <fat_init_volume_info+0x7dc>
     <== NEVER TAKEN
40014ee0:	84 10 00 08 	mov  %o0, %g2
                                 
    }
                                                                
    for (i = 0; i < FAT_HASH_SIZE; i++)
                              
        rtems_chain_initialize_empty(fs_info->rhash + i);
            

                                                                     
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
               
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
       
40014ee4:	c8 0c a0 03 	ldub  [ %l2 + 3 ], %g4
                        
40014ee8:	c6 04 a0 38 	ld  [ %l2 + 0x38 ], %g3
                       
40014eec:	c0 22 20 04 	clr  [ %o0 + 4 ]
                              
40014ef0:	87 28 c0 04 	sll  %g3, %g4, %g3
                            
  return &the_chain->Tail.Node;
                                      
40014ef4:	ba 02 20 04 	add  %o0, 4, %i5
                              
40014ef8:	87 28 e0 04 	sll  %g3, 4, %g3
                              
  head->next = tail;
                                                 
40014efc:	fa 22 00 00 	st  %i5, [ %o0 ]
                              
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
               
40014f00:	88 10 21 00 	mov  0x100, %g4
                               
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;
       
40014f04:	c6 24 a0 88 	st  %g3, [ %l2 + 0x88 ]
                       
  return &the_chain->Tail.Node;
                                      
40014f08:	86 02 20 0c 	add  %o0, 0xc, %g3
                            
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;
               
40014f0c:	c8 24 a0 84 	st  %g4, [ %l2 + 0x84 ]
                       
40014f10:	88 02 20 10 	add  %o0, 0x10, %g4
                           
    fs_info->index = 0;
                                              
40014f14:	c0 24 a0 80 	clr  [ %l2 + 0x80 ]
                           
    fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));

40014f18:	92 10 20 01 	mov  1, %o1
                                   
  tail->previous = head;
                                             
40014f1c:	c4 20 a0 08 	st  %g2, [ %g2 + 8 ]
                          
40014f20:	90 10 21 00 	mov  0x100, %o0
                               
  head->next = tail;
                                                 
40014f24:	c8 20 a0 0c 	st  %g4, [ %g2 + 0xc ]
                        
  head->previous = NULL;
                                             
40014f28:	c0 20 a0 10 	clr  [ %g2 + 0x10 ]
                           
40014f2c:	7f ff c0 a4 	call  400051bc <calloc>
                       
40014f30:	c6 20 a0 14 	st  %g3, [ %g2 + 0x14 ]
                       
    if ( fs_info->uino == NULL )
                                     
40014f34:	80 a2 20 00 	cmp  %o0, 0
                                   
40014f38:	02 80 00 b9 	be  4001521c <fat_init_volume_info+0x780>
     <== NEVER TAKEN
40014f3c:	d0 24 a0 7c 	st  %o0, [ %l2 + 0x7c ]
                       
        close(vol->fd);
                                              
        free(fs_info->vhash);
                                        
        free(fs_info->rhash);
                                        
        rtems_set_errno_and_return_minus_one( ENOMEM );
              
    }
                                                                
    fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));
 
40014f40:	d0 14 80 00 	lduh  [ %l2 ], %o0
                            
40014f44:	7f ff c0 9e 	call  400051bc <calloc>
                       
40014f48:	92 10 20 01 	mov  1, %o1
                                   
    if (fs_info->sec_buf == NULL)
                                    
40014f4c:	80 a2 20 00 	cmp  %o0, 0
                                   
40014f50:	02 80 00 ce 	be  40015288 <fat_init_volume_info+0x7ec>
     <== NEVER TAKEN
40014f54:	d0 24 a0 98 	st  %o0, [ %l2 + 0x98 ]
                       
    return (sec_num & (vol->spc - 1)) == 0;
                          
40014f58:	c4 0c a0 04 	ldub  [ %l2 + 4 ], %g2
                        
40014f5c:	c6 04 a0 3c 	ld  [ %l2 + 0x3c ], %g3
                       
40014f60:	84 00 bf ff 	add  %g2, -1, %g2
                             
    /*
                                                               
     * If possible we will use the cluster size as bdbuf block size for faster

     * file access. This requires that certain sectors are aligned to cluster

     * borders.
                                                      
     */
                                                              
    if (is_cluster_aligned(vol, vol->data_fsec)
                      
40014f64:	80 88 80 03 	btst  %g2, %g3
                                
40014f68:	12 80 00 d6 	bne  400152c0 <fat_init_volume_info+0x824>
    <== NEVER TAKEN
40014f6c:	01 00 00 00 	nop 
                                          
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))

40014f70:	c6 0c a0 16 	ldub  [ %l2 + 0x16 ], %g3
                     
40014f74:	80 a0 e0 04 	cmp  %g3, 4
                                   
40014f78:	22 80 00 07 	be,a   40014f94 <fat_init_volume_info+0x4f8>
  
40014f7c:	d2 04 a0 08 	ld  [ %l2 + 8 ], %o1
                          
    return (sec_num & (vol->spc - 1)) == 0;
                          
40014f80:	c6 04 a0 28 	ld  [ %l2 + 0x28 ], %g3
                       
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))

40014f84:	80 88 80 03 	btst  %g2, %g3
                                
40014f88:	12 80 00 ce 	bne  400152c0 <fat_init_volume_info+0x824>
    <== NEVER TAKEN
40014f8c:	01 00 00 00 	nop 
                                          
    {
                                                                
        sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);
   
40014f90:	d2 04 a0 08 	ld  [ %l2 + 8 ], %o1
                          
40014f94:	d0 04 a0 6c 	ld  [ %l2 + 0x6c ], %o0
                       
40014f98:	7f ff f3 af 	call  40011e54 <rtems_bdbuf_set_block_size>
   
40014f9c:	94 10 20 01 	mov  1, %o2
                                   
        if (sc == RTEMS_SUCCESSFUL)
                                  
40014fa0:	80 a2 20 00 	cmp  %o0, 0
                                   
40014fa4:	12 80 00 c7 	bne  400152c0 <fat_init_volume_info+0x824>
    
40014fa8:	01 00 00 00 	nop 
                                          
        {
                                                            
            vol->bytes_per_block = vol->bpc;
                         
40014fac:	c8 04 a0 08 	ld  [ %l2 + 8 ], %g4
                          
            vol->bytes_per_block_log2 = vol->bpc_log2;
               
40014fb0:	c6 0c a0 0c 	ldub  [ %l2 + 0xc ], %g3
                      
            vol->sectors_per_block = vol->spc;
                       
40014fb4:	c4 0c a0 04 	ldub  [ %l2 + 4 ], %g2
                        
            vol->bytes_per_block = vol->bpc;
                         
40014fb8:	c8 24 a0 10 	st  %g4, [ %l2 + 0x10 ]
                       
            vol->bytes_per_block_log2 = vol->bpc_log2;
               
40014fbc:	c6 2c a0 14 	stb  %g3, [ %l2 + 0x14 ]
                      
            vol->sectors_per_block = vol->spc;
                       
40014fc0:	c4 2c a0 0d 	stb  %g2, [ %l2 + 0xd ]
                       
40014fc4:	81 c7 e0 08 	ret 
                                          
40014fc8:	81 e8 00 00 	restore 
                                      
        if ( vol->data_cls < FAT_FAT16_MAX_CLN)
                      
40014fcc:	07 00 00 3f 	sethi  %hi(0xfc00), %g3
                       
40014fd0:	88 10 e3 f4 	or  %g3, 0x3f4, %g4	! fff4 <_Configuration_Interrupt_stack_size+0xeff4>

40014fd4:	80 a0 80 04 	cmp  %g2, %g4
                                 
40014fd8:	38 80 00 25 	bgu,a   4001506c <fat_init_volume_info+0x5d0>
 
40014fdc:	07 03 ff ff 	sethi  %hi(0xffffc00), %g3
                    
            vol->mask = FAT_FAT16_MASK;
                              
40014fe0:	84 10 e3 ff 	or  %g3, 0x3ff, %g2	! fffffff <RAM_SIZE+0xfbfffff>

            vol->type = FAT_FAT16;
                                   
40014fe4:	88 10 20 02 	mov  2, %g4
                                   
            vol->eoc_val = FAT_FAT16_EOC;
                            
40014fe8:	86 10 e3 f8 	or  %g3, 0x3f8, %g3
                           
            vol->type = FAT_FAT16;
                                   
40014fec:	c8 2c a0 16 	stb  %g4, [ %l2 + 0x16 ]
                      
            vol->mask = FAT_FAT16_MASK;
                              
40014ff0:	c4 24 a0 18 	st  %g2, [ %l2 + 0x18 ]
                       
40014ff4:	10 bf ff 95 	b  40014e48 <fat_init_volume_info+0x3ac>
      
40014ff8:	c6 24 a0 1c 	st  %g3, [ %l2 + 0x1c ]
                       
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);
    
40014ffc:	c2 0f bf 83 	ldub  [ %fp + -125 ], %g1
                     
40015000:	bb 28 60 08 	sll  %g1, 8, %i5
                              
40015004:	c2 0f bf 7f 	ldub  [ %fp + -129 ], %g1
                     
40015008:	85 28 60 10 	sll  %g1, 0x10, %g2
                           
4001500c:	c2 0f bf 7b 	ldub  [ %fp + -133 ], %g1
                     
40015010:	a9 28 60 18 	sll  %g1, 0x18, %l4
                           
40015014:	c2 0f bf 87 	ldub  [ %fp + -121 ], %g1
                     
40015018:	ba 17 40 02 	or  %i5, %g2, %i5
                             
4001501c:	ba 17 40 01 	or  %i5, %g1, %i5
                             
40015020:	a8 17 40 14 	or  %i5, %l4, %l4
                             
40015024:	10 bf ff 7a 	b  40014e0c <fat_init_volume_info+0x370>
      
40015028:	e8 24 a0 38 	st  %l4, [ %l2 + 0x38 ]
                       
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);
    
4001502c:	c2 0f bf 73 	ldub  [ %fp + -141 ], %g1
                     
40015030:	ab 28 60 08 	sll  %g1, 8, %l5
                              
40015034:	c2 0f bf 6f 	ldub  [ %fp + -145 ], %g1
                     
40015038:	87 28 60 10 	sll  %g1, 0x10, %g3
                           
4001503c:	c2 0f bf 6b 	ldub  [ %fp + -149 ], %g1
                     
40015040:	85 28 60 18 	sll  %g1, 0x18, %g2
                           
40015044:	c2 0f bf 77 	ldub  [ %fp + -137 ], %g1
                     
40015048:	aa 15 40 03 	or  %l5, %g3, %l5
                             
4001504c:	aa 15 40 01 	or  %l5, %g1, %l5
                             
40015050:	aa 15 40 02 	or  %l5, %g2, %l5
                             
40015054:	10 bf ff 62 	b  40014ddc <fat_init_volume_info+0x340>
      
40015058:	ea 24 a0 24 	st  %l5, [ %l2 + 0x24 ]
                       
4001505c:	7f ff fc e0 	call  400143dc <fat_buf_release.part.5>
       
40015060:	90 10 00 12 	mov  %l2, %o0
                                 
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;
      
40015064:	10 bf ff 84 	b  40014e74 <fat_init_volume_info+0x3d8>
      
40015068:	c4 0c a0 64 	ldub  [ %l2 + 0x64 ], %g2
                     
        else if ( vol->data_cls < FAT_FAT32_MASK - 1 )
               
4001506c:	88 10 e3 fd 	or  %g3, 0x3fd, %g4
                           
40015070:	80 a0 80 04 	cmp  %g2, %g4
                                 
40015074:	18 bf ff 25 	bgu  40014d08 <fat_init_volume_info+0x26c>
    <== NEVER TAKEN
40015078:	c2 0f bf 57 	ldub  [ %fp + -169 ], %g1
                     
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
      
4001507c:	85 28 60 08 	sll  %g1, 8, %g2
                              
40015080:	c2 0f bf 63 	ldub  [ %fp + -157 ], %g1
                     
40015084:	89 28 60 10 	sll  %g1, 0x10, %g4
                           
40015088:	c2 0f bf 5f 	ldub  [ %fp + -161 ], %g1
                     
            vol->mask = FAT_FAT32_MASK;
                              
4001508c:	b8 10 e3 ff 	or  %g3, 0x3ff, %i4
                           
            vol->eoc_val = FAT_FAT32_EOC;
                            
40015090:	ba 10 e3 f8 	or  %g3, 0x3f8, %i5
                           
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
      
40015094:	f6 0f bf 5b 	ldub  [ %fp + -165 ], %i3
                     
40015098:	87 28 60 18 	sll  %g1, 0x18, %g3
                           
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;

4001509c:	c2 0f bf 67 	ldub  [ %fp + -153 ], %g1
                     
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
      
400150a0:	84 10 80 04 	or  %g2, %g4, %g2
                             
            vol->mask = FAT_FAT32_MASK;
                              
400150a4:	f8 24 a0 18 	st  %i4, [ %l2 + 0x18 ]
                       
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
      
400150a8:	84 10 80 1b 	or  %g2, %i3, %g2
                             
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;

400150ac:	88 08 7f 80 	and  %g1, -128, %g4
                           
            vol->type = FAT_FAT32;
                                   
400150b0:	b6 10 20 04 	mov  4, %i3
                                   
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
      
400150b4:	84 10 80 03 	or  %g2, %g3, %g2
                             
            vol->type = FAT_FAT32;
                                   
400150b8:	f6 2c a0 16 	stb  %i3, [ %l2 + 0x16 ]
                      
        if (vol->mirror)
                                             
400150bc:	80 88 60 80 	btst  0x80, %g1
                               
            vol->eoc_val = FAT_FAT32_EOC;
                            
400150c0:	fa 24 a0 1c 	st  %i5, [ %l2 + 0x1c ]
                       
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);
      
400150c4:	c4 24 a0 44 	st  %g2, [ %l2 + 0x44 ]
                       
        if (vol->mirror)
                                             
400150c8:	02 80 00 42 	be  400151d0 <fat_init_volume_info+0x734>
     <== ALWAYS TAKEN
400150cc:	c8 2c a0 5c 	stb  %g4, [ %l2 + 0x5c ]
                      
            vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;

400150d0:	c2 0f bf 67 	ldub  [ %fp + -153 ], %g1
                     <== NOT EXECUTED
400150d4:	82 08 60 0f 	and  %g1, 0xf, %g1
                            <== NOT EXECUTED
400150d8:	c2 2c a0 64 	stb  %g1, [ %l2 + 0x64 ]
                      <== NOT EXECUTED
        vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);
   
400150dc:	c2 0f bf 4f 	ldub  [ %fp + -177 ], %g1
                     
400150e0:	93 28 60 08 	sll  %g1, 8, %o1
                              
400150e4:	c2 0f bf 53 	ldub  [ %fp + -173 ], %g1
                     
400150e8:	92 12 40 01 	or  %o1, %g1, %o1
                             
        if( vol->info_sec == 0 )
                                     
400150ec:	80 a2 60 00 	cmp  %o1, 0
                                   
400150f0:	02 bf ff 06 	be  40014d08 <fat_init_volume_info+0x26c>
     <== NEVER TAKEN
400150f4:	d2 34 a0 48 	sth  %o1, [ %l2 + 0x48 ]
                      
            ret = _fat_block_read(fs_info, vol->info_sec , 0,
        
400150f8:	96 10 20 04 	mov  4, %o3
                                   
400150fc:	98 07 bf 90 	add  %fp, -112, %o4
                           
40015100:	94 10 20 00 	clr  %o2
                                      
40015104:	7f ff fd 65 	call  40014698 <_fat_block_read>
              
40015108:	90 10 00 12 	mov  %l2, %o0
                                 
            if ( ret < 0 )
                                           
4001510c:	80 a2 20 00 	cmp  %o0, 0
                                   
40015110:	06 80 00 56 	bl  40015268 <fat_init_volume_info+0x7cc>
     <== NEVER TAKEN
40015114:	c6 0f bf 93 	ldub  [ %fp + -109 ], %g3
                     
            if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=
     
40015118:	87 28 e0 18 	sll  %g3, 0x18, %g3
                           
4001511c:	c4 0f bf 91 	ldub  [ %fp + -111 ], %g2
                     
40015120:	c8 0f bf 92 	ldub  [ %fp + -110 ], %g4
                     
40015124:	fa 0f bf 90 	ldub  [ %fp + -112 ], %i5
                     
40015128:	85 28 a0 08 	sll  %g2, 8, %g2
                              
4001512c:	89 29 20 10 	sll  %g4, 0x10, %g4
                           
40015130:	84 10 80 04 	or  %g2, %g4, %g2
                             
40015134:	84 10 80 1d 	or  %g2, %i5, %g2
                             
40015138:	84 10 80 03 	or  %g2, %g3, %g2
                             
4001513c:	07 10 58 54 	sethi  %hi(0x41615000), %g3
                   
40015140:	86 10 e2 52 	or  %g3, 0x252, %g3	! 41615252 <RAM_END+0x1215252>

40015144:	80 a0 80 03 	cmp  %g2, %g3
                                 
40015148:	12 bf fe ea 	bne  40014cf0 <fat_init_volume_info+0x254>
    <== NEVER TAKEN
4001514c:	98 07 bf 90 	add  %fp, -112, %o4
                           
                ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,

40015150:	d2 14 a0 48 	lduh  [ %l2 + 0x48 ], %o1
                     
40015154:	96 10 20 0c 	mov  0xc, %o3
                                 
40015158:	94 10 21 e4 	mov  0x1e4, %o2
                               
4001515c:	7f ff fd 4f 	call  40014698 <_fat_block_read>
              
40015160:	90 10 00 12 	mov  %l2, %o0
                                 
                if ( ret < 0 )
                                       
40015164:	80 a2 20 00 	cmp  %o0, 0
                                   
40015168:	06 80 00 3a 	bl  40015250 <fat_init_volume_info+0x7b4>
     <== NEVER TAKEN
4001516c:	c6 0f bf 95 	ldub  [ %fp + -107 ], %g3
                     
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
 
40015170:	f6 0f bf 96 	ldub  [ %fp + -106 ], %i3
                     
40015174:	f2 0f bf 94 	ldub  [ %fp + -108 ], %i1
                     
40015178:	f8 0f bf 97 	ldub  [ %fp + -105 ], %i4
                     
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
  
4001517c:	c4 0f bf 99 	ldub  [ %fp + -103 ], %g2
                     
40015180:	fa 0f bf 9a 	ldub  [ %fp + -102 ], %i5
                     
40015184:	f4 0f bf 98 	ldub  [ %fp + -104 ], %i2
                     
40015188:	c8 0f bf 9b 	ldub  [ %fp + -101 ], %g4
                     
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
 
4001518c:	87 28 e0 08 	sll  %g3, 8, %g3
                              
40015190:	b7 2e e0 10 	sll  %i3, 0x10, %i3
                           
40015194:	b9 2f 20 18 	sll  %i4, 0x18, %i4
                           
40015198:	86 10 c0 1b 	or  %g3, %i3, %g3
                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
  
4001519c:	85 28 a0 08 	sll  %g2, 8, %g2
                              
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
 
400151a0:	86 10 c0 19 	or  %g3, %i1, %g3
                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
  
400151a4:	bb 2f 60 10 	sll  %i5, 0x10, %i5
                           
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);
 
400151a8:	86 10 c0 1c 	or  %g3, %i4, %g3
                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
  
400151ac:	84 10 80 1d 	or  %g2, %i5, %g2
                             
400151b0:	89 29 20 18 	sll  %g4, 0x18, %g4
                           
400151b4:	84 10 80 1a 	or  %g2, %i2, %g2
                             
                vol->free_cls_in_fs_info =
                           
400151b8:	c6 24 a0 50 	st  %g3, [ %l2 + 0x50 ]
                       
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);
  
400151bc:	84 10 80 04 	or  %g2, %g4, %g2
                             
                vol->free_cls = vol->free_cls_in_fs_info;
            
400151c0:	c6 24 a0 4c 	st  %g3, [ %l2 + 0x4c ]
                       
                vol->next_cl_in_fs_info =
                            
400151c4:	c4 24 a0 58 	st  %g2, [ %l2 + 0x58 ]
                       
400151c8:	10 bf ff 26 	b  40014e60 <fat_init_volume_info+0x3c4>
      
400151cc:	c4 24 a0 54 	st  %g2, [ %l2 + 0x54 ]
                       
            vol->afat = 0;
                                           
400151d0:	10 bf ff c3 	b  400150dc <fat_init_volume_info+0x640>
      
400151d4:	c0 2c a0 64 	clrb  [ %l2 + 0x64 ]
                          
        close(vol->fd);
                                              
400151d8:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
400151dc:	7f ff c0 1d 	call  40005250 <close>
                        <== NOT EXECUTED
400151e0:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENXIO);
                 
400151e4:	40 00 17 d6 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400151e8:	b0 10 3f ff 	mov  -1, %i0	! ffffffff <RAM_END+0xbfbfffff>
  <== NOT EXECUTED
400151ec:	82 10 20 06 	mov  6, %g1
                                   <== NOT EXECUTED
400151f0:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400151f4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400151f8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
        close(vol->fd);
                                              
400151fc:	7f ff c0 15 	call  40005250 <close>
                        <== NOT EXECUTED
40015200:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( EIO );
                 
40015204:	40 00 17 ce 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40015208:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4001520c:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
40015210:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40015214:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40015218:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
        close(vol->fd);
                                              
4001521c:	7f ff c0 0d 	call  40005250 <close>
                        <== NOT EXECUTED
40015220:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
        free(fs_info->vhash);
                                        
40015224:	7f ff c0 6b 	call  400053d0 <free>
                         <== NOT EXECUTED
40015228:	d0 04 a0 74 	ld  [ %l2 + 0x74 ], %o0
                       <== NOT EXECUTED
        free(fs_info->rhash);
                                        
4001522c:	d0 04 a0 78 	ld  [ %l2 + 0x78 ], %o0
                       <== NOT EXECUTED
        free(fs_info->uino);
                                         
40015230:	7f ff c0 68 	call  400053d0 <free>
                         <== NOT EXECUTED
40015234:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );
              
40015238:	40 00 17 c1 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001523c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40015240:	82 10 20 0c 	mov  0xc, %g1	! c <_TLS_Alignment+0xb>
        <== NOT EXECUTED
40015244:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40015248:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001524c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    if (fs_info->c.state == FAT_CACHE_EMPTY)
                         
40015250:	c4 0c a0 91 	ldub  [ %l2 + 0x91 ], %g2
                     <== NOT EXECUTED
40015254:	80 a0 a0 00 	cmp  %g2, 0
                                   <== NOT EXECUTED
40015258:	02 80 00 04 	be  40015268 <fat_init_volume_info+0x7cc>
     <== NOT EXECUTED
4001525c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40015260:	7f ff fc 5f 	call  400143dc <fat_buf_release.part.5>
       <== NOT EXECUTED
40015264:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED
                    close(vol->fd);
                                  
40015268:	7f ff bf fa 	call  40005250 <close>
                        <== NOT EXECUTED
4001526c:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
                    return -1;
                                       
40015270:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40015274:	91 e8 3f ff 	restore  %g0, -1, %o0
                         <== NOT EXECUTED
        close(vol->fd);
                                              
40015278:	7f ff bf f6 	call  40005250 <close>
                        <== NOT EXECUTED
4001527c:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
        free(fs_info->vhash);
                                        
40015280:	10 bf ff ec 	b  40015230 <fat_init_volume_info+0x794>
      <== NOT EXECUTED
40015284:	d0 04 a0 74 	ld  [ %l2 + 0x74 ], %o0
                       <== NOT EXECUTED
        close(vol->fd);
                                              
40015288:	7f ff bf f2 	call  40005250 <close>
                        <== NOT EXECUTED
4001528c:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
        free(fs_info->vhash);
                                        
40015290:	7f ff c0 50 	call  400053d0 <free>
                         <== NOT EXECUTED
40015294:	d0 04 a0 74 	ld  [ %l2 + 0x74 ], %o0
                       <== NOT EXECUTED
        free(fs_info->rhash);
                                        
40015298:	7f ff c0 4e 	call  400053d0 <free>
                         <== NOT EXECUTED
4001529c:	d0 04 a0 78 	ld  [ %l2 + 0x78 ], %o0
                       <== NOT EXECUTED
        free(fs_info->uino);
                                         
400152a0:	10 bf ff e4 	b  40015230 <fat_init_volume_info+0x794>
      <== NOT EXECUTED
400152a4:	d0 04 a0 7c 	ld  [ %l2 + 0x7c ], %o0
                       <== NOT EXECUTED
        close(vol->fd);
                                              
400152a8:	7f ff bf ea 	call  40005250 <close>
                        <== NOT EXECUTED
400152ac:	d0 04 a0 68 	ld  [ %l2 + 0x68 ], %o0
                       <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );
              
400152b0:	40 00 17 a3 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400152b4:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400152b8:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
400152bc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400152c0:	81 c7 e0 08 	ret 
                                          
400152c4:	81 e8 00 00 	restore 
                                      

                                                                     

4001337c <fat_scan_fat_for_free_clusters>: {
4001337c:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t       data_cls_val = fs_info->vol.data_cls + 2;
         
40013380:	c2 06 20 40 	ld  [ %i0 + 0x40 ], %g1
                       
    if (fs_info->vol.next_cl - 2 < fs_info->vol.data_cls)
            
40013384:	e0 06 20 54 	ld  [ %i0 + 0x54 ], %l0
                       
40013388:	84 04 3f fe 	add  %l0, -2, %g2
                             
{
                                                                    
4001338c:	a4 10 00 18 	mov  %i0, %l2
                                 
    if (fs_info->vol.next_cl - 2 < fs_info->vol.data_cls)
            
40013390:	80 a0 40 02 	cmp  %g1, %g2
                                 
40013394:	18 80 00 03 	bgu  400133a0 <fat_scan_fat_for_free_clusters+0x24>

40013398:	a6 00 60 02 	add  %g1, 2, %l3
                              
    uint32_t       cl4find = 2;
                                      
4001339c:	a0 10 20 02 	mov  2, %l0
                                   
    *cls_added = 0;
                                                  
400133a0:	c0 26 c0 00 	clr  [ %i3 ]
                                  
    while (*cls_added != count && i < data_cls_val)
                  
400133a4:	80 a4 e0 02 	cmp  %l3, 2
                                   
400133a8:	18 80 00 03 	bgu  400133b4 <fat_scan_fat_for_free_clusters+0x38>
<== ALWAYS TAKEN
400133ac:	82 10 20 01 	mov  1, %g1
                                   
400133b0:	82 10 20 00 	clr  %g1
                                      <== NOT EXECUTED
400133b4:	80 88 60 ff 	btst  0xff, %g1
                               
400133b8:	02 80 00 50 	be  400134f8 <fat_scan_fat_for_free_clusters+0x17c>
<== NEVER TAKEN
400133bc:	80 a6 a0 00 	cmp  %i2, 0
                                   
400133c0:	02 80 00 4e 	be  400134f8 <fat_scan_fat_for_free_clusters+0x17c>
<== NEVER TAKEN
400133c4:	a2 10 20 02 	mov  2, %l1
                                   
    uint32_t       save_cln = FAT_UNDEFINED_VALUE;
                   
400133c8:	10 80 00 19 	b  4001342c <fat_scan_fat_for_free_clusters+0xb0>

400133cc:	a8 10 3f ff 	mov  -1, %l4
                                  
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);

400133d0:	94 10 3f ff 	mov  -1, %o2
                                  
400133d4:	92 10 00 10 	mov  %l0, %o1
                                 
400133d8:	7f ff ff 0f 	call  40013014 <fat_set_fat_cluster>
          
400133dc:	90 10 00 12 	mov  %l2, %o0
                                 
                if ( rc != RC_OK )
                                   
400133e0:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
400133e4:	12 80 00 38 	bne  400134c4 <fat_scan_fat_for_free_clusters+0x148>
<== NEVER TAKEN
400133e8:	80 a7 60 00 	cmp  %i5, 0
                                   
            if (zero_fill)
                                           
400133ec:	32 80 00 38 	bne,a   400134cc <fat_scan_fat_for_free_clusters+0x150>

400133f0:	d6 04 a0 08 	ld  [ %l2 + 8 ], %o3
                          
            (*cls_added)++;
                                          
400133f4:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              
400133f8:	82 00 60 01 	inc  %g1
                                      
400133fc:	c2 26 c0 00 	st  %g1, [ %i3 ]
                              
40013400:	a8 10 00 10 	mov  %l0, %l4
                                 
        cl4find++;
                                                   
40013404:	a0 04 20 01 	inc  %l0
                                      
        if (cl4find >= data_cls_val)
                                 
40013408:	80 a4 c0 10 	cmp  %l3, %l0
                                 
4001340c:	18 80 00 03 	bgu  40013418 <fat_scan_fat_for_free_clusters+0x9c>

40013410:	a2 04 60 01 	inc  %l1
                                      
            cl4find = 2;
                                             
40013414:	a0 10 20 02 	mov  2, %l0
                                   
    while (*cls_added != count && i < data_cls_val)
                  
40013418:	80 a6 80 01 	cmp  %i2, %g1
                                 
4001341c:	02 80 00 38 	be  400134fc <fat_scan_fat_for_free_clusters+0x180>

40013420:	80 a4 40 13 	cmp  %l1, %l3
                                 
40013424:	3a 80 00 37 	bcc,a   40013500 <fat_scan_fat_for_free_clusters+0x184>

40013428:	e8 27 00 00 	st  %l4, [ %i4 ]
                              
        uint32_t next_cln = 0;
                                       
4001342c:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
        rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);
       
40013430:	94 07 bf fc 	add  %fp, -4, %o2
                             
40013434:	92 10 00 10 	mov  %l0, %o1
                                 
40013438:	7f ff fe 84 	call  40012e48 <fat_get_fat_cluster>
          
4001343c:	90 10 00 12 	mov  %l2, %o0
                                 
            if (*cls_added != 0)
                                     
40013440:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              
        if ( rc != RC_OK )
                                           
40013444:	80 a2 20 00 	cmp  %o0, 0
                                   
40013448:	12 80 00 3a 	bne  40013530 <fat_scan_fat_for_free_clusters+0x1b4>
<== NEVER TAKEN
4001344c:	b0 10 00 08 	mov  %o0, %i0
                                 
        if (next_cln == FAT_GENFAT_FREE)
                             
40013450:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
40013454:	80 a0 a0 00 	cmp  %g2, 0
                                   
40013458:	32 bf ff ec 	bne,a   40013408 <fat_scan_fat_for_free_clusters+0x8c>

4001345c:	a0 04 20 01 	inc  %l0
                                      
            if (*cls_added == 0)
                                     
40013460:	80 a0 60 00 	cmp  %g1, 0
                                   
40013464:	22 bf ff db 	be,a   400133d0 <fat_scan_fat_for_free_clusters+0x54>

40013468:	e0 26 40 00 	st  %l0, [ %i1 ]
                              
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);

4001346c:	94 10 3f ff 	mov  -1, %o2
                                  
40013470:	92 10 00 10 	mov  %l0, %o1
                                 
40013474:	7f ff fe e8 	call  40013014 <fat_set_fat_cluster>
          
40013478:	90 10 00 12 	mov  %l2, %o0
                                 
                if ( rc != RC_OK )
                                   
4001347c:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40013480:	12 80 00 2f 	bne  4001353c <fat_scan_fat_for_free_clusters+0x1c0>
<== NEVER TAKEN
40013484:	94 10 00 10 	mov  %l0, %o2
                                 
                rc = fat_set_fat_cluster(fs_info, save_cln, cl4find);

40013488:	92 10 00 14 	mov  %l4, %o1
                                 
4001348c:	7f ff fe e2 	call  40013014 <fat_set_fat_cluster>
          
40013490:	90 10 00 12 	mov  %l2, %o0
                                 
                if ( rc != RC_OK )
                                   
40013494:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40013498:	02 bf ff d5 	be  400133ec <fat_scan_fat_for_free_clusters+0x70>
<== ALWAYS TAKEN
4001349c:	80 a7 60 00 	cmp  %i5, 0
                                   
    fat_free_fat_clusters_chain(fs_info, (*chain));
                  
400134a0:	d2 06 40 00 	ld  [ %i1 ], %o1
                              <== NOT EXECUTED
400134a4:	7f ff ff 7e 	call  4001329c <fat_free_fat_clusters_chain>
  <== NOT EXECUTED
400134a8:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED
    (void) fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);
   
400134ac:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
400134b0:	92 10 00 10 	mov  %l0, %o1
                                 <== NOT EXECUTED
400134b4:	7f ff fe d8 	call  40013014 <fat_set_fat_cluster>
          <== NOT EXECUTED
400134b8:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED
    fat_buf_release(fs_info);
                                        
400134bc:	40 00 04 6e 	call  40014674 <fat_buf_release>
              <== NOT EXECUTED
400134c0:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED
    return rc;
                                                       
400134c4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400134c8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
                ssize_t bytes_written =
                              
400134cc:	98 10 20 00 	clr  %o4
                                      
400134d0:	94 10 20 00 	clr  %o2
                                      
400134d4:	92 10 00 10 	mov  %l0, %o1
                                 
400134d8:	40 00 04 bb 	call  400147c4 <fat_cluster_set>
              
400134dc:	90 10 00 12 	mov  %l2, %o0
                                 
                if (fs_info->vol.bpc != bytes_written)
               
400134e0:	c2 04 a0 08 	ld  [ %l2 + 8 ], %g1
                          
400134e4:	80 a0 40 08 	cmp  %g1, %o0
                                 
400134e8:	22 bf ff c4 	be,a   400133f8 <fat_scan_fat_for_free_clusters+0x7c>
<== ALWAYS TAKEN
400134ec:	c2 06 c0 00 	ld  [ %i3 ], %g1
                              
                    rc = -1;
                                         
400134f0:	10 bf ff ec 	b  400134a0 <fat_scan_fat_for_free_clusters+0x124>
<== NOT EXECUTED
400134f4:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
    uint32_t       save_cln = FAT_UNDEFINED_VALUE;
                   
400134f8:	a8 10 3f ff 	mov  -1, %l4
                                  <== NOT EXECUTED
    *last_cl = save_cln;
                                             
400134fc:	e8 27 00 00 	st  %l4, [ %i4 ]
                              
    fs_info->vol.next_cl = save_cln;
                                 
40013500:	e8 24 a0 54 	st  %l4, [ %l2 + 0x54 ]
                       
    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)
                
40013504:	c2 04 a0 4c 	ld  [ %l2 + 0x4c ], %g1
                       
40013508:	80 a0 7f ff 	cmp  %g1, -1
                                  
4001350c:	02 80 00 05 	be  40013520 <fat_scan_fat_for_free_clusters+0x1a4>
<== ALWAYS TAKEN
40013510:	90 10 00 12 	mov  %l2, %o0
                                 
        fs_info->vol.free_cls -= (*cls_added);
                       
40013514:	c4 06 c0 00 	ld  [ %i3 ], %g2
                              <== NOT EXECUTED
40013518:	82 20 40 02 	sub  %g1, %g2, %g1
                            <== NOT EXECUTED
4001351c:	c2 24 a0 4c 	st  %g1, [ %l2 + 0x4c ]
                       <== NOT EXECUTED
    fat_buf_release(fs_info);
                                        
40013520:	40 00 04 55 	call  40014674 <fat_buf_release>
              
40013524:	b0 10 20 00 	clr  %i0
                                      
}
                                                                    
40013528:	81 c7 e0 08 	ret 
                                          
4001352c:	81 e8 00 00 	restore 
                                      
            if (*cls_added != 0)
                                     
40013530:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40013534:	02 80 00 05 	be  40013548 <fat_scan_fat_for_free_clusters+0x1cc>
<== NOT EXECUTED
40013538:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
                    fat_free_fat_clusters_chain(fs_info, (*chain));
  
4001353c:	d2 06 40 00 	ld  [ %i1 ], %o1
                              <== NOT EXECUTED
40013540:	7f ff ff 57 	call  4001329c <fat_free_fat_clusters_chain>
  <== NOT EXECUTED
40013544:	90 10 00 12 	mov  %l2, %o0
                                 <== NOT EXECUTED
                    return rc;
                                       
40013548:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001354c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40014718 <fat_sector_write>: fat_fs_info_t *fs_info, uint32_t start, uint32_t offset, uint32_t count, const void *buff) {
40014718:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    uint32_t            sec_num = start;
                             
    uint32_t            ofs = offset;
                                
    uint8_t            *sec_buf;
                                     
    uint32_t            c = 0;
                                       

                                                                     
    while(count > 0)
                                                 
4001471c:	80 a6 e0 00 	cmp  %i3, 0
                                   
40014720:	02 80 00 27 	be  400147bc <fat_sector_write+0xa4>
          <== NEVER TAKEN
40014724:	a0 10 20 00 	clr  %l0
                                      
    fs_info->c.modified = true;
                                      
40014728:	10 80 00 13 	b  40014774 <fat_sector_write+0x5c>
           
4001472c:	a2 10 20 01 	mov  1, %l1
                                   
        c = MIN(count, (fs_info->vol.bps - ofs));
                    

                                                                     
        if (c == fs_info->vol.bytes_per_block)
                       
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);

        else
                                                         
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);

40014730:	94 10 20 01 	mov  1, %o2
                                   
40014734:	96 07 bf fc 	add  %fp, -4, %o3
                             
40014738:	7f ff ff 9f 	call  400145b4 <fat_buf_access>
               
4001473c:	90 10 00 18 	mov  %i0, %o0
                                 
        if (rc != RC_OK)
                                             
            return -1;
                                               

                                                                     
        memcpy((sec_buf + ofs), (buff + cmpltd), c);
                 
40014740:	92 07 00 10 	add  %i4, %l0, %o1
                            
        if (rc != RC_OK)
                                             
40014744:	80 a2 20 00 	cmp  %o0, 0
                                   
40014748:	12 80 00 1c 	bne  400147b8 <fat_sector_write+0xa0>
         <== NEVER TAKEN
4001474c:	94 10 00 1d 	mov  %i5, %o2
                                 
        memcpy((sec_buf + ofs), (buff + cmpltd), c);
                 
40014750:	d0 07 bf fc 	ld  [ %fp + -4 ], %o0
                         
40014754:	40 00 1d 6b 	call  4001bd00 <memcpy>
                       
40014758:	90 02 00 1a 	add  %o0, %i2, %o0
                            
4001475c:	e2 2e 20 90 	stb  %l1, [ %i0 + 0x90 ]
                      

                                                                     
        fat_buf_mark_modified(fs_info);
                              

                                                                     
        count -= c;
                                                  
        cmpltd +=c;
                                                  
40014760:	a0 04 00 1d 	add  %l0, %i5, %l0
                            
        sec_num++;
                                                   
40014764:	b2 06 60 01 	inc  %i1
                                      
    while(count > 0)
                                                 
40014768:	b6 a6 c0 1d 	subcc  %i3, %i5, %i3
                          
4001476c:	02 80 00 14 	be  400147bc <fat_sector_write+0xa4>
          <== ALWAYS TAKEN
40014770:	b4 10 20 00 	clr  %i2
                                      
        c = MIN(count, (fs_info->vol.bps - ofs));
                    
40014774:	fa 16 00 00 	lduh  [ %i0 ], %i5
                            
40014778:	ba 27 40 1a 	sub  %i5, %i2, %i5
                            
4001477c:	80 a7 40 1b 	cmp  %i5, %i3
                                 
40014780:	38 80 00 02 	bgu,a   40014788 <fat_sector_write+0x70>
      
40014784:	ba 10 00 1b 	mov  %i3, %i5
                                 
        if (c == fs_info->vol.bytes_per_block)
                       
40014788:	c2 06 20 10 	ld  [ %i0 + 0x10 ], %g1
                       
4001478c:	80 a0 40 1d 	cmp  %g1, %i5
                                 
40014790:	12 bf ff e8 	bne  40014730 <fat_sector_write+0x18>
         <== ALWAYS TAKEN
40014794:	92 10 00 19 	mov  %i1, %o1
                                 
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);

40014798:	94 10 20 02 	mov  2, %o2
                                   <== NOT EXECUTED
4001479c:	96 07 bf fc 	add  %fp, -4, %o3
                             <== NOT EXECUTED
400147a0:	7f ff ff 85 	call  400145b4 <fat_buf_access>
               <== NOT EXECUTED
400147a4:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
        memcpy((sec_buf + ofs), (buff + cmpltd), c);
                 
400147a8:	92 07 00 10 	add  %i4, %l0, %o1
                            <== NOT EXECUTED
        if (rc != RC_OK)
                                             
400147ac:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
400147b0:	02 bf ff e8 	be  40014750 <fat_sector_write+0x38>
          <== NOT EXECUTED
400147b4:	94 10 00 1d 	mov  %i5, %o2
                                 <== NOT EXECUTED
            return -1;
                                               
400147b8:	a0 10 3f ff 	mov  -1, %l0
                                  <== NOT EXECUTED
        ofs = 0;
                                                     
    }
                                                                
    return cmpltd;
                                                   
}
                                                                    
400147bc:	81 c7 e0 08 	ret 
                                          
400147c0:	91 e8 00 10 	restore  %g0, %l0, %o0
                        

                                                                     

40013014 <fat_set_fat_cluster>: fat_set_fat_cluster( fat_fs_info_t *fs_info, uint32_t cln, uint32_t in_val ) {
40013014:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    int                 rc = RC_OK;
                                  
    uint32_t            sec = 0;
                                     
    uint32_t            ofs = 0;
                                     
    uint16_t            fat16_clv = 0;
                               
    uint32_t            fat32_clv = 0;
                               
    uint8_t            *sec_buf = NULL;
                              
40013018:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             

                                                                     
    /* sanity check */
                                               
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )
          
4001301c:	80 a6 60 01 	cmp  %i1, 1
                                   
40013020:	08 80 00 74 	bleu  400131f0 <fat_set_fat_cluster+0x1dc>
    <== NEVER TAKEN
40013024:	ba 10 00 18 	mov  %i0, %i5
                                 
40013028:	c2 06 20 40 	ld  [ %i0 + 0x40 ], %g1
                       
4001302c:	82 00 60 01 	inc  %g1
                                      
40013030:	80 a0 40 19 	cmp  %g1, %i1
                                 
40013034:	0a 80 00 6f 	bcs  400131f0 <fat_set_fat_cluster+0x1dc>
     <== NEVER TAKEN
40013038:	01 00 00 00 	nop 
                                          
        rtems_set_errno_and_return_minus_one(EIO);
                   

                                                                     
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

4001303c:	c2 0e 20 16 	ldub  [ %i0 + 0x16 ], %g1
                     
40013040:	80 88 60 01 	btst  1, %g1
                                  
40013044:	12 80 00 22 	bne  400130cc <fat_set_fat_cluster+0xb8>
      
40013048:	b7 36 60 01 	srl  %i1, 1, %i3
                              
4001304c:	80 88 60 02 	btst  2, %g1
                                  
40013050:	02 80 00 03 	be  4001305c <fat_set_fat_cluster+0x48>
       
40013054:	a1 2e 60 02 	sll  %i1, 2, %l0
                              
40013058:	a1 2e 60 01 	sll  %i1, 1, %l0
                              
4001305c:	f8 0f 60 02 	ldub  [ %i5 + 2 ], %i4
                        
40013060:	c2 07 60 60 	ld  [ %i5 + 0x60 ], %g1
                       
40013064:	b9 34 00 1c 	srl  %l0, %i4, %i4
                            
          fs_info->vol.afat_loc;
                                     
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);

40013068:	f6 17 40 00 	lduh  [ %i5 ], %i3
                            
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +

4001306c:	b8 07 00 01 	add  %i4, %g1, %i4
                            

                                                                     
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);
   
40013070:	94 10 20 01 	mov  1, %o2
                                   
40013074:	96 07 bf fc 	add  %fp, -4, %o3
                             
40013078:	92 10 00 1c 	mov  %i4, %o1
                                 
4001307c:	40 00 05 4e 	call  400145b4 <fat_buf_access>
               
40013080:	90 10 00 1d 	mov  %i5, %o0
                                 
    if (rc != RC_OK)
                                                 
40013084:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40013088:	12 80 00 0f 	bne  400130c4 <fat_set_fat_cluster+0xb0>
      <== NEVER TAKEN
4001308c:	b6 06 ff ff 	add  %i3, -1, %i3
                             
        return rc;
                                                   

                                                                     
    switch ( fs_info->vol.type )
                                     
40013090:	e2 0f 60 16 	ldub  [ %i5 + 0x16 ], %l1
                     
40013094:	80 a4 60 02 	cmp  %l1, 2
                                   
40013098:	02 80 00 35 	be  4001316c <fat_set_fat_cluster+0x158>
      
4001309c:	b6 0e c0 10 	and  %i3, %l0, %i3
                            
400130a0:	80 a4 60 04 	cmp  %l1, 4
                                   
400130a4:	02 80 00 26 	be  4001313c <fat_set_fat_cluster+0x128>
      
400130a8:	80 a4 60 01 	cmp  %l1, 1
                                   
400130ac:	02 80 00 0a 	be  400130d4 <fat_set_fat_cluster+0xc0>
       <== ALWAYS TAKEN
400130b0:	80 8e 60 01 	btst  1, %i1
                                  

                                                                     
            fat_buf_mark_modified(fs_info);
                          
            break;
                                                   

                                                                     
        default:
                                                     
            rtems_set_errno_and_return_minus_one(EIO);
               
400130b4:	40 00 20 22 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400130b8:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400130bc:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
400130c0:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
            break;
                                                   

                                                                     
    }
                                                                

                                                                     
    return RC_OK;
                                                    
}
                                                                    
400130c4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400130c8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
400130cc:	10 bf ff e4 	b  4001305c <fat_set_fat_cluster+0x48>
        
400130d0:	a0 06 c0 19 	add  %i3, %i1, %l0
                            
            if ( FAT_CLUSTER_IS_ODD(cln) )
                           
400130d4:	02 80 00 30 	be  40013194 <fat_set_fat_cluster+0x180>
      
400130d8:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
                *(sec_buf + ofs) &= 0x0F;
                            
400130dc:	c4 08 40 1b 	ldub  [ %g1 + %i3 ], %g2
                      
400130e0:	84 08 a0 0f 	and  %g2, 0xf, %g2
                            
400130e4:	c4 28 40 1b 	stb  %g2, [ %g1 + %i3 ]
                       
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;
 
400130e8:	83 2e a0 04 	sll  %i2, 4, %g1
                              
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00F0);
   
400130ec:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
400130f0:	c6 08 80 1b 	ldub  [ %g2 + %i3 ], %g3
                      
400130f4:	82 10 40 03 	or  %g1, %g3, %g1
                             
400130f8:	c2 28 80 1b 	stb  %g1, [ %g2 + %i3 ]
                       
}
                                                                    

                                                                     
static inline void
                                                   
fat_buf_mark_modified(fat_fs_info_t *fs_info)
                        
{
                                                                    
    fs_info->c.modified = true;
                                      
400130fc:	e2 2f 60 90 	stb  %l1, [ %i5 + 0x90 ]
                      
                if ( ofs == (fs_info->vol.bps - 1) )
                 
40013100:	c2 17 40 00 	lduh  [ %i5 ], %g1
                            
40013104:	82 00 7f ff 	add  %g1, -1, %g1
                             
40013108:	80 a0 40 1b 	cmp  %g1, %i3
                                 
4001310c:	02 80 00 52 	be  40013254 <fat_set_fat_cluster+0x240>
      
40013110:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
                    *(sec_buf + ofs + 1) &= 0x00;
                    
40013114:	b6 06 e0 01 	inc  %i3
                                      
40013118:	c0 28 40 1b 	clrb  [ %g1 + %i3 ]
                           
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);

4001311c:	83 2e a0 14 	sll  %i2, 0x14, %g1
                           
40013120:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
40013124:	c6 08 80 1b 	ldub  [ %g2 + %i3 ], %g3
                      
40013128:	83 30 60 18 	srl  %g1, 0x18, %g1
                           
4001312c:	82 10 40 03 	or  %g1, %g3, %g1
                             
40013130:	c2 28 80 1b 	stb  %g1, [ %g2 + %i3 ]
                       
40013134:	81 c7 e0 08 	ret 
                                          
40013138:	81 e8 00 00 	restore 
                                      
            fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));
          
4001313c:	11 3c 00 00 	sethi  %hi(0xf0000000), %o0
                   
40013140:	40 00 55 f3 	call  4002890c <__bswapsi2>
                   
40013144:	90 2e 80 08 	andn  %i2, %o0, %o0
                           
            *((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);
   
40013148:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
4001314c:	c2 00 80 1b 	ld  [ %g2 + %i3 ], %g1
                        
40013150:	82 08 60 f0 	and  %g1, 0xf0, %g1
                           
            *((uint32_t *)(sec_buf + ofs)) |= fat32_clv;
             
40013154:	90 10 40 08 	or  %g1, %o0, %o0
                             
40013158:	d0 20 80 1b 	st  %o0, [ %g2 + %i3 ]
                        
4001315c:	82 10 20 01 	mov  1, %g1
                                   
40013160:	c2 2f 60 90 	stb  %g1, [ %i5 + 0x90 ]
                      
40013164:	81 c7 e0 08 	ret 
                                          
40013168:	81 e8 00 00 	restore 
                                      
                    (uint16_t  )(CT_LE_W(in_val));
                   
4001316c:	83 2e a0 08 	sll  %i2, 8, %g1
                              
40013170:	b5 2e a0 10 	sll  %i2, 0x10, %i2
                           
40013174:	b5 36 a0 18 	srl  %i2, 0x18, %i2
                           
40013178:	b4 10 40 1a 	or  %g1, %i2, %i2
                             
            *((uint16_t   *)(sec_buf + ofs)) =
                       
4001317c:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
40013180:	f4 30 40 1b 	sth  %i2, [ %g1 + %i3 ]
                       
40013184:	82 10 20 01 	mov  1, %g1
                                   
40013188:	c2 2f 60 90 	stb  %g1, [ %i5 + 0x90 ]
                      
4001318c:	81 c7 e0 08 	ret 
                                          
40013190:	81 e8 00 00 	restore 
                                      
                *(sec_buf + ofs) &= 0x00;
                            
40013194:	c0 28 40 1b 	clrb  [ %g1 + %i3 ]
                           
                fat16_clv = ((uint16_t  )in_val) & FAT_FAT12_MASK;
   
40013198:	b4 0e af ff 	and  %i2, 0xfff, %i2
                          
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00FF);
   
4001319c:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
400131a0:	c2 08 80 1b 	ldub  [ %g2 + %i3 ], %g1
                      
400131a4:	82 16 80 01 	or  %i2, %g1, %g1
                             
400131a8:	c2 28 80 1b 	stb  %g1, [ %g2 + %i3 ]
                       
400131ac:	e2 2f 60 90 	stb  %l1, [ %i5 + 0x90 ]
                      
                if ( ofs == (fs_info->vol.bps - 1) )
                 
400131b0:	c2 17 40 00 	lduh  [ %i5 ], %g1
                            
400131b4:	82 00 7f ff 	add  %g1, -1, %g1
                             
400131b8:	80 a0 40 1b 	cmp  %g1, %i3
                                 
400131bc:	02 80 00 13 	be  40013208 <fat_set_fat_cluster+0x1f4>
      <== NEVER TAKEN
400131c0:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
                    *(sec_buf + ofs + 1) &= 0xF0;
                    
400131c4:	b6 06 e0 01 	inc  %i3
                                      
400131c8:	c2 08 80 1b 	ldub  [ %g2 + %i3 ], %g1
                      
400131cc:	82 08 7f f0 	and  %g1, -16, %g1
                            
400131d0:	c2 28 80 1b 	stb  %g1, [ %g2 + %i3 ]
                       
                    *(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);

400131d4:	b5 36 a0 08 	srl  %i2, 8, %i2
                              
400131d8:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
400131dc:	c4 08 40 1b 	ldub  [ %g1 + %i3 ], %g2
                      
400131e0:	b4 16 80 02 	or  %i2, %g2, %i2
                             
400131e4:	f4 28 40 1b 	stb  %i2, [ %g1 + %i3 ]
                       
400131e8:	81 c7 e0 08 	ret 
                                          
400131ec:	81 e8 00 00 	restore 
                                      
        rtems_set_errno_and_return_minus_one(EIO);
                   
400131f0:	40 00 1f d3 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400131f4:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400131f8:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
400131fc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
40013200:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013204:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,

40013208:	96 07 bf fc 	add  %fp, -4, %o3
                             <== NOT EXECUTED
4001320c:	94 10 20 01 	mov  1, %o2
                                   <== NOT EXECUTED
40013210:	92 07 20 01 	add  %i4, 1, %o1
                              <== NOT EXECUTED
40013214:	40 00 04 e8 	call  400145b4 <fat_buf_access>
               <== NOT EXECUTED
40013218:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
                    if (rc != RC_OK)
                                 
4001321c:	b0 92 20 00 	orcc  %o0, 0, %i0
                             <== NOT EXECUTED
40013220:	12 bf ff a9 	bne  400130c4 <fat_set_fat_cluster+0xb0>
      <== NOT EXECUTED
40013224:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         <== NOT EXECUTED
                    *sec_buf &= 0xF0;
                                
40013228:	c2 08 80 00 	ldub  [ %g2 ], %g1
                            <== NOT EXECUTED
4001322c:	82 08 7f f0 	and  %g1, -16, %g1
                            <== NOT EXECUTED
40013230:	c2 28 80 00 	stb  %g1, [ %g2 ]
                             <== NOT EXECUTED
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);
  
40013234:	b5 36 a0 08 	srl  %i2, 8, %i2
                              <== NOT EXECUTED
40013238:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         <== NOT EXECUTED
4001323c:	c2 08 80 00 	ldub  [ %g2 ], %g1
                            <== NOT EXECUTED
40013240:	82 16 80 01 	or  %i2, %g1, %g1
                             <== NOT EXECUTED
40013244:	c2 28 80 00 	stb  %g1, [ %g2 ]
                             <== NOT EXECUTED
40013248:	e2 2f 60 90 	stb  %l1, [ %i5 + 0x90 ]
                      <== NOT EXECUTED
4001324c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40013250:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,

40013254:	96 07 bf fc 	add  %fp, -4, %o3
                             
40013258:	94 10 20 01 	mov  1, %o2
                                   
4001325c:	92 07 20 01 	add  %i4, 1, %o1
                              
40013260:	40 00 04 d5 	call  400145b4 <fat_buf_access>
               
40013264:	90 10 00 1d 	mov  %i5, %o0
                                 
                    if (rc != RC_OK)
                                 
40013268:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4001326c:	12 bf ff 96 	bne  400130c4 <fat_set_fat_cluster+0xb0>
      <== NEVER TAKEN
40013270:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
                     *sec_buf &= 0x00;
                               
40013274:	c0 28 40 00 	clrb  [ %g1 ]
                                 
                     *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);
 
40013278:	83 2e a0 14 	sll  %i2, 0x14, %g1
                           
4001327c:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
40013280:	c6 08 80 00 	ldub  [ %g2 ], %g3
                            
40013284:	83 30 60 18 	srl  %g1, 0x18, %g1
                           
40013288:	82 10 40 03 	or  %g1, %g3, %g1
                             
4001328c:	c2 28 80 00 	stb  %g1, [ %g2 ]
                             
40013290:	e2 2f 60 90 	stb  %l1, [ %i5 + 0x90 ]
                      
40013294:	81 c7 e0 08 	ret 
                                          
40013298:	81 e8 00 00 	restore 
                                      

                                                                     

400153d4 <fat_shutdown_drive>: * RC_OK on success, or -1 if error occured * and errno set appropriately */ int fat_shutdown_drive(fat_fs_info_t *fs_info) {
400153d4:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    int            rc = RC_OK;
                                       
    int            i = 0;
                                            

                                                                     
    rc = fat_sync(fs_info);
                                          
400153d8:	7f ff ff bc 	call  400152c8 <fat_sync>
                     
400153dc:	90 10 00 18 	mov  %i0, %o0
                                 
        rc = -1;
                                                     

                                                                     
    for (i = 0; i < FAT_HASH_SIZE; i++)
                              
    {
                                                                
        rtems_chain_node    *node = NULL;
                            
        rtems_chain_control *the_chain = fs_info->vhash + i;
         
400153e0:	fa 06 20 74 	ld  [ %i0 + 0x74 ], %i5
                       
    if ( rc != RC_OK )
                                               
400153e4:	80 a0 00 08 	cmp  %g0, %o0
                                 
    rc = fat_sync(fs_info);
                                          
400153e8:	b4 10 00 08 	mov  %o0, %i2
                                 
  return _Chain_Immutable_head( the_chain )->next;
                   
400153ec:	d0 07 40 00 	ld  [ %i5 ], %o0
                              
{
                                                                    
400153f0:	b8 10 00 18 	mov  %i0, %i4
                                 
  return &the_chain->Tail.Node;
                                      
400153f4:	b6 07 60 04 	add  %i5, 4, %i3
                              
    if ( rc != RC_OK )
                                               
400153f8:	b0 60 20 00 	subx  %g0, 0, %i0
                             
  if ( !_Chain_Is_empty(the_chain))
                                  
400153fc:	80 a6 c0 08 	cmp  %i3, %o0
                                 
40015400:	22 80 00 0c 	be,a   40015430 <fat_shutdown_drive+0x5c>
     
40015404:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        
  new_first = old_first->next;
                                       
40015408:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
  head->next = new_first;
                                            
4001540c:	c2 27 40 00 	st  %g1, [ %i5 ]
                              

                                                                     
        while ( (node = rtems_chain_get_unprotected(the_chain)) != NULL )

            free(node);
                                              
40015410:	7f ff bf f0 	call  400053d0 <free>
                         
40015414:	fa 20 60 04 	st  %i5, [ %g1 + 4 ]
                          
  return _Chain_Immutable_head( the_chain )->next;
                   
40015418:	d0 07 40 00 	ld  [ %i5 ], %o0
                              
  if ( !_Chain_Is_empty(the_chain))
                                  
4001541c:	80 a6 c0 08 	cmp  %i3, %o0
                                 
40015420:	32 bf ff fb 	bne,a   4001540c <fat_shutdown_drive+0x38>
    
40015424:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
40015428:	fa 07 20 74 	ld  [ %i4 + 0x74 ], %i5
                       
  return _Chain_Immutable_head( the_chain )->next;
                   
4001542c:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        
  return &the_chain->Tail.Node;
                                      
40015430:	b6 07 60 10 	add  %i5, 0x10, %i3
                           
  if ( !_Chain_Is_empty(the_chain))
                                  
40015434:	80 a2 00 1b 	cmp  %o0, %i3
                                 
40015438:	02 80 00 0a 	be  40015460 <fat_shutdown_drive+0x8c>
        <== ALWAYS TAKEN
4001543c:	b2 07 60 0c 	add  %i5, 0xc, %i1
                            
  new_first = old_first->next;
                                       
40015440:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
  head->next = new_first;
                                            
40015444:	c2 27 60 0c 	st  %g1, [ %i5 + 0xc ]
                        <== NOT EXECUTED
40015448:	7f ff bf e2 	call  400053d0 <free>
                         <== NOT EXECUTED
4001544c:	f2 20 60 04 	st  %i1, [ %g1 + 4 ]
                          <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
40015450:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        <== NOT EXECUTED
  if ( !_Chain_Is_empty(the_chain))
                                  
40015454:	80 a6 c0 08 	cmp  %i3, %o0
                                 <== NOT EXECUTED
40015458:	32 bf ff fb 	bne,a   40015444 <fat_shutdown_drive+0x70>
    <== NOT EXECUTED
4001545c:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
    }
                                                                

                                                                     
    for (i = 0; i < FAT_HASH_SIZE; i++)
                              
    {
                                                                
        rtems_chain_node    *node = NULL;
                            
        rtems_chain_control *the_chain = fs_info->rhash + i;
         
40015460:	fa 07 20 78 	ld  [ %i4 + 0x78 ], %i5
                       
  return _Chain_Immutable_head( the_chain )->next;
                   
40015464:	d0 07 40 00 	ld  [ %i5 ], %o0
                              
  return &the_chain->Tail.Node;
                                      
40015468:	b6 07 60 04 	add  %i5, 4, %i3
                              
  if ( !_Chain_Is_empty(the_chain))
                                  
4001546c:	80 a6 c0 08 	cmp  %i3, %o0
                                 
40015470:	22 80 00 0c 	be,a   400154a0 <fat_shutdown_drive+0xcc>
     <== ALWAYS TAKEN
40015474:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        
  new_first = old_first->next;
                                       
40015478:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
  head->next = new_first;
                                            
4001547c:	c2 27 40 00 	st  %g1, [ %i5 ]
                              <== NOT EXECUTED

                                                                     
        while ( (node = rtems_chain_get_unprotected(the_chain)) != NULL )

            free(node);
                                              
40015480:	7f ff bf d4 	call  400053d0 <free>
                         <== NOT EXECUTED
40015484:	fa 20 60 04 	st  %i5, [ %g1 + 4 ]
                          <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
40015488:	d0 07 40 00 	ld  [ %i5 ], %o0
                              <== NOT EXECUTED
  if ( !_Chain_Is_empty(the_chain))
                                  
4001548c:	80 a2 00 1b 	cmp  %o0, %i3
                                 <== NOT EXECUTED
40015490:	32 bf ff fb 	bne,a   4001547c <fat_shutdown_drive+0xa8>
    <== NOT EXECUTED
40015494:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
40015498:	fa 07 20 78 	ld  [ %i4 + 0x78 ], %i5
                       <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
4001549c:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        <== NOT EXECUTED
  return &the_chain->Tail.Node;
                                      
400154a0:	b6 07 60 10 	add  %i5, 0x10, %i3
                           
  if ( !_Chain_Is_empty(the_chain))
                                  
400154a4:	80 a6 c0 08 	cmp  %i3, %o0
                                 
400154a8:	02 80 00 0a 	be  400154d0 <fat_shutdown_drive+0xfc>
        <== ALWAYS TAKEN
400154ac:	b2 07 60 0c 	add  %i5, 0xc, %i1
                            
  new_first = old_first->next;
                                       
400154b0:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
  head->next = new_first;
                                            
400154b4:	c2 27 60 0c 	st  %g1, [ %i5 + 0xc ]
                        <== NOT EXECUTED
400154b8:	7f ff bf c6 	call  400053d0 <free>
                         <== NOT EXECUTED
400154bc:	f2 20 60 04 	st  %i1, [ %g1 + 4 ]
                          <== NOT EXECUTED
  return _Chain_Immutable_head( the_chain )->next;
                   
400154c0:	d0 07 60 0c 	ld  [ %i5 + 0xc ], %o0
                        <== NOT EXECUTED
  if ( !_Chain_Is_empty(the_chain))
                                  
400154c4:	80 a6 c0 08 	cmp  %i3, %o0
                                 <== NOT EXECUTED
400154c8:	32 bf ff fb 	bne,a   400154b4 <fat_shutdown_drive+0xe0>
    <== NOT EXECUTED
400154cc:	c2 02 00 00 	ld  [ %o0 ], %g1
                              <== NOT EXECUTED
    }
                                                                

                                                                     
    free(fs_info->vhash);
                                            
400154d0:	7f ff bf c0 	call  400053d0 <free>
                         
400154d4:	d0 07 20 74 	ld  [ %i4 + 0x74 ], %o0
                       
    free(fs_info->rhash);
                                            
400154d8:	7f ff bf be 	call  400053d0 <free>
                         
400154dc:	d0 07 20 78 	ld  [ %i4 + 0x78 ], %o0
                       

                                                                     
    free(fs_info->uino);
                                             
400154e0:	7f ff bf bc 	call  400053d0 <free>
                         
400154e4:	d0 07 20 7c 	ld  [ %i4 + 0x7c ], %o0
                       
    free(fs_info->sec_buf);
                                          
400154e8:	7f ff bf ba 	call  400053d0 <free>
                         
400154ec:	d0 07 20 98 	ld  [ %i4 + 0x98 ], %o0
                       
    close(fs_info->vol.fd);
                                          
400154f0:	7f ff bf 58 	call  40005250 <close>
                        
400154f4:	d0 07 20 68 	ld  [ %i4 + 0x68 ], %o0
                       

                                                                     
    if (rc)
                                                          
400154f8:	80 a6 a0 00 	cmp  %i2, 0
                                   
400154fc:	12 80 00 04 	bne  4001550c <fat_shutdown_drive+0x138>
      <== NEVER TAKEN
40015500:	01 00 00 00 	nop 
                                          
        errno = EIO;
                                                 
    return rc;
                                                       
}
                                                                    
40015504:	81 c7 e0 08 	ret 
                                          
40015508:	81 e8 00 00 	restore 
                                      
        errno = EIO;
                                                 
4001550c:	40 00 17 0c 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40015510:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40015514:	82 10 20 05 	mov  5, %g1	! 5 <_TLS_Alignment+0x4>
          <== NOT EXECUTED
40015518:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
}
                                                                    
4001551c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40015520:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

400152c8 <fat_sync>: return RC_OK; } int fat_sync(fat_fs_info_t *fs_info) {
400152c8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    if (fs_info->vol.type == FAT_FAT32)
                              
400152cc:	c2 0e 20 16 	ldub  [ %i0 + 0x16 ], %g1
                     
{
                                                                    
400152d0:	ba 10 00 18 	mov  %i0, %i5
                                 
    if (fs_info->vol.type == FAT_FAT32)
                              
400152d4:	80 a0 60 04 	cmp  %g1, 4
                                   
400152d8:	02 80 00 0d 	be  4001530c <fat_sync+0x44>
                  
400152dc:	b0 10 20 00 	clr  %i0
                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY)
                         
400152e0:	c2 0f 60 91 	ldub  [ %i5 + 0x91 ], %g1
                     
400152e4:	80 a0 60 00 	cmp  %g1, 0
                                   
400152e8:	12 80 00 18 	bne  40015348 <fat_sync+0x80>
                 
400152ec:	01 00 00 00 	nop 
                                          
    if ( rc != RC_OK )
                                               
        rc = -1;
                                                     

                                                                     
    fat_buf_release(fs_info);
                                        

                                                                     
    if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)
    
400152f0:	7f ff f2 b6 	call  40011dc8 <rtems_bdbuf_syncdev>
          
400152f4:	d0 07 60 6c 	ld  [ %i5 + 0x6c ], %o0
                       
400152f8:	80 a2 20 00 	cmp  %o0, 0
                                   
400152fc:	12 80 00 34 	bne  400153cc <fat_sync+0x104>
                <== NEVER TAKEN
40015300:	01 00 00 00 	nop 
                                          
        rc = -1;
                                                     

                                                                     
    return rc;
                                                       
}
                                                                    
40015304:	81 c7 e0 08 	ret 
                                          
40015308:	81 e8 00 00 	restore 
                                      
        uint32_t free_count = fs_info->vol.free_cls;
                 
4001530c:	f6 07 60 4c 	ld  [ %i5 + 0x4c ], %i3
                       
        if (free_count != fs_info->vol.free_cls_in_fs_info)
          
40015310:	c2 07 60 50 	ld  [ %i5 + 0x50 ], %g1
                       
40015314:	80 a6 c0 01 	cmp  %i3, %g1
                                 
40015318:	12 80 00 1e 	bne  40015390 <fat_sync+0xc8>
                 <== NEVER TAKEN
4001531c:	f8 07 60 54 	ld  [ %i5 + 0x54 ], %i4
                       
        if (next_free != fs_info->vol.next_cl_in_fs_info)
            
40015320:	c2 07 60 58 	ld  [ %i5 + 0x58 ], %g1
                       
40015324:	80 a7 00 01 	cmp  %i4, %g1
                                 
40015328:	12 80 00 0b 	bne  40015354 <fat_sync+0x8c>
                 
4001532c:	01 00 00 00 	nop 
                                          
    if ( (ret1 < 0) || (ret2 < 0) )
                                  
40015330:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           
40015334:	b0 20 00 18 	neg  %i0
                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY)
                         
40015338:	c2 0f 60 91 	ldub  [ %i5 + 0x91 ], %g1
                     
4001533c:	80 a0 60 00 	cmp  %g1, 0
                                   
40015340:	02 bf ff ec 	be  400152f0 <fat_sync+0x28>
                  
40015344:	01 00 00 00 	nop 
                                          
40015348:	7f ff fc 25 	call  400143dc <fat_buf_release.part.5>
       
4001534c:	90 10 00 1d 	mov  %i5, %o0
                                 
40015350:	30 bf ff e8 	b,a   400152f0 <fat_sync+0x28>
                
            uint32_t le_next_free = CT_LE_L(next_free);
              
40015354:	40 00 4d 6e 	call  4002890c <__bswapsi2>
                   
40015358:	90 10 00 1c 	mov  %i4, %o0
                                 
            fs_info->vol.next_cl_in_fs_info = next_free;
             
4001535c:	f8 27 60 58 	st  %i4, [ %i5 + 0x58 ]
                       
            ret2 = fat_sector_write(fs_info,
                         
40015360:	98 07 bf fc 	add  %fp, -4, %o4
                             
40015364:	d2 17 60 48 	lduh  [ %i5 + 0x48 ], %o1
                     
            uint32_t le_next_free = CT_LE_L(next_free);
              
40015368:	d0 27 bf fc 	st  %o0, [ %fp + -4 ]
                         
            ret2 = fat_sector_write(fs_info,
                         
4001536c:	96 10 20 04 	mov  4, %o3
                                   
40015370:	94 10 21 ec 	mov  0x1ec, %o2
                               
40015374:	7f ff fc e9 	call  40014718 <fat_sector_write>
             
40015378:	90 10 00 1d 	mov  %i5, %o0
                                 
4001537c:	91 32 20 1f 	srl  %o0, 0x1f, %o0
                           
40015380:	b0 12 00 18 	or  %o0, %i0, %i0
                             
    if ( (ret1 < 0) || (ret2 < 0) )
                                  
40015384:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           
40015388:	10 bf ff ec 	b  40015338 <fat_sync+0x70>
                   
4001538c:	b0 20 00 18 	neg  %i0
                                      
            uint32_t le_free_count = CT_LE_L(free_count);
            
40015390:	40 00 4d 5f 	call  4002890c <__bswapsi2>
                   <== NOT EXECUTED
40015394:	90 10 00 1b 	mov  %i3, %o0
                                 <== NOT EXECUTED
            fs_info->vol.free_cls_in_fs_info = free_count;
           
40015398:	f6 27 60 50 	st  %i3, [ %i5 + 0x50 ]
                       <== NOT EXECUTED
            ret1 = fat_sector_write(fs_info,
                         
4001539c:	98 07 bf fc 	add  %fp, -4, %o4
                             <== NOT EXECUTED
400153a0:	d2 17 60 48 	lduh  [ %i5 + 0x48 ], %o1
                     <== NOT EXECUTED
            uint32_t le_free_count = CT_LE_L(free_count);
            
400153a4:	d0 27 bf fc 	st  %o0, [ %fp + -4 ]
                         <== NOT EXECUTED
            ret1 = fat_sector_write(fs_info,
                         
400153a8:	96 10 20 04 	mov  4, %o3
                                   <== NOT EXECUTED
400153ac:	94 10 21 e8 	mov  0x1e8, %o2
                               <== NOT EXECUTED
400153b0:	7f ff fc da 	call  40014718 <fat_sector_write>
             <== NOT EXECUTED
400153b4:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
        if (next_free != fs_info->vol.next_cl_in_fs_info)
            
400153b8:	c2 07 60 58 	ld  [ %i5 + 0x58 ], %g1
                       <== NOT EXECUTED
400153bc:	80 a7 00 01 	cmp  %i4, %g1
                                 <== NOT EXECUTED
400153c0:	02 bf ff dc 	be  40015330 <fat_sync+0x68>
                  <== NOT EXECUTED
400153c4:	b1 32 20 1f 	srl  %o0, 0x1f, %i0
                           <== NOT EXECUTED
400153c8:	30 bf ff e3 	b,a   40015354 <fat_sync+0x8c>
                <== NOT EXECUTED
}
                                                                    
400153cc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400153d0:	91 e8 3f ff 	restore  %g0, -1, %o0
                         <== NOT EXECUTED

                                                                     

40017a4c <msdos_creat_node>: fat_file_type_t type, const char *name, int name_len, mode_t mode, const fat_file_fd_t *link_fd) {
40017a4c:	9d e3 bf 00 	save  %sp, -256, %sp
                          
    int               rc = RC_OK;
                                    
    ssize_t           ret = 0;
                                       
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;
       
40017a50:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40017a54:	e0 00 60 08 	ld  [ %g1 + 8 ], %l0
                          
    fat_file_fd_t    *parent_fat_fd = parent_loc->node_access;
       
    fat_file_fd_t    *fat_fd = NULL;
                                 
40017a58:	c0 27 bf 6c 	clr  [ %fp + -148 ]
                           
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
40017a5c:	82 10 3f ff 	mov  -1, %g1
                                  
    time_t            now;
                                           
    uint16_t          time_val = 0;
                                  
40017a60:	c0 37 bf 68 	clrh  [ %fp + -152 ]
                          
    fat_dir_pos_init(&dir_pos);
                                      

                                                                     
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
        
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);
    

                                                                     
    if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {
                    
40017a64:	80 a6 e1 04 	cmp  %i3, 0x104
                               
    uint16_t          date = 0;
                                      
40017a68:	c0 37 bf 6a 	clrh  [ %fp + -150 ]
                          
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
        
40017a6c:	c0 27 bf 80 	clr  [ %fp + -128 ]
                           
40017a70:	c0 27 bf 84 	clr  [ %fp + -124 ]
                           
  dir_pos->sname.cln = 0;
                                            
40017a74:	c0 27 bf 70 	clr  [ %fp + -144 ]
                           
40017a78:	c0 27 bf 88 	clr  [ %fp + -120 ]
                           
40017a7c:	c0 27 bf 8c 	clr  [ %fp + -116 ]
                           
  dir_pos->sname.ofs = 0;
                                            
40017a80:	c0 27 bf 74 	clr  [ %fp + -140 ]
                           
40017a84:	c0 27 bf 90 	clr  [ %fp + -112 ]
                           
40017a88:	c0 27 bf 94 	clr  [ %fp + -108 ]
                           
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
40017a8c:	c2 27 bf 78 	st  %g1, [ %fp + -136 ]
                       
40017a90:	c0 27 bf 98 	clr  [ %fp + -104 ]
                           
40017a94:	c0 27 bf 9c 	clr  [ %fp + -100 ]
                           
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                          
40017a98:	c2 27 bf 7c 	st  %g1, [ %fp + -132 ]
                       
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);
    
40017a9c:	c0 27 bf c0 	clr  [ %fp + -64 ]
                            
40017aa0:	c0 27 bf c4 	clr  [ %fp + -60 ]
                            
40017aa4:	c0 27 bf c8 	clr  [ %fp + -56 ]
                            
40017aa8:	c0 27 bf cc 	clr  [ %fp + -52 ]
                            
40017aac:	c0 27 bf d0 	clr  [ %fp + -48 ]
                            
40017ab0:	c0 27 bf d4 	clr  [ %fp + -44 ]
                            
40017ab4:	c0 27 bf d8 	clr  [ %fp + -40 ]
                            
40017ab8:	c0 27 bf dc 	clr  [ %fp + -36 ]
                            
40017abc:	c0 27 bf e0 	clr  [ %fp + -32 ]
                            
40017ac0:	c0 27 bf e4 	clr  [ %fp + -28 ]
                            
40017ac4:	c0 27 bf e8 	clr  [ %fp + -24 ]
                            
40017ac8:	c0 27 bf ec 	clr  [ %fp + -20 ]
                            
40017acc:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            
40017ad0:	c0 27 bf f4 	clr  [ %fp + -12 ]
                            
40017ad4:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
40017ad8:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {
                    
40017adc:	14 80 00 e3 	bg  40017e68 <msdos_creat_node+0x41c>
         <== NEVER TAKEN
40017ae0:	f8 06 20 08 	ld  [ %i0 + 8 ], %i4
                          
        rtems_set_errno_and_return_minus_one(ENAMETOOLONG);
          
    }
                                                                

                                                                     
    name_type = msdos_long_to_short (fs_info->converter,
             
40017ae4:	d0 04 20 c0 	ld  [ %l0 + 0xc0 ], %o0
                       
40017ae8:	98 10 20 0b 	mov  0xb, %o4
                                 
40017aec:	96 07 bf 80 	add  %fp, -128, %o3
                           
40017af0:	94 10 00 1b 	mov  %i3, %o2
                                 
40017af4:	40 00 01 bf 	call  400181f0 <msdos_long_to_short>
          
40017af8:	92 10 00 1a 	mov  %i2, %o1
                                 
                                     name, name_len,
                 
                                     MSDOS_DIR_NAME(short_node),
     
                                     MSDOS_NAME_MAX);
                
    if (name_type == MSDOS_NAME_INVALID) {
                           
40017afc:	a6 92 20 00 	orcc  %o0, 0, %l3
                             
40017b00:	02 80 00 df 	be  40017e7c <msdos_creat_node+0x430>
         <== NEVER TAKEN
40017b04:	01 00 00 00 	nop 
                                          
        rtems_set_errno_and_return_minus_one(EINVAL);
                
    }
                                                                

                                                                     
    /* fill reserved field */
                                        
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;
              
40017b08:	c0 2f bf 8c 	clrb  [ %fp + -116 ]
                          

                                                                     
    /* set up last write date and time */
                            
    now = time(NULL);
                                                
40017b0c:	40 00 1f f3 	call  4001fad8 <time>
                         
40017b10:	90 10 20 00 	clr  %o0
                                      

                                                                     
static inline void fat_file_set_ctime_mtime(fat_file_fd_t *fat_fd, time_t t)

{
                                                                    
    fat_fd->ctime = t;
                                               
    fat_fd->mtime = t;
                                               
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
40017b14:	c2 0f 20 30 	ldub  [ %i4 + 0x30 ], %g1
                     
40017b18:	a2 10 00 08 	mov  %o0, %l1
                                 
40017b1c:	a4 10 00 09 	mov  %o1, %l2
                                 
40017b20:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->ctime = t;
                                               
40017b24:	d2 27 20 44 	st  %o1, [ %i4 + 0x44 ]
                       
    fat_file_set_ctime_mtime(parent_fat_fd, now);
                    

                                                                     
    msdos_date_unix2dos(now, &date, &time_val);
                      
40017b28:	94 07 bf 68 	add  %fp, -152, %o2
                           
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
40017b2c:	c2 2f 20 30 	stb  %g1, [ %i4 + 0x30 ]
                      
40017b30:	92 07 bf 6a 	add  %fp, -150, %o1
                           
    fat_fd->ctime = t;
                                               
40017b34:	e2 27 20 40 	st  %l1, [ %i4 + 0x40 ]
                       
40017b38:	90 10 00 12 	mov  %l2, %o0
                                 
    fat_fd->mtime = t;
                                               
40017b3c:	e2 27 20 48 	st  %l1, [ %i4 + 0x48 ]
                       
40017b40:	40 00 08 af 	call  40019dfc <msdos_date_unix2dos>
          
40017b44:	e4 27 20 4c 	st  %l2, [ %i4 + 0x4c ]
                       
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);
             
40017b48:	c2 17 bf 68 	lduh  [ %fp + -152 ], %g1
                     
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);
                 
40017b4c:	c6 17 bf 6a 	lduh  [ %fp + -150 ], %g3
                     
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);
             
40017b50:	85 28 60 08 	sll  %g1, 8, %g2
                              
40017b54:	89 30 60 08 	srl  %g1, 8, %g4
                              
    *MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);
           
    *MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);
               
    *MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);
         

                                                                     
    /* initialize directory/file size */
                             
    *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;
          
40017b58:	c0 27 bf 9c 	clr  [ %fp + -100 ]
                           
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);
                 
40017b5c:	83 28 e0 08 	sll  %g3, 8, %g1
                              
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);
             
40017b60:	84 10 80 04 	or  %g2, %g4, %g2
                             
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);
                 
40017b64:	87 30 e0 08 	srl  %g3, 8, %g3
                              
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);
             
40017b68:	c4 37 bf 8e 	sth  %g2, [ %fp + -114 ]
                      
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);
                 
40017b6c:	82 10 40 03 	or  %g1, %g3, %g1
                             
    *MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);
           
40017b70:	c4 37 bf 96 	sth  %g2, [ %fp + -106 ]
                      

                                                                     
    if (type == FAT_DIRECTORY) {
                                     
40017b74:	80 a6 60 00 	cmp  %i1, 0
                                   
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);
                 
40017b78:	c2 37 bf 90 	sth  %g1, [ %fp + -112 ]
                      
    *MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);
               
40017b7c:	c2 37 bf 98 	sth  %g1, [ %fp + -104 ]
                      
    if (type == FAT_DIRECTORY) {
                                     
40017b80:	02 80 00 13 	be  40017bcc <msdos_creat_node+0x180>
         
40017b84:	c2 37 bf 92 	sth  %g1, [ %fp + -110 ]
                      
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
           
    }
                                                                
    else if (type == FAT_HARD_LINK) {
                                
40017b88:	80 a6 60 02 	cmp  %i1, 2
                                   
40017b8c:	02 80 00 2c 	be  40017c3c <msdos_creat_node+0x1f0>
         <== NEVER TAKEN
40017b90:	82 07 bf 80 	add  %fp, -128, %g1
                           

                                                                     
    /*
                                                               
     * find free space in the parent directory and write new initialized

     * FAT 32 Bytes Directory Entry Structure to the disk
            
     */
                                                              
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017b94:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       
40017b98:	9a 07 bf 70 	add  %fp, -144, %o5
                           
        *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
           
40017b9c:	c2 0f bf 8b 	ldub  [ %fp + -117 ], %g1
                     
40017ba0:	82 10 60 20 	or  %g1, 0x20, %g1
                            
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017ba4:	98 10 00 13 	mov  %l3, %o4
                                 
        *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
           
40017ba8:	c2 2f bf 8b 	stb  %g1, [ %fp + -117 ]
                      
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017bac:	96 10 00 1b 	mov  %i3, %o3
                                 
40017bb0:	94 10 00 1a 	mov  %i2, %o2
                                 
40017bb4:	92 10 20 01 	mov  1, %o1
                                   
40017bb8:	40 00 07 81 	call  400199bc <msdos_get_name_node>
          
40017bbc:	90 10 00 18 	mov  %i0, %o0
                                 
40017bc0:	ba 10 00 08 	mov  %o0, %i5
                                 

                                                                     
err:
                                                                 
    /* mark the used 32bytes structure on the disk as free */
        
    msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);

    return rc;
                                                       
}
                                                                    
40017bc4:	81 c7 e0 08 	ret 
                                          
40017bc8:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017bcc:	82 07 bf 80 	add  %fp, -128, %g1
                           
40017bd0:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       
40017bd4:	9a 07 bf 70 	add  %fp, -144, %o5
                           
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
           
40017bd8:	c2 0f bf 8b 	ldub  [ %fp + -117 ], %g1
                     
40017bdc:	82 10 60 10 	or  %g1, 0x10, %g1
                            
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017be0:	98 10 00 13 	mov  %l3, %o4
                                 
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;
           
40017be4:	c2 2f bf 8b 	stb  %g1, [ %fp + -117 ]
                      
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017be8:	96 10 00 1b 	mov  %i3, %o3
                                 
40017bec:	94 10 00 1a 	mov  %i2, %o2
                                 
40017bf0:	92 10 20 01 	mov  1, %o1
                                   
40017bf4:	40 00 07 72 	call  400199bc <msdos_get_name_node>
          
40017bf8:	90 10 00 18 	mov  %i0, %o0
                                 
    if ( rc != RC_OK )
                                               
40017bfc:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40017c00:	12 bf ff f1 	bne  40017bc4 <msdos_creat_node+0x178>
        <== NEVER TAKEN
40017c04:	94 07 bf 6c 	add  %fp, -148, %o2
                           
        rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
        
40017c08:	92 07 bf 70 	add  %fp, -144, %o1
                           
40017c0c:	7f ff ee 78 	call  400135ec <fat_file_open>
                
40017c10:	90 10 00 10 	mov  %l0, %o0
                                 
        if (rc != RC_OK)
                                             
40017c14:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40017c18:	02 80 00 3e 	be  40017d10 <msdos_creat_node+0x2c4>
         <== ALWAYS TAKEN
40017c1c:	c2 07 bf 6c 	ld  [ %fp + -148 ], %g1
                       
    msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);

40017c20:	d0 06 20 14 	ld  [ %i0 + 0x14 ], %o0
                       <== NOT EXECUTED
40017c24:	94 10 20 e5 	mov  0xe5, %o2
                                <== NOT EXECUTED
40017c28:	92 07 bf 70 	add  %fp, -144, %o1
                           <== NOT EXECUTED
40017c2c:	40 00 02 cf 	call  40018768 <msdos_set_first_char4file_name>
<== NOT EXECUTED
40017c30:	b0 10 00 1d 	mov  %i5, %i0
                                 <== NOT EXECUTED
}
                                                                    
40017c34:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40017c38:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,
             
40017c3c:	c2 07 60 20 	ld  [ %i5 + 0x20 ], %g1
                       <== NOT EXECUTED
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

40017c40:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
40017c44:	32 80 00 07 	bne,a   40017c60 <msdos_creat_node+0x214>
     <== NOT EXECUTED
40017c48:	c4 0c 20 05 	ldub  [ %l0 + 5 ], %g2
                        <== NOT EXECUTED
40017c4c:	c4 0c 20 16 	ldub  [ %l0 + 0x16 ], %g2
                     <== NOT EXECUTED
40017c50:	80 88 a0 03 	btst  3, %g2
                                  <== NOT EXECUTED
40017c54:	32 80 00 07 	bne,a   40017c70 <msdos_creat_node+0x224>
     <== NOT EXECUTED
40017c58:	c2 04 20 28 	ld  [ %l0 + 0x28 ], %g1
                       <== NOT EXECUTED
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
40017c5c:	c4 0c 20 05 	ldub  [ %l0 + 5 ], %g2
                        <== NOT EXECUTED
40017c60:	d2 04 20 3c 	ld  [ %l0 + 0x3c ], %o1
                       <== NOT EXECUTED
40017c64:	82 00 7f fe 	add  %g1, -2, %g1
                             <== NOT EXECUTED
40017c68:	83 28 40 02 	sll  %g1, %g2, %g1
                            <== NOT EXECUTED
40017c6c:	82 00 40 09 	add  %g1, %o1, %g1
                            <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));

40017c70:	c4 14 00 00 	lduh  [ %l0 ], %g2
                            <== NOT EXECUTED
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);

40017c74:	d4 07 60 24 	ld  [ %i5 + 0x24 ], %o2
                       <== NOT EXECUTED
40017c78:	d2 0c 20 02 	ldub  [ %l0 + 2 ], %o1
                        <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));

40017c7c:	84 00 bf ff 	add  %g2, -1, %g2
                             <== NOT EXECUTED
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);

40017c80:	93 32 80 09 	srl  %o2, %o1, %o1
                            <== NOT EXECUTED
      ret = _fat_block_read(&fs_info->fat,
                           
40017c84:	98 07 bf a0 	add  %fp, -96, %o4
                            <== NOT EXECUTED
40017c88:	96 10 20 20 	mov  0x20, %o3
                                <== NOT EXECUTED
40017c8c:	94 08 80 0a 	and  %g2, %o2, %o2
                            <== NOT EXECUTED
40017c90:	92 02 40 01 	add  %o1, %g1, %o1
                            <== NOT EXECUTED
40017c94:	7f ff f2 81 	call  40014698 <_fat_block_read>
              <== NOT EXECUTED
40017c98:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
      if (ret < 0) {
                                                 
40017c9c:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
40017ca0:	06 80 00 8b 	bl  40017ecc <msdos_creat_node+0x480>
         <== NOT EXECUTED
40017ca4:	c4 0f bf ad 	ldub  [ %fp + -83 ], %g2
                      <== NOT EXECUTED
      *MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);

40017ca8:	c4 2f bf 8d 	stb  %g2, [ %fp + -115 ]
                      <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017cac:	82 07 bf 80 	add  %fp, -128, %g1
                           <== NOT EXECUTED
      *MSDOS_DIR_CRT_TIME(short_node)      =*MSDOS_DIR_CRT_TIME(link_node);

40017cb0:	c4 17 bf ae 	lduh  [ %fp + -82 ], %g2
                      <== NOT EXECUTED
40017cb4:	c4 37 bf 8e 	sth  %g2, [ %fp + -114 ]
                      <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017cb8:	9a 07 bf 70 	add  %fp, -144, %o5
                           <== NOT EXECUTED
      *MSDOS_DIR_CRT_DATE(short_node)      =*MSDOS_DIR_CRT_DATE(link_node);

40017cbc:	c4 17 bf b0 	lduh  [ %fp + -80 ], %g2
                      <== NOT EXECUTED
40017cc0:	c4 37 bf 90 	sth  %g2, [ %fp + -112 ]
                      <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017cc4:	98 10 00 13 	mov  %l3, %o4
                                 <== NOT EXECUTED
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);

40017cc8:	c4 07 bf bc 	ld  [ %fp + -68 ], %g2
                        <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017ccc:	c2 23 a0 5c 	st  %g1, [ %sp + 0x5c ]
                       <== NOT EXECUTED
40017cd0:	96 10 00 1b 	mov  %i3, %o3
                                 <== NOT EXECUTED
      *MSDOS_DIR_ATTR(short_node)          =*MSDOS_DIR_ATTR(link_node);

40017cd4:	c2 0f bf ab 	ldub  [ %fp + -85 ], %g1
                      <== NOT EXECUTED
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);

40017cd8:	c4 27 bf 9c 	st  %g2, [ %fp + -100 ]
                       <== NOT EXECUTED
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;
             
40017cdc:	82 10 60 20 	or  %g1, 0x20, %g1
                            <== NOT EXECUTED
      *MSDOS_DIR_FIRST_CLUSTER_LOW(short_node) =
                     
40017ce0:	c4 17 bf ba 	lduh  [ %fp + -70 ], %g2
                      <== NOT EXECUTED
40017ce4:	c4 37 bf 9a 	sth  %g2, [ %fp + -102 ]
                      <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017ce8:	94 10 00 1a 	mov  %i2, %o2
                                 <== NOT EXECUTED
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =
                      
40017cec:	c4 17 bf b4 	lduh  [ %fp + -76 ], %g2
                      <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017cf0:	92 10 20 01 	mov  1, %o1
                                   <== NOT EXECUTED
40017cf4:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =
                      
40017cf8:	c4 37 bf 94 	sth  %g2, [ %fp + -108 ]
                      <== NOT EXECUTED
    rc = msdos_get_name_node(parent_loc, true, name, name_len,
       
40017cfc:	40 00 07 30 	call  400199bc <msdos_get_name_node>
          <== NOT EXECUTED
40017d00:	c2 2f bf 8b 	stb  %g1, [ %fp + -117 ]
                      <== NOT EXECUTED
40017d04:	ba 10 00 08 	mov  %o0, %i5
                                 <== NOT EXECUTED
}
                                                                    
40017d08:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40017d0c:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
40017d10:	c4 08 60 30 	ldub  [ %g1 + 0x30 ], %g2
                     
40017d14:	84 10 a0 02 	or  %g2, 2, %g2
                               
40017d18:	c4 28 60 30 	stb  %g2, [ %g1 + 0x30 ]
                      
        fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                   
40017d1c:	05 00 08 00 	sethi  %hi(0x200000), %g2
                     
        fat_fd->fat_file_type = FAT_DIRECTORY;
                       
40017d20:	c0 20 60 10 	clr  [ %g1 + 0x10 ]
                           
        rc = fat_file_extend(&fs_info->fat,
                          
40017d24:	98 07 bf a0 	add  %fp, -96, %o4
                            
        fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                   
40017d28:	c4 20 60 14 	st  %g2, [ %g1 + 0x14 ]
                       
        rc = fat_file_extend(&fs_info->fat,
                          
40017d2c:	94 10 20 01 	mov  1, %o2
                                   
    fat_fd->ctime = t;
                                               
40017d30:	e2 20 60 40 	st  %l1, [ %g1 + 0x40 ]
                       
40017d34:	92 10 00 01 	mov  %g1, %o1
                                 
40017d38:	e4 20 60 44 	st  %l2, [ %g1 + 0x44 ]
                       
40017d3c:	90 10 00 10 	mov  %l0, %o0
                                 
    fat_fd->mtime = t;
                                               
40017d40:	e2 20 60 48 	st  %l1, [ %g1 + 0x48 ]
                       
40017d44:	e4 20 60 4c 	st  %l2, [ %g1 + 0x4c ]
                       
40017d48:	7f ff f0 3b 	call  40013e34 <fat_file_extend>
              
40017d4c:	d6 04 20 08 	ld  [ %l0 + 8 ], %o3
                          
        if (rc != RC_OK)
                                             
40017d50:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40017d54:	32 bf ff b4 	bne,a   40017c24 <msdos_creat_node+0x1d8>
     <== NEVER TAKEN
40017d58:	d0 06 20 14 	ld  [ %i0 + 0x14 ], %o0
                       <== NOT EXECUTED
        memcpy(DOT_NODE_P(dot_dotdot), short_node,
                   
40017d5c:	d8 1f bf 88 	ldd  [ %fp + -120 ], %o4
                      
40017d60:	c4 1f bf 98 	ldd  [ %fp + -104 ], %g2
                      
40017d64:	e4 1f bf 80 	ldd  [ %fp + -128 ], %l2
                      
40017d68:	f4 1f bf 90 	ldd  [ %fp + -112 ], %i2
                      
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,

40017d6c:	03 10 00 a9 	sethi  %hi(0x4002a400), %g1
                   
40017d70:	d2 00 61 f8 	ld  [ %g1 + 0x1f8 ], %o1	! 4002a5f8 <MSDOS_DOT_NAME>

40017d74:	94 10 20 0b 	mov  0xb, %o2
                                 
        memcpy(DOT_NODE_P(dot_dotdot), short_node,
                   
40017d78:	d8 3f bf c8 	std  %o4, [ %fp + -56 ]
                       
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,

40017d7c:	90 07 bf c0 	add  %fp, -64, %o0
                            
        memcpy(DOT_NODE_P(dot_dotdot), short_node,
                   
40017d80:	c4 3f bf d8 	std  %g2, [ %fp + -40 ]
                       
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,
                
40017d84:	d8 3f bf e8 	std  %o4, [ %fp + -24 ]
                       
40017d88:	c4 3f bf f8 	std  %g2, [ %fp + -8 ]
                        
        memcpy(DOT_NODE_P(dot_dotdot), short_node,
                   
40017d8c:	e4 3f bf c0 	std  %l2, [ %fp + -64 ]
                       
40017d90:	f4 3f bf d0 	std  %i2, [ %fp + -48 ]
                       
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,
                
40017d94:	e4 3f bf e0 	std  %l2, [ %fp + -32 ]
                       
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,

40017d98:	40 00 0f da 	call  4001bd00 <memcpy>
                       
40017d9c:	f4 3f bf f0 	std  %i2, [ %fp + -16 ]
                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,

40017da0:	03 10 00 a9 	sethi  %hi(0x4002a400), %g1
                   
40017da4:	d2 00 61 f4 	ld  [ %g1 + 0x1f4 ], %o1	! 4002a5f4 <MSDOS_DOTDOT_NAME>

40017da8:	94 10 20 0b 	mov  0xb, %o2
                                 
40017dac:	40 00 0f d5 	call  4001bd00 <memcpy>
                       
40017db0:	90 07 bf e0 	add  %fp, -32, %o0
                            
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&
                   
40017db4:	c2 07 20 20 	ld  [ %i4 + 0x20 ], %g1
                       
40017db8:	80 a0 60 01 	cmp  %g1, 1
                                   
40017dbc:	22 80 00 37 	be,a   40017e98 <msdos_creat_node+0x44c>
      
40017dc0:	c2 07 20 24 	ld  [ %i4 + 0x24 ], %g1
                       
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));

40017dc4:	c2 07 20 1c 	ld  [ %i4 + 0x1c ], %g1
                       
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));

40017dc8:	85 30 60 10 	srl  %g1, 0x10, %g2
                           
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));

40017dcc:	89 28 60 08 	sll  %g1, 8, %g4
                              
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));

40017dd0:	87 28 a0 08 	sll  %g2, 8, %g3
                              
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));

40017dd4:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));

40017dd8:	85 30 a0 08 	srl  %g2, 8, %g2
                              
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));

40017ddc:	83 30 60 18 	srl  %g1, 0x18, %g1
                           
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));

40017de0:	84 10 c0 02 	or  %g3, %g2, %g2
                             
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));

40017de4:	82 11 00 01 	or  %g4, %g1, %g1
                             
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =
 
40017de8:	c4 37 bf f4 	sth  %g2, [ %fp + -12 ]
                       
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) =

40017dec:	c2 37 bf fa 	sth  %g1, [ %fp + -6 ]
                        
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,
               
40017df0:	98 07 bf c0 	add  %fp, -64, %o4
                            
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));
   
40017df4:	d2 07 bf 6c 	ld  [ %fp + -148 ], %o1
                       
40017df8:	c2 02 60 1c 	ld  [ %o1 + 0x1c ], %g1
                       
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));

40017dfc:	85 30 60 10 	srl  %g1, 0x10, %g2
                           
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));
   
40017e00:	89 28 60 08 	sll  %g1, 8, %g4
                              
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));

40017e04:	87 28 a0 08 	sll  %g2, 8, %g3
                              
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));
   
40017e08:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));

40017e0c:	85 30 a0 08 	srl  %g2, 8, %g2
                              
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));
   
40017e10:	83 30 60 18 	srl  %g1, 0x18, %g1
                           
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));

40017e14:	84 10 c0 02 	or  %g3, %g2, %g2
                             
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));
   
40017e18:	82 11 00 01 	or  %g4, %g1, %g1
                             
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,
               
40017e1c:	96 10 20 40 	mov  0x40, %o3
                                
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =
       
40017e20:	c2 37 bf da 	sth  %g1, [ %fp + -38 ]
                       
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,
               
40017e24:	94 10 20 00 	clr  %o2
                                      
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =
        
40017e28:	c4 37 bf d4 	sth  %g2, [ %fp + -44 ]
                       
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,
               
40017e2c:	7f ff f0 9e 	call  400140a4 <fat_file_write>
               
40017e30:	90 10 00 10 	mov  %l0, %o0
                                 
        if (ret < 0)
                                                 
40017e34:	80 a2 20 00 	cmp  %o0, 0
                                   
40017e38:	06 80 00 16 	bl  40017e90 <msdos_creat_node+0x444>
         <== NEVER TAKEN
40017e3c:	d2 07 bf 6c 	ld  [ %fp + -148 ], %o1
                       
        rc = fat_file_write_first_cluster_num(&fs_info->fat, fat_fd);

40017e40:	40 00 01 f3 	call  4001860c <fat_file_write_first_cluster_num>

40017e44:	90 10 00 10 	mov  %l0, %o0
                                 
        if (rc != RC_OK)
                                             
40017e48:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40017e4c:	02 80 00 1d 	be  40017ec0 <msdos_creat_node+0x474>
         <== ALWAYS TAKEN
40017e50:	d2 07 bf 6c 	ld  [ %fp + -148 ], %o1
                       
    fat_file_close(&fs_info->fat, fat_fd);
                           
40017e54:	d2 07 bf 6c 	ld  [ %fp + -148 ], %o1
                       <== NOT EXECUTED
40017e58:	7f ff ef 8d 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
40017e5c:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
    msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);

40017e60:	10 bf ff 71 	b  40017c24 <msdos_creat_node+0x1d8>
          <== NOT EXECUTED
40017e64:	d0 06 20 14 	ld  [ %i0 + 0x14 ], %o0
                       <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENAMETOOLONG);
          
40017e68:	40 00 0c b5 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40017e6c:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
40017e70:	82 10 20 5b 	mov  0x5b, %g1
                                <== NOT EXECUTED
40017e74:	10 bf ff 54 	b  40017bc4 <msdos_creat_node+0x178>
          <== NOT EXECUTED
40017e78:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(EINVAL);
                
40017e7c:	40 00 0c b0 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40017e80:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
40017e84:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
40017e88:	10 bf ff 4f 	b  40017bc4 <msdos_creat_node+0x178>
          <== NOT EXECUTED
40017e8c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
            rc = -1;
                                                 
40017e90:	10 bf ff f1 	b  40017e54 <msdos_creat_node+0x408>
          <== NOT EXECUTED
40017e94:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&
                   
40017e98:	80 a0 60 00 	cmp  %g1, 0
                                   
40017e9c:	32 bf ff cb 	bne,a   40017dc8 <msdos_creat_node+0x37c>
     <== NEVER TAKEN
40017ea0:	c2 07 20 1c 	ld  [ %i4 + 0x1c ], %g1
                       <== NOT EXECUTED
40017ea4:	c2 0c 20 16 	ldub  [ %l0 + 0x16 ], %g1
                     
40017ea8:	80 88 60 04 	btst  4, %g1
                                  
40017eac:	22 bf ff c7 	be,a   40017dc8 <msdos_creat_node+0x37c>
      <== ALWAYS TAKEN
40017eb0:	c2 07 20 1c 	ld  [ %i4 + 0x1c ], %g1
                       
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;

40017eb4:	c0 37 bf fa 	clrh  [ %fp + -6 ]
                            <== NOT EXECUTED
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;

40017eb8:	10 bf ff ce 	b  40017df0 <msdos_creat_node+0x3a4>
          <== NOT EXECUTED
40017ebc:	c0 37 bf f4 	clrh  [ %fp + -12 ]
                           <== NOT EXECUTED
        fat_file_close(&fs_info->fat, fat_fd);
                       
40017ec0:	7f ff ef 73 	call  40013c8c <fat_file_close>
               
40017ec4:	90 10 00 10 	mov  %l0, %o0
                                 
40017ec8:	30 bf ff 3f 	b,a   40017bc4 <msdos_creat_node+0x178>
       
          return -1;
                                                 
40017ecc:	10 bf ff 3e 	b  40017bc4 <msdos_creat_node+0x178>
          <== NOT EXECUTED
40017ed0:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED

                                                                     

40019fc0 <msdos_date_dos2unix>: + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
40019fc0:	83 32 60 05 	srl  %o1, 5, %g1
                              
	if (lastdosdate != dd) {
                                            
40019fc4:	07 10 00 b4 	sethi  %hi(0x4002d000), %g3
                   
40019fc8:	da 10 e1 94 	lduh  [ %g3 + 0x194 ], %o5	! 4002d194 <lastdosdate>

	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
  
40019fcc:	89 32 60 0b 	srl  %o1, 0xb, %g4
                            
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
 
40019fd0:	84 08 60 3f 	and  %g1, 0x3f, %g2
                           
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
  
40019fd4:	88 09 20 1f 	and  %g4, 0x1f, %g4
                           
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
 
40019fd8:	83 28 a0 04 	sll  %g2, 4, %g1
                              
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
  
40019fdc:	88 59 27 08 	smul  %g4, 0x708, %g4
                         
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)

40019fe0:	92 0a 60 1f 	and  %o1, 0x1f, %o1
                           
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
 
40019fe4:	82 20 40 02 	sub  %g1, %g2, %g1
                            
	if (lastdosdate != dd) {
                                            
40019fe8:	80 a3 40 08 	cmp  %o5, %o0
                                 
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60
 
40019fec:	83 28 60 01 	sll  %g1, 1, %g1
                              
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
  
40019ff0:	88 01 00 01 	add  %g4, %g1, %g4
                            
40019ff4:	88 01 00 09 	add  %g4, %o1, %g4
                            
	if (lastdosdate != dd) {
                                            
40019ff8:	02 80 00 34 	be  4001a0c8 <msdos_date_dos2unix+0x108>
      
40019ffc:	89 29 20 01 	sll  %g4, 1, %g4
                              
		lastdosdate = dd;
                                                  
4001a000:	d0 30 e1 94 	sth  %o0, [ %g3 + 0x194 ]
                     
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;
           
4001a004:	99 32 20 09 	srl  %o0, 9, %o4
                              
		days = 0;
                                                          
4001a008:	84 10 20 00 	clr  %g2
                                      
		for (y = 0; y < year; y++)
                                         
4001a00c:	82 10 20 00 	clr  %g1
                                      
4001a010:	9a 8b 20 7f 	andcc  %o4, 0x7f, %o5
                         
4001a014:	12 80 00 08 	bne  4001a034 <msdos_date_dos2unix+0x74>
      <== ALWAYS TAKEN
4001a018:	86 10 21 6e 	mov  0x16e, %g3
                               
		months = year & 0x03 ? regyear : leapyear;
                         
4001a01c:	10 80 00 0b 	b  4001a048 <msdos_date_dos2unix+0x88>
        <== NOT EXECUTED
4001a020:	80 8b 20 03 	btst  3, %o4
                                  <== NOT EXECUTED
			days += y & 0x03 ? 365 : 366;
                                     
4001a024:	86 08 60 03 	and  %g1, 3, %g3
                              
4001a028:	80 a0 00 03 	cmp  %g0, %g3
                                 
4001a02c:	86 60 3f ff 	subx  %g0, -1, %g3
                            
4001a030:	86 00 e1 6d 	add  %g3, 0x16d, %g3
                          
		for (y = 0; y < year; y++)
                                         
4001a034:	82 00 60 01 	inc  %g1
                                      
4001a038:	80 a3 40 01 	cmp  %o5, %g1
                                 
4001a03c:	12 bf ff fa 	bne  4001a024 <msdos_date_dos2unix+0x64>
      
4001a040:	84 00 80 03 	add  %g2, %g3, %g2
                            
		months = year & 0x03 ? regyear : leapyear;
                         
4001a044:	80 8b 20 03 	btst  3, %o4
                                  
4001a048:	12 80 00 1e 	bne  4001a0c0 <msdos_date_dos2unix+0x100>
     
4001a04c:	03 10 00 af 	sethi  %hi(0x4002bc00), %g1
                   
4001a050:	03 10 00 af 	sethi  %hi(0x4002bc00), %g1
                   
4001a054:	82 10 63 c8 	or  %g1, 0x3c8, %g1	! 4002bfc8 <leapyear>
     
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;
        
4001a058:	87 32 20 05 	srl  %o0, 5, %g3
                              
4001a05c:	86 08 e0 0f 	and  %g3, 0xf, %g3
                            
		if (month == 0) {
                                                  
4001a060:	80 a0 e0 01 	cmp  %g3, 1
                                   
4001a064:	28 80 00 0b 	bleu,a   4001a090 <msdos_date_dos2unix+0xd0>
  
4001a068:	82 0a 20 1f 	and  %o0, 0x1f, %g1
                           
4001a06c:	87 28 e0 01 	sll  %g3, 1, %g3
                              
4001a070:	86 00 ff fe 	add  %g3, -2, %g3
                             
4001a074:	86 00 40 03 	add  %g1, %g3, %g3
                            
			days += months[m];
                                                
4001a078:	da 10 40 00 	lduh  [ %g1 ], %o5
                            
4001a07c:	82 00 60 02 	add  %g1, 2, %g1
                              
		for (m = 0; m < month - 1; m++)
                                    
4001a080:	80 a0 c0 01 	cmp  %g3, %g1
                                 
4001a084:	12 bf ff fd 	bne  4001a078 <msdos_date_dos2unix+0xb8>
      <== NEVER TAKEN
4001a088:	84 00 80 0d 	add  %g2, %o5, %g2
                            
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
      
4001a08c:	82 0a 20 1f 	and  %o0, 0x1f, %g1
                           
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
                 
4001a090:	11 00 00 54 	sethi  %hi(0x15000), %o0
                      
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
      
4001a094:	82 00 7f ff 	add  %g1, -1, %g1
                             
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
                 
4001a098:	90 12 21 80 	or  %o0, 0x180, %o0
                           
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;
      
4001a09c:	84 00 40 02 	add  %g1, %g2, %g2
                            
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;
                 
4001a0a0:	03 10 00 b4 	sethi  %hi(0x4002d000), %g1
                   
4001a0a4:	84 58 80 08 	smul  %g2, %o0, %g2
                           
4001a0a8:	11 04 b3 a9 	sethi  %hi(0x12cea400), %o0
                   
4001a0ac:	90 12 22 00 	or  %o0, 0x200, %o0	! 12cea600 <RAM_SIZE+0x128ea600>

4001a0b0:	90 00 80 08 	add  %g2, %o0, %o0
                            
4001a0b4:	d0 20 61 90 	st  %o0, [ %g1 + 0x190 ]
                      
}
                                                                    
4001a0b8:	81 c3 e0 08 	retl 
                                         
4001a0bc:	90 01 00 08 	add  %g4, %o0, %o0
                            
		months = year & 0x03 ? regyear : leapyear;
                         
4001a0c0:	10 bf ff e6 	b  4001a058 <msdos_date_dos2unix+0x98>
        
4001a0c4:	82 10 63 e0 	or  %g1, 0x3e0, %g1
                           
4001a0c8:	03 10 00 b4 	sethi  %hi(0x4002d000), %g1
                   
4001a0cc:	d0 00 61 90 	ld  [ %g1 + 0x190 ], %o0	! 4002d190 <lastseconds>

}
                                                                    
4001a0d0:	81 c3 e0 08 	retl 
                                         
4001a0d4:	90 01 00 08 	add  %g4, %o0, %o0
                            

                                                                     

40019dfc <msdos_date_unix2dos>: if (lasttime != t) {
40019dfc:	1b 10 00 b4 	sethi  %hi(0x4002d000), %o5
                   
40019e00:	c2 03 61 a0 	ld  [ %o5 + 0x1a0 ], %g1	! 4002d1a0 <lasttime>

40019e04:	80 a0 40 08 	cmp  %g1, %o0
                                 
40019e08:	02 80 00 5a 	be  40019f70 <msdos_date_unix2dos+0x174>
      
40019e0c:	03 22 22 22 	sethi  %hi(0x88888800), %g1
                   
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
                  
40019e10:	82 10 60 89 	or  %g1, 0x89, %g1	! 88888889 <RAM_END+0x48488889>

40019e14:	80 52 00 01 	umul  %o0, %g1, %g0
                           
40019e18:	87 40 00 00 	rd  %y, %g3
                                   
40019e1c:	97 30 e0 05 	srl  %g3, 5, %o3
                              
40019e20:	80 52 c0 01 	umul  %o3, %g1, %g0
                           
40019e24:	83 40 00 00 	rd  %y, %g1
                                   
40019e28:	89 30 60 05 	srl  %g1, 5, %g4
                              
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
                 
40019e2c:	05 24 68 ac 	sethi  %hi(0x91a2b000), %g2
                   
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
                  
40019e30:	83 29 20 04 	sll  %g4, 4, %g1
                              
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
                 
40019e34:	84 10 a3 c5 	or  %g2, 0x3c5, %g2
                           
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
                  
40019e38:	82 20 40 04 	sub  %g1, %g4, %g1
                            
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
                 
40019e3c:	80 52 00 02 	umul  %o0, %g2, %g0
                           
40019e40:	85 40 00 00 	rd  %y, %g2
                                   
40019e44:	19 2a aa aa 	sethi  %hi(0xaaaaa800), %o4
                   
40019e48:	85 30 a0 0b 	srl  %g2, 0xb, %g2
                            
40019e4c:	98 13 22 ab 	or  %o4, 0x2ab, %o4
                           
40019e50:	80 50 80 0c 	umul  %g2, %o4, %g0
                           
40019e54:	99 40 00 00 	rd  %y, %o4
                                   
40019e58:	89 33 20 04 	srl  %o4, 4, %g4
                              
40019e5c:	87 29 20 01 	sll  %g4, 1, %g3
                              
40019e60:	88 00 c0 04 	add  %g3, %g4, %g4
                            
40019e64:	89 29 20 03 	sll  %g4, 3, %g4
                              
40019e68:	84 20 80 04 	sub  %g2, %g4, %g2
                            
40019e6c:	85 28 a0 0b 	sll  %g2, 0xb, %g2
                            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
                  
40019e70:	83 28 60 02 	sll  %g1, 2, %g1
                              
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
           
40019e74:	87 2a e0 04 	sll  %o3, 4, %g3
                              
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
                  
40019e78:	82 22 c0 01 	sub  %o3, %g1, %g1
                            
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
           
40019e7c:	86 20 c0 0b 	sub  %g3, %o3, %g3
                            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)
                  
40019e80:	83 28 60 05 	sll  %g1, 5, %g1
                              
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
           
40019e84:	87 28 e0 02 	sll  %g3, 2, %g3
                              
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
                 
40019e88:	82 00 40 02 	add  %g1, %g2, %g1
                            
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
           
40019e8c:	84 22 00 03 	sub  %o0, %g3, %g2
                            
40019e90:	85 30 a0 01 	srl  %g2, 1, %g2
                              
		lasttime = t;
                                                      
40019e94:	d0 23 61 a0 	st  %o0, [ %o5 + 0x1a0 ]
                      
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
                 
40019e98:	82 00 40 02 	add  %g1, %g2, %g1
                            
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)
           
40019e9c:	05 10 00 b4 	sethi  %hi(0x4002d000), %g2
                   
40019ea0:	c2 30 a1 96 	sth  %g1, [ %g2 + 0x196 ]	! 4002d196 <lastdtime>

		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);
                 
40019ea4:	86 10 00 01 	mov  %g1, %g3
                                 
		if (days != lastday) {
                                             
40019ea8:	05 10 00 b4 	sethi  %hi(0x4002d000), %g2
                   
		days = t / (SECONDSPERDAY);
                                        
40019eac:	03 30 8b 91 	sethi  %hi(0xc22e4400), %g1
                   
		if (days != lastday) {
                                             
40019eb0:	c8 00 a1 9c 	ld  [ %g2 + 0x19c ], %g4
                      
		days = t / (SECONDSPERDAY);
                                        
40019eb4:	82 10 61 07 	or  %g1, 0x107, %g1
                           
40019eb8:	80 52 00 01 	umul  %o0, %g1, %g0
                           
40019ebc:	91 40 00 00 	rd  %y, %o0
                                   
40019ec0:	03 10 00 b4 	sethi  %hi(0x4002d000), %g1
                   
40019ec4:	91 32 20 10 	srl  %o0, 0x10, %o0
                           
		if (days != lastday) {
                                             
40019ec8:	80 a1 00 08 	cmp  %g4, %o0
                                 
40019ecc:	02 80 00 26 	be  40019f64 <msdos_date_unix2dos+0x168>
      
40019ed0:	c2 10 61 98 	lduh  [ %g1 + 0x198 ], %g1
                    
			lastday = days;
                                                   
40019ed4:	d0 20 a1 9c 	st  %o0, [ %g2 + 0x19c ]
                      
			for (year = 1970;; year++) {
                                      
40019ed8:	10 80 00 03 	b  40019ee4 <msdos_date_unix2dos+0xe8>
        
40019edc:	84 10 27 b2 	mov  0x7b2, %g2
                               
40019ee0:	84 00 a0 01 	inc  %g2
                                      
				inc = year & 0x03 ? 365 : 366;
                                   
40019ee4:	88 08 a0 03 	and  %g2, 3, %g4
                              
40019ee8:	80 a0 00 04 	cmp  %g0, %g4
                                 
40019eec:	82 60 3f ff 	subx  %g0, -1, %g1
                            
40019ef0:	82 00 61 6d 	add  %g1, 0x16d, %g1
                          
				if (days < inc)
                                                  
40019ef4:	80 a2 00 01 	cmp  %o0, %g1
                                 
40019ef8:	3a bf ff fa 	bcc,a   40019ee0 <msdos_date_unix2dos+0xe4>
   
40019efc:	90 22 00 01 	sub  %o0, %g1, %o0
                            
			months = year & 0x03 ? regyear : leapyear;
                        
40019f00:	80 a1 20 00 	cmp  %g4, 0
                                   
40019f04:	02 80 00 22 	be  40019f8c <msdos_date_unix2dos+0x190>
      <== ALWAYS TAKEN
40019f08:	1b 10 00 af 	sethi  %hi(0x4002bc00), %o5
                   
40019f0c:	1b 10 00 af 	sethi  %hi(0x4002bc00), %o5
                   <== NOT EXECUTED
40019f10:	9a 13 63 e0 	or  %o5, 0x3e0, %o5	! 4002bfe0 <regyear>
      <== NOT EXECUTED
			for (month = 0; month < 12; month++) {
                            
40019f14:	82 10 20 00 	clr  %g1
                                      
				if (days < months[month])
                                        
40019f18:	89 28 60 01 	sll  %g1, 1, %g4
                              
40019f1c:	c8 13 40 04 	lduh  [ %o5 + %g4 ], %g4
                      
40019f20:	80 a1 00 08 	cmp  %g4, %o0
                                 
40019f24:	18 80 00 1c 	bgu  40019f94 <msdos_date_unix2dos+0x198>
     <== ALWAYS TAKEN
40019f28:	82 00 60 01 	inc  %g1
                                      
			for (month = 0; month < 12; month++) {
                            
40019f2c:	80 a0 60 0c 	cmp  %g1, 0xc
                                 <== NOT EXECUTED
40019f30:	12 bf ff fa 	bne  40019f18 <msdos_date_unix2dos+0x11c>
     <== NOT EXECUTED
40019f34:	90 22 00 04 	sub  %o0, %g4, %o0
                            <== NOT EXECUTED
40019f38:	82 10 21 a0 	mov  0x1a0, %g1
                               <== NOT EXECUTED
			    + ((month + 1) << MSDOS_DD_MONTH_SHIFT);
                      
40019f3c:	82 00 60 01 	inc  %g1
                                      <== NOT EXECUTED
			if (year > 1980)
                                                  
40019f40:	80 a0 a7 bc 	cmp  %g2, 0x7bc
                               <== NOT EXECUTED
			    + ((month + 1) << MSDOS_DD_MONTH_SHIFT);
                      
40019f44:	90 00 40 08 	add  %g1, %o0, %o0
                            <== NOT EXECUTED
			if (year > 1980)
                                                  
40019f48:	08 80 00 19 	bleu  40019fac <msdos_date_unix2dos+0x1b0>
    <== NOT EXECUTED
40019f4c:	82 10 00 08 	mov  %o0, %g1
                                 <== NOT EXECUTED
				lastddate += (year - 1980) <<
                                    
40019f50:	84 00 b8 44 	add  %g2, -1980, %g2
                          
40019f54:	85 28 a0 09 	sll  %g2, 9, %g2
                              
40019f58:	82 02 00 02 	add  %o0, %g2, %g1
                            
40019f5c:	05 10 00 b4 	sethi  %hi(0x4002d000), %g2
                   
40019f60:	c2 30 a1 98 	sth  %g1, [ %g2 + 0x198 ]	! 4002d198 <lastddate>

	*dtp = lastdtime;
                                                   
40019f64:	c6 32 80 00 	sth  %g3, [ %o2 ]
                             
}
                                                                    
40019f68:	81 c3 e0 08 	retl 
                                         
40019f6c:	c2 32 40 00 	sth  %g1, [ %o1 ]
                             
40019f70:	03 10 00 b4 	sethi  %hi(0x4002d000), %g1
                   
40019f74:	c6 10 61 96 	lduh  [ %g1 + 0x196 ], %g3	! 4002d196 <lastdtime>

	*dtp = lastdtime;
                                                   
40019f78:	c6 32 80 00 	sth  %g3, [ %o2 ]
                             
40019f7c:	03 10 00 b4 	sethi  %hi(0x4002d000), %g1
                   
40019f80:	c2 10 61 98 	lduh  [ %g1 + 0x198 ], %g1	! 4002d198 <lastddate>

}
                                                                    
40019f84:	81 c3 e0 08 	retl 
                                         
40019f88:	c2 32 40 00 	sth  %g1, [ %o1 ]
                             
			months = year & 0x03 ? regyear : leapyear;
                        
40019f8c:	10 bf ff e2 	b  40019f14 <msdos_date_unix2dos+0x118>
       
40019f90:	9a 13 63 c8 	or  %o5, 0x3c8, %o5
                           
40019f94:	83 28 60 05 	sll  %g1, 5, %g1
                              
			    + ((month + 1) << MSDOS_DD_MONTH_SHIFT);
                      
40019f98:	82 00 60 01 	inc  %g1
                                      
			if (year > 1980)
                                                  
40019f9c:	80 a0 a7 bc 	cmp  %g2, 0x7bc
                               
			    + ((month + 1) << MSDOS_DD_MONTH_SHIFT);
                      
40019fa0:	90 00 40 08 	add  %g1, %o0, %o0
                            
			if (year > 1980)
                                                  
40019fa4:	18 bf ff eb 	bgu  40019f50 <msdos_date_unix2dos+0x154>
     <== ALWAYS TAKEN
40019fa8:	82 10 00 08 	mov  %o0, %g1
                                 
	*dtp = lastdtime;
                                                   
40019fac:	c6 32 80 00 	sth  %g3, [ %o2 ]
                             <== NOT EXECUTED
			lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)
                    
40019fb0:	05 10 00 b4 	sethi  %hi(0x4002d000), %g2
                   <== NOT EXECUTED
	*ddp = lastddate;
                                                   
40019fb4:	c2 32 40 00 	sth  %g1, [ %o1 ]
                             <== NOT EXECUTED
}
                                                                    
40019fb8:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40019fbc:	d0 30 a1 98 	sth  %o0, [ %g2 + 0x198 ]
                     <== NOT EXECUTED

                                                                     

4002a3d8 <msdos_dir_handlers>: 4002a3d8: 40 01 2b d0 40 01 29 38 40 01 a8 4c 40 01 2c cc @.+.@.)8@..L@.,. 4002a3e8: 40 01 29 dc 40 01 2a 1c 40 01 ac c0 40 01 29 a4 @.).@.*.@...@.). 4002a3f8: 40 01 9c fc 40 01 9c fc 40 01 29 70 40 01 2b d8 @...@...@.)p@.+. 4002a408: 40 01 29 f8 40 01 2c 18 40 01 2c e8 40 01 2b 98 @.).@.,.@.,.@.+.
400188f8 <msdos_dir_is_empty>: {
400188f8:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    msdos_fs_info_t *fs_info = mt_entry->fs_info;
                    
400188fc:	e0 06 20 08 	ld  [ %i0 + 8 ], %l0
                          
40018900:	f8 14 00 00 	lduh  [ %l0 ], %i4
                            
    *ret_val = false;
                                                
40018904:	c0 2e 80 00 	clrb  [ %i2 ]
                                 
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
    
40018908:	25 10 00 a9 	sethi  %hi(0x4002a400), %l2
                   
4001890c:	f0 04 20 bc 	ld  [ %l0 + 0xbc ], %i0
                       
                (strncmp(MSDOS_DIR_NAME((entry)),
                    
40018910:	27 10 00 a9 	sethi  %hi(0x4002a400), %l3
                   
    uint32_t         j = 0, i = 0;
                                   
40018914:	a8 10 20 00 	clr  %l4
                                      
40018918:	b9 2f 20 10 	sll  %i4, 0x10, %i4
                           
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
    
4001891c:	a4 14 a0 f8 	or  %l2, 0xf8, %l2
                            
                (strncmp(MSDOS_DIR_NAME((entry)),
                    
40018920:	a6 14 e1 08 	or  %l3, 0x108, %l3
                           
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,

40018924:	97 37 20 10 	srl  %i4, 0x10, %o3
                           
40018928:	98 10 00 18 	mov  %i0, %o4
                                 
4001892c:	94 5a c0 14 	smul  %o3, %l4, %o2
                           
40018930:	92 10 00 19 	mov  %i1, %o1
                                 
40018934:	7f ff ec 17 	call  40013990 <fat_file_read>
                
40018938:	90 10 00 10 	mov  %l0, %o0
                                 
4001893c:	80 a2 20 00 	cmp  %o0, 0
                                   
40018940:	02 80 00 24 	be  400189d0 <msdos_dir_is_empty+0xd8>
        <== NEVER TAKEN
40018944:	80 a2 20 1f 	cmp  %o0, 0x1f
                                
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
                 
40018948:	04 80 00 26 	ble  400189e0 <msdos_dir_is_empty+0xe8>
       <== NEVER TAKEN
4001894c:	b0 10 3f ff 	mov  -1, %i0
                                  
        assert(ret == fs_info->fat.vol.bps);
                         
40018950:	f8 14 00 00 	lduh  [ %l0 ], %i4
                            
40018954:	b9 2f 20 10 	sll  %i4, 0x10, %i4
                           
40018958:	a3 37 20 10 	srl  %i4, 0x10, %l1
                           
4001895c:	80 a4 40 08 	cmp  %l1, %o0
                                 
40018960:	12 80 00 29 	bne  40018a04 <msdos_dir_is_empty+0x10c>
      <== NEVER TAKEN
40018964:	80 a4 60 00 	cmp  %l1, 0
                                   
40018968:	f0 04 20 bc 	ld  [ %l0 + 0xbc ], %i0
                       
        for (i = 0;
                                                  
4001896c:	02 80 00 24 	be  400189fc <msdos_dir_is_empty+0x104>
       <== NEVER TAKEN
40018970:	ba 10 00 18 	mov  %i0, %i5
                                 
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
                   
40018974:	f6 0f 40 00 	ldub  [ %i5 ], %i3
                            
40018978:	80 a6 e0 e5 	cmp  %i3, 0xe5
                                
4001897c:	22 80 00 1c 	be,a   400189ec <msdos_dir_is_empty+0xf4>
     
40018980:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||
                      
40018984:	c2 0f 60 0b 	ldub  [ %i5 + 0xb ], %g1
                      
40018988:	82 08 60 3f 	and  %g1, 0x3f, %g1
                           
4001898c:	80 a0 60 0f 	cmp  %g1, 0xf
                                 
40018990:	02 80 00 16 	be  400189e8 <msdos_dir_is_empty+0xf0>
        
40018994:	94 10 20 0b 	mov  0xb, %o2
                                 
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,
    
40018998:	92 10 00 12 	mov  %l2, %o1
                                 
4001899c:	40 00 11 b0 	call  4001d05c <strncmp>
                      
400189a0:	90 10 00 1d 	mov  %i5, %o0
                                 
                 MSDOS_ATTR_LFN) ||
                                  
400189a4:	80 a2 20 00 	cmp  %o0, 0
                                   
400189a8:	02 80 00 10 	be  400189e8 <msdos_dir_is_empty+0xf0>
        
400189ac:	94 10 20 0b 	mov  0xb, %o2
                                 
                (strncmp(MSDOS_DIR_NAME((entry)),
                    
400189b0:	92 10 00 13 	mov  %l3, %o1
                                 
400189b4:	40 00 11 aa 	call  4001d05c <strncmp>
                      
400189b8:	90 10 00 1d 	mov  %i5, %o0
                                 
                         MSDOS_SHORT_NAME_LEN) == 0) ||
              
400189bc:	80 a2 20 00 	cmp  %o0, 0
                                   
400189c0:	02 80 00 0a 	be  400189e8 <msdos_dir_is_empty+0xf0>
        
400189c4:	80 a6 e0 00 	cmp  %i3, 0
                                   
            if ((*MSDOS_DIR_NAME(entry)) ==
                          
400189c8:	12 80 00 06 	bne  400189e0 <msdos_dir_is_empty+0xe8>
       
400189cc:	b0 10 20 00 	clr  %i0
                                      
                *ret_val = true;
                                     
400189d0:	82 10 20 01 	mov  1, %g1
                                   
400189d4:	c2 2e 80 00 	stb  %g1, [ %i2 ]
                             
                return RC_OK;
                                        
400189d8:	81 c7 e0 08 	ret 
                                          
400189dc:	91 e8 20 00 	restore  %g0, 0, %o0
                          
}
                                                                    
400189e0:	81 c7 e0 08 	ret 
                                          
400189e4:	81 e8 00 00 	restore 
                                      
400189e8:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
        for (i = 0;
                                                  
400189ec:	82 27 40 18 	sub  %i5, %i0, %g1
                            
400189f0:	80 a4 40 01 	cmp  %l1, %g1
                                 
400189f4:	38 bf ff e1 	bgu,a   40018978 <msdos_dir_is_empty+0x80>
    
400189f8:	f6 0f 40 00 	ldub  [ %i5 ], %i3
                            
        j++;
                                                         
400189fc:	10 bf ff ca 	b  40018924 <msdos_dir_is_empty+0x2c>
         
40018a00:	a8 05 20 01 	inc  %l4
                                      
        assert(ret == fs_info->fat.vol.bps);
                         
40018a04:	17 10 00 a9 	sethi  %hi(0x4002a400), %o3
                   <== NOT EXECUTED
40018a08:	15 10 00 a9 	sethi  %hi(0x4002a400), %o2
                   <== NOT EXECUTED
40018a0c:	11 10 00 a9 	sethi  %hi(0x4002a400), %o0
                   <== NOT EXECUTED
40018a10:	96 12 e0 78 	or  %o3, 0x78, %o3
                            <== NOT EXECUTED
40018a14:	94 12 a1 e0 	or  %o2, 0x1e0, %o2
                           <== NOT EXECUTED
40018a18:	92 10 23 c5 	mov  0x3c5, %o1
                               <== NOT EXECUTED
40018a1c:	7f ff f3 a0 	call  4001589c <__assert_func>
                <== NOT EXECUTED
40018a20:	90 12 20 98 	or  %o0, 0x98, %o0
                            <== NOT EXECUTED
40018a24:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4001a84c <msdos_dir_read>: * the number of bytes read on success, or -1 if error occured (errno * set apropriately). */ ssize_t msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count) {
4001a84c:	9d e3 be 40 	save  %sp, -448, %sp
                          
    int                rc = RC_OK;
                                   
    int                eno = 0;
                                      
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;
    
4001a850:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
4001a854:	ea 00 60 08 	ld  [ %g1 + 8 ], %l5
                          
    rtems_dosfs_convert_control *converter = fs_info->converter;
     
4001a858:	c2 05 60 c0 	ld  [ %l5 + 0xc0 ], %g1
                       
    const rtems_dosfs_convert_handler *convert_handler = converter->handler;

    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;
           
    fat_file_fd_t     *tmp_fat_fd = NULL;
                            
    struct dirent      tmp_dirent;
                                   
    size_t             lfn_len = 0;
                                  
    uint16_t          *lfn_buf = converter->buffer.data;
             
4001a85c:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
    const rtems_dosfs_convert_handler *convert_handler = converter->handler;

4001a860:	ec 00 40 00 	ld  [ %g1 ], %l6
                              
    rtems_dosfs_convert_control *converter = fs_info->converter;
     
4001a864:	c2 27 be c0 	st  %g1, [ %fp + -320 ]
                       
4001a868:	90 05 60 a4 	add  %l5, 0xa4, %o0
                           
    char              *sfn_buf = converter->buffer.data;
             
    const size_t       buf_size = converter->buffer.size;
            
4001a86c:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
    uint16_t          *lfn_buf = converter->buffer.data;
             
4001a870:	c4 27 be c4 	st  %g2, [ %fp + -316 ]
                       
     * cast start and count - protect against using sizes that are not exact

     * multiples of the -dirent- size. These could result in unexpected

     * results
                                                       
     */
                                                              
    start = iop->offset / sizeof(struct dirent);
                     
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
 
4001a874:	b5 36 a0 03 	srl  %i2, 3, %i2
                              
    const size_t       buf_size = converter->buffer.size;
            
4001a878:	c2 27 be a8 	st  %g1, [ %fp + -344 ]
                       
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;
           
4001a87c:	e8 06 20 14 	ld  [ %i0 + 0x14 ], %l4
                       
4001a880:	d0 27 be ac 	st  %o0, [ %fp + -340 ]
                       
    fat_file_fd_t     *tmp_fat_fd = NULL;
                            
4001a884:	c0 27 be cc 	clr  [ %fp + -308 ]
                           
  _Mutex_recursive_Acquire( mutex );
                                 
4001a888:	7f ff bc 51 	call  400099cc <_Mutex_recursive_Acquire>
     
4001a88c:	c0 27 be d0 	clr  [ %fp + -304 ]
                           
    start = iop->offset / sizeof(struct dirent);
                     
4001a890:	d0 1e 00 00 	ldd  [ %i0 ], %o0
                             
4001a894:	94 10 20 00 	clr  %o2
                                      
4001a898:	7f ff 9d a4 	call  40001f28 <__divdi3>
                     
4001a89c:	96 10 21 18 	mov  0x118, %o3
                               
{
                                                                    
4001a8a0:	f2 27 a0 48 	st  %i1, [ %fp + 0x48 ]
                       
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
 
4001a8a4:	03 03 a8 3a 	sethi  %hi(0xea0e800), %g1
                    
     * too, so read such set of sectors is quick operation for low-level IO

     * layer.
                                                        
     */
                                                              
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&
                          
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?
    
             fat_fd->fat_file_size                              :
    
4001a8a8:	c4 05 20 20 	ld  [ %l4 + 0x20 ], %g2
                       
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
 
4001a8ac:	82 10 62 0f 	or  %g1, 0x20f, %g1
                           
    start = iop->offset / sizeof(struct dirent);
                     
4001a8b0:	a0 10 00 09 	mov  %o1, %l0
                                 
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
 
4001a8b4:	80 56 80 01 	umul  %i2, %g1, %g0
                           
4001a8b8:	b5 40 00 00 	rd  %y, %i2
                                   
             fat_fd->fat_file_size                              :
    
4001a8bc:	80 a0 a0 01 	cmp  %g2, 1
                                   
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);
 
4001a8c0:	b5 36 a0 01 	srl  %i2, 1, %i2
                              
             fat_fd->fat_file_size                              :
    
4001a8c4:	02 80 00 e5 	be  4001ac58 <msdos_dir_read+0x40c>
           
4001a8c8:	b4 5e a1 18 	smul  %i2, 0x118, %i2
                         
4001a8cc:	c2 05 60 08 	ld  [ %l5 + 8 ], %g1
                          
4001a8d0:	c2 27 be b0 	st  %g1, [ %fp + -336 ]
                       
             fs_info->fat.vol.bpc;
                                   

                                                                     
    while (count > 0 && cmpltd >= 0)
                                 
4001a8d4:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001a8d8:	02 80 00 f8 	be  4001acb8 <msdos_dir_read+0x46c>
           <== NEVER TAKEN
4001a8dc:	03 00 00 3f 	sethi  %hi(0xfc00), %g1
                       
    uint8_t            lfn_checksum = 0;
                             
4001a8e0:	c0 2f be bf 	clrb  [ %fp + -321 ]
                          
                     * convert dir entry from fixed 8+3 format (without dot)

                     * to 0..8 + 1dot + 0..3 format
                  
                     */
                                              
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(

                        sfn_buf, entry); /* src text */
              
                    eno = (*convert_handler->codepage_to_utf8) (
     
4001a8e4:	82 10 63 ff 	or  %g1, 0x3ff, %g1
                           
    size_t             lfn_len = 0;
                                  
4001a8e8:	c0 27 be b4 	clr  [ %fp + -332 ]
                           
    while (count > 0 && cmpltd >= 0)
                                 
4001a8ec:	ae 10 20 00 	clr  %l7
                                      
                    eno = (*convert_handler->codepage_to_utf8) (
     
4001a8f0:	c2 27 be b8 	st  %g1, [ %fp + -328 ]
                       
    int                lfn_entries = 0;
                              
4001a8f4:	a2 10 20 00 	clr  %l1
                                      
    uint32_t           lfn_start = FAT_FILE_SHORT_NAME;
              
4001a8f8:	b6 10 3f ff 	mov  -1, %i3
                                  
    ssize_t            cmpltd = 0;
                                   
4001a8fc:	ba 10 20 00 	clr  %i5
                                      
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),
     
4001a900:	d8 05 60 bc 	ld  [ %l5 + 0xbc ], %o4
                       
4001a904:	d6 07 be b0 	ld  [ %fp + -336 ], %o3
                       
4001a908:	94 10 00 17 	mov  %l7, %o2
                                 
4001a90c:	92 10 00 14 	mov  %l4, %o1
                                 
4001a910:	7f ff e4 20 	call  40013990 <fat_file_read>
                
4001a914:	90 10 00 15 	mov  %l5, %o0
                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
                 
4001a918:	80 a2 20 1f 	cmp  %o0, 0x1f
                                
4001a91c:	04 80 00 e0 	ble  4001ac9c <msdos_dir_read+0x450>
          <== NEVER TAKEN
4001a920:	b8 10 00 08 	mov  %o0, %i4
                                 
        for (i = 0; i < ret && cmpltd >= 0; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001a924:	88 38 00 1d 	xnor  %g0, %i5, %g4
                           
4001a928:	80 a7 60 00 	cmp  %i5, 0
                                   
4001a92c:	06 80 00 47 	bl  4001aa48 <msdos_dir_read+0x1fc>
           <== NEVER TAKEN
4001a930:	9f 31 20 1f 	srl  %g4, 0x1f, %o7
                           
            char* entry = (char*) fs_info->cl_buf + i;
               
4001a934:	e4 05 60 bc 	ld  [ %l5 + 0xbc ], %l2
                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
                    
4001a938:	c2 0c 80 00 	ldub  [ %l2 ], %g1
                            
4001a93c:	9e 88 60 ff 	andcc  %g1, 0xff, %o7
                         
4001a940:	02 80 00 28 	be  4001a9e0 <msdos_dir_read+0x194>
           <== NEVER TAKEN
4001a944:	01 00 00 00 	nop 
                                          
        for (i = 0; i < ret && cmpltd >= 0; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001a948:	a6 10 20 00 	clr  %l3	! 0 <PROM_START>
                     
                    lfn_start = FAT_FILE_SHORT_NAME;
                 
4001a94c:	b2 10 3f ff 	mov  -1, %i1
                                  
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)

4001a950:	80 a3 e0 e5 	cmp  %o7, 0xe5
                                
4001a954:	22 80 00 17 	be,a   4001a9b0 <msdos_dir_read+0x164>
        
4001a958:	a6 04 e0 20 	add  %l3, 0x20, %l3
                           
            if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&
 
4001a95c:	de 0c a0 0b 	ldub  [ %l2 + 0xb ], %o7
                      
4001a960:	80 8b e0 08 	btst  8, %o7
                                  
4001a964:	02 80 00 3e 	be  4001aa5c <msdos_dir_read+0x210>
           
4001a968:	98 0b e0 3f 	and  %o7, 0x3f, %o4
                           
4001a96c:	80 a3 20 0f 	cmp  %o4, 0xf
                                 
4001a970:	32 80 00 10 	bne,a   4001a9b0 <msdos_dir_read+0x164>
       
4001a974:	a6 04 e0 20 	add  %l3, 0x20, %l3
                           
                if (lfn_start == FAT_FILE_SHORT_NAME)
                
4001a978:	80 a6 ff ff 	cmp  %i3, -1
                                  
4001a97c:	02 80 00 8a 	be  4001aba4 <msdos_dir_read+0x358>
           
4001a980:	96 10 20 00 	clr  %o3
                                      
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
  
4001a984:	c2 0c 80 00 	ldub  [ %l2 ], %g1
                            
4001a988:	82 08 60 3f 	and  %g1, 0x3f, %g1
                           
4001a98c:	80 a0 40 11 	cmp  %g1, %l1
                                 
4001a990:	12 80 00 06 	bne  4001a9a8 <msdos_dir_read+0x15c>
          
4001a994:	c2 0f be bf 	ldub  [ %fp + -321 ], %g1
                     
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||
 
4001a998:	de 0c a0 0d 	ldub  [ %l2 + 0xd ], %o7
                      
4001a99c:	80 a3 c0 01 	cmp  %o7, %g1
                                 
4001a9a0:	02 80 00 14 	be  4001a9f0 <msdos_dir_read+0x1a4>
           <== ALWAYS TAKEN
4001a9a4:	c2 07 be a8 	ld  [ %fp + -344 ], %g1
                       
                    lfn_start = FAT_FILE_SHORT_NAME;
                 
4001a9a8:	b6 10 3f ff 	mov  -1, %i3
                                  
        for (i = 0; i < ret && cmpltd >= 0; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001a9ac:	a6 04 e0 20 	add  %l3, 0x20, %l3
                           
4001a9b0:	83 31 20 1f 	srl  %g4, 0x1f, %g1
                           
4001a9b4:	80 a4 c0 1c 	cmp  %l3, %i4
                                 
4001a9b8:	1a 80 00 24 	bcc  4001aa48 <msdos_dir_read+0x1fc>
          
4001a9bc:	9e 10 00 01 	mov  %g1, %o7
                                 
4001a9c0:	80 a0 60 00 	cmp  %g1, 0
                                   
4001a9c4:	02 80 00 22 	be  4001aa4c <msdos_dir_read+0x200>
           <== NEVER TAKEN
4001a9c8:	c2 07 be b0 	ld  [ %fp + -336 ], %g1
                       
            char* entry = (char*) fs_info->cl_buf + i;
               
4001a9cc:	d2 05 60 bc 	ld  [ %l5 + 0xbc ], %o1
                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
                    
4001a9d0:	c2 0a 40 13 	ldub  [ %o1 + %l3 ], %g1
                      
4001a9d4:	9e 88 60 ff 	andcc  %g1, 0xff, %o7
                         
4001a9d8:	12 bf ff de 	bne  4001a950 <msdos_dir_read+0x104>
          
4001a9dc:	a4 02 40 13 	add  %o1, %l3, %l2
                            
  _Mutex_recursive_Release( mutex );
                                 
4001a9e0:	7f ff bc 20 	call  40009a60 <_Mutex_recursive_Release>
     
4001a9e4:	d0 07 be ac 	ld  [ %fp + -340 ], %o0
                       
        j++;
                                                         
    }
                                                                

                                                                     
    msdos_fs_unlock(fs_info);
                                        
    return cmpltd;
                                                   
}
                                                                    
4001a9e8:	81 c7 e0 08 	ret 
                                          
4001a9ec:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
                lfn_entries--;
                                       
4001a9f0:	a2 04 7f ff 	add  %l1, -1, %l1
                             
                offset_lfn = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;
  
4001a9f4:	95 2c 60 01 	sll  %l1, 1, %o2
                              
4001a9f8:	94 02 80 11 	add  %o2, %l1, %o2
                            
4001a9fc:	95 2a a0 02 	sll  %o2, 2, %o2
                              
4001aa00:	94 02 80 11 	add  %o2, %l1, %o2
                            
                  &lfn_buf[offset_lfn],
                              
4001aa04:	93 2a a0 01 	sll  %o2, 1, %o1
                              
                lfn_len += msdos_get_utf16_string_from_long_entry (
  
4001aa08:	94 20 40 0a 	sub  %g1, %o2, %o2
                            
4001aa0c:	c2 07 be c4 	ld  [ %fp + -316 ], %g1
                       
4001aa10:	c8 27 be a4 	st  %g4, [ %fp + -348 ]
                       
4001aa14:	92 00 40 09 	add  %g1, %o1, %o1
                            
4001aa18:	96 0a e0 01 	and  %o3, 1, %o3
                              
4001aa1c:	7f ff f8 03 	call  40018a28 <msdos_get_utf16_string_from_long_entry>

4001aa20:	90 10 00 12 	mov  %l2, %o0
                                 
4001aa24:	c2 07 be b4 	ld  [ %fp + -332 ], %g1
                       
4001aa28:	82 00 40 08 	add  %g1, %o0, %g1
                            
4001aa2c:	c2 27 be b4 	st  %g1, [ %fp + -332 ]
                       
        for (i = 0; i < ret && cmpltd >= 0; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001aa30:	a6 04 e0 20 	add  %l3, 0x20, %l3
                           
4001aa34:	c8 07 be a4 	ld  [ %fp + -348 ], %g4
                       
4001aa38:	83 31 20 1f 	srl  %g4, 0x1f, %g1
                           
4001aa3c:	80 a4 c0 1c 	cmp  %l3, %i4
                                 
4001aa40:	0a bf ff e0 	bcs  4001a9c0 <msdos_dir_read+0x174>
          
4001aa44:	9e 10 00 01 	mov  %g1, %o7
                                 
4001aa48:	c2 07 be b0 	ld  [ %fp + -336 ], %g1
                       
    while (count > 0 && cmpltd >= 0)
                                 
4001aa4c:	80 8b e0 ff 	btst  0xff, %o7
                               
4001aa50:	12 bf ff ac 	bne  4001a900 <msdos_dir_read+0xb4>
           <== ALWAYS TAKEN
4001aa54:	ae 05 c0 01 	add  %l7, %g1, %l7
                            
4001aa58:	30 bf ff e2 	b,a   4001a9e0 <msdos_dir_read+0x194>
         <== NOT EXECUTED
            if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==
    
4001aa5c:	80 a3 20 0f 	cmp  %o4, 0xf
                                 
4001aa60:	02 bf ff c6 	be  4001a978 <msdos_dir_read+0x12c>
           <== NEVER TAKEN
4001aa64:	80 a4 20 00 	cmp  %l0, 0
                                   
                if (start)
                                           
4001aa68:	02 80 00 05 	be  4001aa7c <msdos_dir_read+0x230>
           
4001aa6c:	98 07 be d0 	add  %fp, -304, %o4
                           
                    start--;
                                         
4001aa70:	a0 04 3f ff 	add  %l0, -1, %l0
                             
                    lfn_start = FAT_FILE_SHORT_NAME;
                 
4001aa74:	10 bf ff ce 	b  4001a9ac <msdos_dir_read+0x160>
            
4001aa78:	b6 10 3f ff 	mov  -1, %i3
                                  
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,

4001aa7c:	96 10 00 17 	mov  %l7, %o3
                                 
4001aa80:	94 10 20 01 	mov  1, %o2
                                   
4001aa84:	92 10 00 14 	mov  %l4, %o1
                                 
4001aa88:	7f ff e4 b6 	call  40013d60 <fat_file_ioctl>
               
4001aa8c:	90 10 00 15 	mov  %l5, %o0
                                 
                if (rc != RC_OK)
                                     
4001aa90:	80 a2 20 00 	cmp  %o0, 0
                                   
4001aa94:	12 80 00 7c 	bne  4001ac84 <msdos_dir_read+0x438>
          <== NEVER TAKEN
4001aa98:	c2 07 be d0 	ld  [ %fp + -304 ], %g1
                       
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
4001aa9c:	f2 27 be e0 	st  %i1, [ %fp + -288 ]
                       
                rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);

4001aaa0:	94 07 be cc 	add  %fp, -308, %o2
                           
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                          
4001aaa4:	f2 27 be e4 	st  %i1, [ %fp + -284 ]
                       
4001aaa8:	92 07 be d8 	add  %fp, -296, %o1
                           
                dir_pos.sname.cln = cur_cln;
                         
4001aaac:	c2 27 be d8 	st  %g1, [ %fp + -296 ]
                       
                rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);

4001aab0:	90 10 00 15 	mov  %l5, %o0
                                 
4001aab4:	7f ff e2 ce 	call  400135ec <fat_file_open>
                
4001aab8:	e6 27 be dc 	st  %l3, [ %fp + -292 ]
                       
                if (rc != RC_OK)
                                     
4001aabc:	80 a2 20 00 	cmp  %o0, 0
                                   
4001aac0:	12 80 00 71 	bne  4001ac84 <msdos_dir_read+0x438>
          <== NEVER TAKEN
4001aac4:	c2 07 be cc 	ld  [ %fp + -308 ], %g1
                       
                tmp_dirent.d_ino = tmp_fat_fd->ino;
                  
4001aac8:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        
                tmp_dirent.d_off = start + cmpltd;
                   
4001aacc:	89 3f 60 1f 	sra  %i5, 0x1f, %g4
                           
4001aad0:	fa 27 be f4 	st  %i5, [ %fp + -268 ]
                       
                    if (lfn_entries == 0 &&
                          
4001aad4:	80 a6 ff ff 	cmp  %i3, -1
                                  
                tmp_dirent.d_off = start + cmpltd;
                   
4001aad8:	c8 27 be f0 	st  %g4, [ %fp + -272 ]
                       
                tmp_dirent.d_reclen = sizeof(struct dirent);
         
4001aadc:	88 10 21 18 	mov  0x118, %g4
                               
                tmp_dirent.d_ino = tmp_fat_fd->ino;
                  
4001aae0:	c2 27 be e8 	st  %g1, [ %fp + -280 ]
                       
                    if (lfn_entries == 0 &&
                          
4001aae4:	02 80 00 05 	be  4001aaf8 <msdos_dir_read+0x2ac>
           
4001aae8:	c8 37 be f8 	sth  %g4, [ %fp + -264 ]
                      
4001aaec:	80 a4 60 00 	cmp  %l1, 0
                                   
4001aaf0:	02 80 00 44 	be  4001ac00 <msdos_dir_read+0x3b4>
           <== ALWAYS TAKEN
4001aaf4:	01 00 00 00 	nop 
                                          
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(

4001aaf8:	f6 07 be c4 	ld  [ %fp + -316 ], %i3
                       
                    size_t len = sizeof(tmp_dirent.d_name) - 1;
      
4001aafc:	82 10 20 ff 	mov  0xff, %g1
                                
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(

4001ab00:	92 10 00 12 	mov  %l2, %o1
                                 
                    size_t len = sizeof(tmp_dirent.d_name) - 1;
      
4001ab04:	c2 27 be d4 	st  %g1, [ %fp + -300 ]
                       
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(

4001ab08:	7f ff f7 d0 	call  40018a48 <msdos_format_dirent_with_dot>
 
4001ab0c:	90 10 00 1b 	mov  %i3, %o0
                                 
                    eno = (*convert_handler->codepage_to_utf8) (
     
4001ab10:	c4 07 be b8 	ld  [ %fp + -328 ], %g2
                       
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(

4001ab14:	d0 37 be fa 	sth  %o0, [ %fp + -262 ]
                      
                    eno = (*convert_handler->codepage_to_utf8) (
     
4001ab18:	94 0a 00 02 	and  %o0, %g2, %o2
                            
4001ab1c:	c2 05 a0 04 	ld  [ %l6 + 4 ], %g1
                          
4001ab20:	d0 07 be c0 	ld  [ %fp + -320 ], %o0
                       
4001ab24:	98 07 be d4 	add  %fp, -300, %o4
                           
4001ab28:	96 07 be fc 	add  %fp, -260, %o3
                           
4001ab2c:	9f c0 40 00 	call  %g1
                                     
4001ab30:	92 10 00 1b 	mov  %i3, %o1
                                 
                    if ( 0 == eno ) {
                                
4001ab34:	a4 92 20 00 	orcc  %o0, 0, %l2
                             
4001ab38:	12 80 00 2c 	bne  4001abe8 <msdos_dir_read+0x39c>
          <== NEVER TAKEN
4001ab3c:	c2 07 be d4 	ld  [ %fp + -300 ], %g1
                       
                      tmp_dirent.d_name[len] = '\0';
                 
4001ab40:	88 07 80 01 	add  %fp, %g1, %g4
                            
                      tmp_dirent.d_namlen = len;
                     
4001ab44:	c2 37 be fa 	sth  %g1, [ %fp + -262 ]
                      
4001ab48:	b6 10 3f ff 	mov  -1, %i3
                                  
                      tmp_dirent.d_name[len] = '\0';
                 
4001ab4c:	c0 29 3e fc 	clrb  [ %g4 + -260 ]
                          
                    memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));

4001ab50:	94 10 21 18 	mov  0x118, %o2
                               
4001ab54:	c2 07 a0 48 	ld  [ %fp + 0x48 ], %g1
                       
4001ab58:	90 00 40 1d 	add  %g1, %i5, %o0
                            
4001ab5c:	40 00 04 69 	call  4001bd00 <memcpy>
                       
4001ab60:	92 07 be e8 	add  %fp, -280, %o1
                           
                    iop->offset = iop->offset + sizeof(struct dirent);

4001ab64:	d8 1e 00 00 	ldd  [ %i0 ], %o4
                             
4001ab68:	96 83 61 18 	addcc  %o5, 0x118, %o3
                        
4001ab6c:	94 43 20 00 	addx  %o4, 0, %o2
                             
4001ab70:	d4 3e 00 00 	std  %o2, [ %i0 ]
                             
                    rc = fat_file_close(&fs_info->fat, tmp_fat_fd);
  
4001ab74:	90 10 00 15 	mov  %l5, %o0
                                 
4001ab78:	7f ff e4 45 	call  40013c8c <fat_file_close>
               
4001ab7c:	d2 07 be cc 	ld  [ %fp + -308 ], %o1
                       
                    cmpltd += (sizeof(struct dirent));
               
4001ab80:	ba 07 61 18 	add  %i5, 0x118, %i5
                          
                    if (rc != RC_OK)
                                 
4001ab84:	80 a2 20 00 	cmp  %o0, 0
                                   
4001ab88:	12 80 00 3f 	bne  4001ac84 <msdos_dir_read+0x438>
          <== NEVER TAKEN
4001ab8c:	b4 06 be e8 	add  %i2, -280, %i2
                           
            if (count <= 0)
                                          
4001ab90:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001ab94:	02 bf ff 93 	be  4001a9e0 <msdos_dir_read+0x194>
           <== ALWAYS TAKEN
4001ab98:	88 38 00 1d 	xnor  %g0, %i5, %g4
                           
        for (i = 0; i < ret && cmpltd >= 0; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001ab9c:	10 bf ff 85 	b  4001a9b0 <msdos_dir_read+0x164>
            <== NOT EXECUTED
4001aba0:	a6 04 e0 20 	add  %l3, 0x20, %l3
                           <== NOT EXECUTED
                    if ((*MSDOS_DIR_ENTRY_TYPE(entry) &
              
4001aba4:	80 88 60 40 	btst  0x40, %g1
                               
4001aba8:	22 bf ff 82 	be,a   4001a9b0 <msdos_dir_read+0x164>
        
4001abac:	a6 04 e0 20 	add  %l3, 0x20, %l3
                           
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &
    
4001abb0:	a2 08 60 3f 	and  %g1, 0x3f, %l1
                           
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
   
4001abb4:	c2 0c a0 0d 	ldub  [ %l2 + 0xd ], %g1
                      
4001abb8:	c8 27 be a4 	st  %g4, [ %fp + -348 ]
                       
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));

4001abbc:	94 10 21 00 	mov  0x100, %o2
                               
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
   
4001abc0:	c2 2f be bf 	stb  %g1, [ %fp + -321 ]
                      
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));

4001abc4:	92 10 20 00 	clr  %o1
                                      
4001abc8:	90 07 be fc 	add  %fp, -260, %o0
                           
4001abcc:	40 00 04 89 	call  4001bdf0 <memset>
                       
4001abd0:	c0 27 be b4 	clr  [ %fp + -332 ]
                           
                    lfn_start =
                                      
4001abd4:	b6 05 c0 13 	add  %l7, %l3, %i3
                            
                    is_first_entry = true;
                           
4001abd8:	96 10 20 01 	mov  1, %o3
                                   
                    lfn_start =
                                      
4001abdc:	b7 36 e0 05 	srl  %i3, 5, %i3
                              
4001abe0:	10 bf ff 69 	b  4001a984 <msdos_dir_read+0x138>
            
4001abe4:	c8 07 be a4 	ld  [ %fp + -348 ], %g4
                       
                        errno  = eno;
                                
4001abe8:	40 00 01 55 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001abec:	b6 10 3f ff 	mov  -1, %i3
                                  <== NOT EXECUTED
4001abf0:	e4 22 00 00 	st  %l2, [ %o0 ]
                              <== NOT EXECUTED
                        cmpltd = -1;
                                 
4001abf4:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
4001abf8:	10 bf ff 6d 	b  4001a9ac <msdos_dir_read+0x160>
            <== NOT EXECUTED
4001abfc:	88 10 20 00 	clr  %g4
                                      <== NOT EXECUTED
                        lfn_checksum == msdos_lfn_checksum(entry)) {
 
4001ac00:	7f ff f5 6f 	call  400181bc <msdos_lfn_checksum>
           
4001ac04:	90 10 00 12 	mov  %l2, %o0
                                 
                    if (lfn_entries == 0 &&
                          
4001ac08:	c2 0f be bf 	ldub  [ %fp + -321 ], %g1
                     
4001ac0c:	80 a2 00 01 	cmp  %o0, %g1
                                 
4001ac10:	12 bf ff ba 	bne  4001aaf8 <msdos_dir_read+0x2ac>
          <== NEVER TAKEN
4001ac14:	82 10 20 ff 	mov  0xff, %g1
                                
                        size_t len = sizeof(tmp_dirent.d_name) - 1;
  
4001ac18:	c2 27 be d4 	st  %g1, [ %fp + -300 ]
                       
                        eno = (*convert_handler->utf16_to_utf8) (
    
4001ac1c:	98 07 be d4 	add  %fp, -300, %o4
                           
4001ac20:	c2 05 a0 0c 	ld  [ %l6 + 0xc ], %g1
                        
4001ac24:	d4 07 be b4 	ld  [ %fp + -332 ], %o2
                       
4001ac28:	d2 07 be c4 	ld  [ %fp + -316 ], %o1
                       
4001ac2c:	d0 07 be c0 	ld  [ %fp + -320 ], %o0
                       
4001ac30:	9f c0 40 00 	call  %g1
                                     
4001ac34:	96 07 be fc 	add  %fp, -260, %o3
                           
                        if (eno == 0) {
                              
4001ac38:	80 a2 20 00 	cmp  %o0, 0
                                   
4001ac3c:	32 bf ff b0 	bne,a   4001aafc <msdos_dir_read+0x2b0>
       
4001ac40:	f6 07 be c4 	ld  [ %fp + -316 ], %i3
                       
                            tmp_dirent.d_namlen = len;
               
4001ac44:	c2 07 be d4 	ld  [ %fp + -300 ], %g1
                       
                            tmp_dirent.d_name[len] = '\0';
           
4001ac48:	88 07 80 01 	add  %fp, %g1, %g4
                            
                            tmp_dirent.d_namlen = len;
               
4001ac4c:	c2 37 be fa 	sth  %g1, [ %fp + -262 ]
                      
                            tmp_dirent.d_name[len] = '\0';
           
4001ac50:	10 bf ff c0 	b  4001ab50 <msdos_dir_read+0x304>
            
4001ac54:	c0 29 3e fc 	clrb  [ %g4 + -260 ]
                          
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&
                          
4001ac58:	c2 05 20 24 	ld  [ %l4 + 0x24 ], %g1
                       
4001ac5c:	80 a0 60 00 	cmp  %g1, 0
                                   
4001ac60:	32 bf ff 1c 	bne,a   4001a8d0 <msdos_dir_read+0x84>
        <== NEVER TAKEN
4001ac64:	c2 05 60 08 	ld  [ %l5 + 8 ], %g1
                          <== NOT EXECUTED
4001ac68:	c2 0d 60 16 	ldub  [ %l5 + 0x16 ], %g1
                     
4001ac6c:	80 88 60 03 	btst  3, %g1
                                  
4001ac70:	22 bf ff 18 	be,a   4001a8d0 <msdos_dir_read+0x84>
         <== NEVER TAKEN
4001ac74:	c2 05 60 08 	ld  [ %l5 + 8 ], %g1
                          <== NOT EXECUTED
             fat_fd->fat_file_size                              :
    
4001ac78:	c2 05 20 18 	ld  [ %l4 + 0x18 ], %g1
                       
4001ac7c:	10 bf ff 16 	b  4001a8d4 <msdos_dir_read+0x88>
             
4001ac80:	c2 27 be b0 	st  %g1, [ %fp + -336 ]
                       
4001ac84:	82 10 00 08 	mov  %o0, %g1
                                 <== NOT EXECUTED
4001ac88:	d0 07 be ac 	ld  [ %fp + -340 ], %o0
                       <== NOT EXECUTED
4001ac8c:	7f ff bb 75 	call  40009a60 <_Mutex_recursive_Release>
     <== NOT EXECUTED
4001ac90:	ba 10 00 01 	mov  %g1, %i5
                                 <== NOT EXECUTED
}
                                                                    
4001ac94:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001ac98:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED
4001ac9c:	7f ff bb 71 	call  40009a60 <_Mutex_recursive_Release>
     <== NOT EXECUTED
4001aca0:	d0 07 be ac 	ld  [ %fp + -340 ], %o0
                       <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);
               
4001aca4:	40 00 01 26 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001aca8:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
4001acac:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
4001acb0:	10 bf ff 4e 	b  4001a9e8 <msdos_dir_read+0x19c>
            <== NOT EXECUTED
4001acb4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    ssize_t            cmpltd = 0;
                                   
4001acb8:	10 bf ff 4a 	b  4001a9e0 <msdos_dir_read+0x194>
            <== NOT EXECUTED
4001acbc:	ba 10 20 00 	clr  %i5
                                      <== NOT EXECUTED

                                                                     

4001af3c <msdos_file_ftruncate>: * RETURNS: * RC_OK on success, or -1 if error occured (errno set appropriately). */ int msdos_file_ftruncate(rtems_libio_t *iop, off_t length) {
4001af3c:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    int                rc = RC_OK;
                                   
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;
    
4001af40:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
4001af44:	f8 00 60 08 	ld  [ %g1 + 8 ], %i4
                          
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;
           
4001af48:	fa 06 20 14 	ld  [ %i0 + 0x14 ], %i5
                       
4001af4c:	b6 07 20 a4 	add  %i4, 0xa4, %i3
                           
  _Mutex_recursive_Acquire( mutex );
                                 
4001af50:	7f ff ba 9f 	call  400099cc <_Mutex_recursive_Acquire>
     
4001af54:	90 10 00 1b 	mov  %i3, %o0
                                 
    uint32_t old_length;
                                             

                                                                     
    msdos_fs_lock(fs_info);
                                          

                                                                     
    old_length = fat_fd->fat_file_size;
                              
    if (length < old_length) {
                                       
4001af58:	82 10 20 00 	clr  %g1
                                      
4001af5c:	80 a0 40 19 	cmp  %g1, %i1
                                 
4001af60:	14 80 00 23 	bg  4001afec <msdos_file_ftruncate+0xb0>
      <== NEVER TAKEN
4001af64:	e0 07 60 18 	ld  [ %i5 + 0x18 ], %l0
                       
4001af68:	02 80 00 1f 	be  4001afe4 <msdos_file_ftruncate+0xa8>
      <== ALWAYS TAKEN
4001af6c:	80 a4 00 1a 	cmp  %l0, %i2
                                 
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);
       
    } else {
                                                         
        uint32_t new_length;
                                         

                                                                     
        rc = fat_file_extend(&fs_info->fat,
                          
4001af70:	98 07 bf fc 	add  %fp, -4, %o4
                             <== NOT EXECUTED
4001af74:	96 10 00 1a 	mov  %i2, %o3
                                 
4001af78:	94 10 20 01 	mov  1, %o2
                                   
4001af7c:	92 10 00 1d 	mov  %i5, %o1
                                 
4001af80:	7f ff e3 ad 	call  40013e34 <fat_file_extend>
              
4001af84:	90 10 00 1c 	mov  %i4, %o0
                                 
                             fat_fd,
                                 
                             true,
                                   
                             length,
                                 
                             &new_length);
                           
        if (rc == RC_OK && length != new_length) {
                   
4001af88:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4001af8c:	12 80 00 12 	bne  4001afd4 <msdos_file_ftruncate+0x98>
     <== NEVER TAKEN
4001af90:	80 a6 00 19 	cmp  %i0, %i1
                                 
4001af94:	12 80 00 28 	bne  4001b034 <msdos_file_ftruncate+0xf8>
     <== NEVER TAKEN
4001af98:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
4001af9c:	80 a0 40 1a 	cmp  %g1, %i2
                                 
4001afa0:	12 80 00 26 	bne  4001b038 <msdos_file_ftruncate+0xfc>
     <== NEVER TAKEN
4001afa4:	94 10 00 10 	mov  %l0, %o2
                                 
4001afa8:	c2 0f 60 30 	ldub  [ %i5 + 0x30 ], %g1
                     
4001afac:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->fat_file_size = s;
                                       
4001afb0:	f4 27 60 18 	st  %i2, [ %i5 + 0x18 ]
                       
    }
                                                                

                                                                     
    if (rc == RC_OK)
                                                 
    {
                                                                
        fat_file_set_file_size(fat_fd, length);
                      
        fat_file_set_ctime_mtime(fat_fd, time(NULL));
                
4001afb4:	90 10 20 00 	clr  %o0
                                      
4001afb8:	40 00 12 c8 	call  4001fad8 <time>
                         
4001afbc:	c2 2f 60 30 	stb  %g1, [ %i5 + 0x30 ]
                      
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001afc0:	c2 0f 60 30 	ldub  [ %i5 + 0x30 ], %g1
                     
4001afc4:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->ctime = t;
                                               
4001afc8:	d0 3f 60 40 	std  %o0, [ %i5 + 0x40 ]
                      
    fat_fd->mtime = t;
                                               
4001afcc:	d0 3f 60 48 	std  %o0, [ %i5 + 0x48 ]
                      
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001afd0:	c2 2f 60 30 	stb  %g1, [ %i5 + 0x30 ]
                      
  _Mutex_recursive_Release( mutex );
                                 
4001afd4:	7f ff ba a3 	call  40009a60 <_Mutex_recursive_Release>
     
4001afd8:	90 10 00 1b 	mov  %i3, %o0
                                 
    }
                                                                

                                                                     
    msdos_fs_unlock(fs_info);
                                        

                                                                     
    return rc;
                                                       
}
                                                                    
4001afdc:	81 c7 e0 08 	ret 
                                          
4001afe0:	81 e8 00 00 	restore 
                                      
    if (length < old_length) {
                                       
4001afe4:	08 bf ff e4 	bleu  4001af74 <msdos_file_ftruncate+0x38>
    
4001afe8:	98 07 bf fc 	add  %fp, -4, %o4
                             
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);
       
4001afec:	94 10 00 1a 	mov  %i2, %o2
                                 
4001aff0:	92 10 00 1d 	mov  %i5, %o1
                                 
4001aff4:	7f ff e2 e3 	call  40013b80 <fat_file_truncate>
            
4001aff8:	90 10 00 1c 	mov  %i4, %o0
                                 
    if (rc == RC_OK)
                                                 
4001affc:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4001b000:	12 bf ff f5 	bne  4001afd4 <msdos_file_ftruncate+0x98>
     <== NEVER TAKEN
4001b004:	90 10 20 00 	clr  %o0
                                      
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001b008:	c2 0f 60 30 	ldub  [ %i5 + 0x30 ], %g1
                     
4001b00c:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->fat_file_size = s;
                                       
4001b010:	f4 27 60 18 	st  %i2, [ %i5 + 0x18 ]
                       
        fat_file_set_ctime_mtime(fat_fd, time(NULL));
                
4001b014:	40 00 12 b1 	call  4001fad8 <time>
                         
4001b018:	c2 2f 60 30 	stb  %g1, [ %i5 + 0x30 ]
                      
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001b01c:	c2 0f 60 30 	ldub  [ %i5 + 0x30 ], %g1
                     
4001b020:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->ctime = t;
                                               
4001b024:	d0 3f 60 40 	std  %o0, [ %i5 + 0x40 ]
                      
    fat_fd->mtime = t;
                                               
4001b028:	d0 3f 60 48 	std  %o0, [ %i5 + 0x48 ]
                      
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001b02c:	10 bf ff ea 	b  4001afd4 <msdos_file_ftruncate+0x98>
       
4001b030:	c2 2f 60 30 	stb  %g1, [ %i5 + 0x30 ]
                      
            fat_file_truncate(&fs_info->fat, fat_fd, old_length);
    
4001b034:	94 10 00 10 	mov  %l0, %o2
                                 <== NOT EXECUTED
4001b038:	92 10 00 1d 	mov  %i5, %o1
                                 <== NOT EXECUTED
4001b03c:	7f ff e2 d1 	call  40013b80 <fat_file_truncate>
            <== NOT EXECUTED
4001b040:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
            errno = ENOSPC;
                                          
4001b044:	40 00 00 3e 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001b048:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4001b04c:	82 10 20 1c 	mov  0x1c, %g1
                                <== NOT EXECUTED
4001b050:	10 bf ff e1 	b  4001afd4 <msdos_file_ftruncate+0x98>
       <== NOT EXECUTED
4001b054:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED

                                                                     

4002a418 <msdos_file_handlers>: 4002a418: 40 01 2b d0 40 01 29 38 40 01 ad 48 40 01 ad ac @.+.@.)8@..H@... 4002a428: 40 01 29 dc 40 01 2a 60 40 01 ae a0 40 01 af 3c @.).@.*`@...@..< 4002a438: 40 01 b0 58 40 01 9c fc 40 01 29 70 40 01 2b d8 @..X@...@.)p@.+. 4002a448: 40 01 29 f8 40 01 2c 18 40 01 2c e8 40 01 2b 98 @.).@.,.@.,.@.+. 4002a458: 20 2b 2c 3b 3d 5b 5d 00 24 25 27 2d 5f 40 7e 60 +,;=[].$%'-_@~` 4002a468: 21 28 29 7b 7d 5e 23 26 00 00 00 00 00 00 00 00 !(){}^#&........ 4002a478: 72 65 74 20 3d 3d 20 66 73 5f 69 6e 66 6f 2d 3e ret == fs_info-> 4002a488: 66 61 74 2e 76 6f 6c 2e 62 70 73 00 00 00 00 00 fat.vol.bps..... 4002a498: 2f 68 6f 6d 65 2f 6c 75 6e 61 74 69 63 2f 64 65 /home/lunatic/de 4002a4a8: 76 65 6c 6f 70 6d 65 6e 74 2f 72 74 65 6d 73 2f velopment/rtems/ 4002a4b8: 6b 65 72 6e 65 6c 2f 72 74 65 6d 73 2f 63 2f 73 kernel/rtems/c/s 4002a4c8: 72 63 2f 2e 2e 2f 2e 2e 2f 63 70 75 6b 69 74 2f rc/../../cpukit/ 4002a4d8: 6c 69 62 66 73 2f 73 72 63 2f 64 6f 73 66 73 2f libfs/src/dosfs/ 4002a4e8: 6d 73 64 6f 73 5f 6d 69 73 63 2e 63 00 00 00 00 msdos_misc.c.... 4002a4f8: 2e 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00 . ..... 4002a508: 2e 2e 20 20 20 20 20 20 20 20 20 00 00 00 00 00 .. ..... 4002a518: 6e 61 6d 65 5f 75 74 66 38 5f 6c 65 6e 20 3e 20 name_utf8_len > 4002a528: 30 00 00 00 00 00 00 00 62 79 74 65 73 5f 72 65 0.......bytes_re 4002a538: 61 64 20 3d 3d 20 62 74 73 32 72 64 00 00 00 00 ad == bts2rd.... 4002a548: 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 0123456789ABCDEF ... 4002a560: 72 65 74 20 3d 3d 20 62 74 73 32 72 64 00 00 00 ret == bts2rd...
4001b058 <msdos_file_sync>: * RETURNS: * RC_OK on success, or -1 if error occured (errno set appropriately) */ int msdos_file_sync(rtems_libio_t *iop) {
4001b058:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    int                rc = RC_OK;
                                   
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;
    
4001b05c:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
4001b060:	fa 00 60 08 	ld  [ %g1 + 8 ], %i5
                          
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;
           
4001b064:	f6 06 20 14 	ld  [ %i0 + 0x14 ], %i3
                       
4001b068:	b8 07 60 a4 	add  %i5, 0xa4, %i4
                           
  _Mutex_recursive_Acquire( mutex );
                                 
4001b06c:	7f ff ba 58 	call  400099cc <_Mutex_recursive_Acquire>
     
4001b070:	90 10 00 1c 	mov  %i4, %o0
                                 

                                                                     
    msdos_fs_lock(fs_info);
                                          

                                                                     
    rc = fat_file_update(&fs_info->fat, fat_fd);
                     
4001b074:	92 10 00 1b 	mov  %i3, %o1
                                 
4001b078:	7f ff e2 25 	call  4001390c <fat_file_update>
              
4001b07c:	90 10 00 1d 	mov  %i5, %o0
                                 
    if (rc != RC_OK)
                                                 
4001b080:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4001b084:	12 80 00 04 	bne  4001b094 <msdos_file_sync+0x3c>
          <== NEVER TAKEN
4001b088:	01 00 00 00 	nop 
                                          
    {
                                                                
        msdos_fs_unlock(fs_info);
                                    
        return rc;
                                                   
    }
                                                                

                                                                     
    rc = fat_sync(&fs_info->fat);
                                    
4001b08c:	7f ff e8 8f 	call  400152c8 <fat_sync>
                     
4001b090:	90 10 00 1d 	mov  %i5, %o0
                                 
  _Mutex_recursive_Release( mutex );
                                 
4001b094:	7f ff ba 73 	call  40009a60 <_Mutex_recursive_Release>
     
4001b098:	90 10 00 1c 	mov  %i4, %o0
                                 

                                                                     
    msdos_fs_unlock(fs_info);
                                        

                                                                     
    return RC_OK;
                                                    
}
                                                                    
4001b09c:	81 c7 e0 08 	ret 
                                          
4001b0a0:	81 e8 00 00 	restore 
                                      

                                                                     

4001adac <msdos_file_write>: * the number of bytes written on success, or -1 if error occured * and errno set appropriately */ ssize_t msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count) {
4001adac:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    ssize_t            ret = 0;
                                      
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;
    
4001adb0:	c2 06 20 20 	ld  [ %i0 + 0x20 ], %g1
                       
4001adb4:	f6 00 60 08 	ld  [ %g1 + 8 ], %i3
                          
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;
           
4001adb8:	f8 06 20 14 	ld  [ %i0 + 0x14 ], %i4
                       
4001adbc:	a0 06 e0 a4 	add  %i3, 0xa4, %l0
                           
  _Mutex_recursive_Acquire( mutex );
                                 
4001adc0:	7f ff bb 03 	call  400099cc <_Mutex_recursive_Acquire>
     
4001adc4:	90 10 00 10 	mov  %l0, %o0
                                 
{
                                                                    
4001adc8:	ba 10 00 18 	mov  %i0, %i5
                                 
4001adcc:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          

                                                                     
    msdos_fs_lock(fs_info);
                                          

                                                                     
    if (rtems_libio_iop_is_append(iop))
                              
4001add0:	80 88 62 00 	btst  0x200, %g1
                              
4001add4:	32 80 00 24 	bne,a   4001ae64 <msdos_file_write+0xb8>
      
4001add8:	d4 07 20 18 	ld  [ %i4 + 0x18 ], %o2
                       
4001addc:	d4 06 20 04 	ld  [ %i0 + 4 ], %o2
                          
        iop->offset = fat_fd->fat_file_size;
                         

                                                                     
    ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,
  
4001ade0:	98 10 00 19 	mov  %i1, %o4
                                 
4001ade4:	96 10 00 1a 	mov  %i2, %o3
                                 
4001ade8:	92 10 00 1c 	mov  %i4, %o1
                                 
4001adec:	7f ff e4 ae 	call  400140a4 <fat_file_write>
               
4001adf0:	90 10 00 1b 	mov  %i3, %o0
                                 
                         buffer);
                                    
    if (ret < 0)
                                                     
4001adf4:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4001adf8:	06 80 00 25 	bl  4001ae8c <msdos_file_write+0xe0>
          
4001adfc:	85 3e 20 1f 	sra  %i0, 0x1f, %g2
                           

                                                                     
    /*
                                                               
     * update file size in both fat-file descriptor and file control block if

     * file was extended
                                             
     */
                                                              
    iop->offset += ret;
                                              
4001ae00:	f4 1f 40 00 	ldd  [ %i5 ], %i2
                             
4001ae04:	9a 86 00 1b 	addcc  %i0, %i3, %o5
                          
4001ae08:	98 40 80 1a 	addx  %g2, %i2, %o4
                           
4001ae0c:	d8 3f 40 00 	std  %o4, [ %i5 ]
                             
    if (iop->offset > fat_fd->fat_file_size)
                         
4001ae10:	80 a3 20 00 	cmp  %o4, 0
                                   
4001ae14:	04 80 00 17 	ble  4001ae70 <msdos_file_write+0xc4>
         <== ALWAYS TAKEN
4001ae18:	c2 07 20 18 	ld  [ %i4 + 0x18 ], %g1
                       
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001ae1c:	c2 0f 20 30 	ldub  [ %i4 + 0x30 ], %g1
                     <== NOT EXECUTED
4001ae20:	82 10 60 02 	or  %g1, 2, %g1
                               
        fat_file_set_file_size(fat_fd, (uint32_t) iop->offset);
      
4001ae24:	da 27 20 18 	st  %o5, [ %i4 + 0x18 ]
                       
4001ae28:	c2 2f 20 30 	stb  %g1, [ %i4 + 0x30 ]
                      

                                                                     
    if (ret > 0)
                                                     
4001ae2c:	80 a6 20 00 	cmp  %i0, 0
                                   
4001ae30:	02 80 00 09 	be  4001ae54 <msdos_file_write+0xa8>
          <== NEVER TAKEN
4001ae34:	01 00 00 00 	nop 
                                          
        fat_file_set_ctime_mtime(fat_fd, time(NULL));
                
4001ae38:	40 00 13 28 	call  4001fad8 <time>
                         
4001ae3c:	90 10 20 00 	clr  %o0	! 0 <PROM_START>
                     
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001ae40:	c2 0f 20 30 	ldub  [ %i4 + 0x30 ], %g1
                     
4001ae44:	82 10 60 02 	or  %g1, 2, %g1
                               
    fat_fd->ctime = t;
                                               
4001ae48:	d0 3f 20 40 	std  %o0, [ %i4 + 0x40 ]
                      
    fat_fd->mtime = t;
                                               
4001ae4c:	d0 3f 20 48 	std  %o0, [ %i4 + 0x48 ]
                      
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001ae50:	c2 2f 20 30 	stb  %g1, [ %i4 + 0x30 ]
                      
  _Mutex_recursive_Release( mutex );
                                 
4001ae54:	7f ff bb 03 	call  40009a60 <_Mutex_recursive_Release>
     
4001ae58:	90 10 00 10 	mov  %l0, %o0
                                 

                                                                     
    msdos_fs_unlock(fs_info);
                                        
    return ret;
                                                      
}
                                                                    
4001ae5c:	81 c7 e0 08 	ret 
                                          
4001ae60:	81 e8 00 00 	restore 
                                      
        iop->offset = fat_fd->fat_file_size;
                         
4001ae64:	d4 26 20 04 	st  %o2, [ %i0 + 4 ]
                          
4001ae68:	10 bf ff de 	b  4001ade0 <msdos_file_write+0x34>
           
4001ae6c:	c0 26 00 00 	clr  [ %i0 ]
                                  
    if (iop->offset > fat_fd->fat_file_size)
                         
4001ae70:	12 bf ff f0 	bne  4001ae30 <msdos_file_write+0x84>
         <== NEVER TAKEN
4001ae74:	80 a6 20 00 	cmp  %i0, 0
                                   
4001ae78:	80 a3 40 01 	cmp  %o5, %g1
                                 
4001ae7c:	08 bf ff ed 	bleu  4001ae30 <msdos_file_write+0x84>
        
4001ae80:	80 a6 20 00 	cmp  %i0, 0
                                   
    fat_fd->flags |= FAT_FILE_META_DATA_CHANGED;
                     
4001ae84:	10 bf ff e7 	b  4001ae20 <msdos_file_write+0x74>
           
4001ae88:	c2 0f 20 30 	ldub  [ %i4 + 0x30 ], %g1
                     
        return -1;
                                                   
4001ae8c:	b0 10 3f ff 	mov  -1, %i0
                                  
4001ae90:	7f ff ba f4 	call  40009a60 <_Mutex_recursive_Release>
     
4001ae94:	90 10 00 10 	mov  %l0, %o0
                                 
4001ae98:	81 c7 e0 08 	ret 
                                          
4001ae9c:	81 e8 00 00 	restore 
                                      

                                                                     

4001a0d8 <msdos_filename_utf8_to_long_name_for_compare>: rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, uint8_t *long_name, const size_t long_name_size) {
4001a0d8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    ssize_t        returned_size = 0;
                                
    int            eno           = 0;
                                
    size_t         name_size;
                                        
    size_t         dest_size     = long_name_size;
                   
4001a0dc:	f8 27 bf fc 	st  %i4, [ %fp + -4 ]
                         

                                                                     
    returned_size = msdos_filename_process_dot_names (
               
4001a0e0:	96 10 00 1c 	mov  %i4, %o3
                                 
4001a0e4:	94 10 00 1b 	mov  %i3, %o2
                                 
4001a0e8:	92 10 00 1a 	mov  %i2, %o1
                                 
4001a0ec:	7f ff ff 1f 	call  40019d68 <msdos_filename_process_dot_names>

4001a0f0:	90 10 00 19 	mov  %i1, %o0
                                 
      utf8_name,
                                                     
      utf8_name_size,
                                                
      long_name,
                                                     
      long_name_size);
                                               

                                                                     
    if (returned_size == 0) {
                                        
4001a0f4:	80 a2 20 00 	cmp  %o0, 0
                                   
4001a0f8:	12 80 00 12 	bne  4001a140 <msdos_filename_utf8_to_long_name_for_compare+0x68>
<== NEVER TAKEN
4001a0fc:	94 10 00 1a 	mov  %i2, %o2
                                 
  for ( i = size_returned - UTF8_FULL_STOP_SIZE;
                     
4001a100:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001a104:	14 80 00 15 	bg  4001a158 <msdos_filename_utf8_to_long_name_for_compare+0x80>
<== ALWAYS TAKEN
4001a108:	82 06 bf ff 	add  %i2, -1, %g1
                             
      name_size = msdos_filename_delete_trailing_dots (
              
        &utf8_name[0],
                                               
        utf8_name_size);
                                             
      if (name_size > 0) {
                                           
4001a10c:	80 a2 a0 00 	cmp  %o2, 0
                                   <== NOT EXECUTED
4001a110:	02 80 00 18 	be  4001a170 <msdos_filename_utf8_to_long_name_for_compare+0x98>
<== NEVER TAKEN
4001a114:	98 07 bf fc 	add  %fp, -4, %o4
                             
        eno = (*converter->handler->utf8_normalize_and_fold) (
       
4001a118:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
4001a11c:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       
4001a120:	96 10 00 1b 	mov  %i3, %o3
                                 
4001a124:	92 10 00 19 	mov  %i1, %o1
                                 
4001a128:	9f c0 40 00 	call  %g1
                                     
4001a12c:	90 10 00 18 	mov  %i0, %o0
                                 
          converter,
                                                 
          utf8_name,
                                                 
          name_size,
                                                 
          long_name,
                                                 
          &dest_size);
                                               
        if (eno == 0) {
                                              
4001a130:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4001a134:	12 80 00 10 	bne  4001a174 <msdos_filename_utf8_to_long_name_for_compare+0x9c>
<== NEVER TAKEN
4001a138:	01 00 00 00 	nop 
                                          
          returned_size = (ssize_t)dest_size;
                        
4001a13c:	d0 07 bf fc 	ld  [ %fp + -4 ], %o0
                         
      errno         = eno;
                                           
      returned_size = -1;
                                            
    }
                                                                

                                                                     
    return returned_size;
                                            
  }
                                                                  
4001a140:	81 c7 e0 08 	ret 
                                          
4001a144:	91 e8 00 08 	restore  %g0, %o0, %o0
                        
    i             -= UTF8_FULL_STOP_SIZE;
                            
4001a148:	82 00 7f ff 	add  %g1, -1, %g1
                             
  for ( i = size_returned - UTF8_FULL_STOP_SIZE;
                     
4001a14c:	80 a0 7f ff 	cmp  %g1, -1
                                  
4001a150:	02 bf ff f0 	be  4001a110 <msdos_filename_utf8_to_long_name_for_compare+0x38>
<== NEVER TAKEN
4001a154:	80 a2 a0 00 	cmp  %o2, 0
                                   
        && filename_utf8[i] == UTF8_FULL_STOP;) {
                    
4001a158:	c4 0e 40 01 	ldub  [ %i1 + %g1 ], %g2
                      
4001a15c:	80 a0 a0 2e 	cmp  %g2, 0x2e
                                
4001a160:	22 bf ff fa 	be,a   4001a148 <msdos_filename_utf8_to_long_name_for_compare+0x70>

4001a164:	94 10 00 01 	mov  %g1, %o2
                                 
      if (name_size > 0) {
                                           
4001a168:	10 bf ff ea 	b  4001a110 <msdos_filename_utf8_to_long_name_for_compare+0x38>

4001a16c:	80 a2 a0 00 	cmp  %o2, 0
                                   
        eno = EINVAL;
                                                
4001a170:	ba 10 20 16 	mov  0x16, %i5
                                <== NOT EXECUTED
      errno         = eno;
                                           
4001a174:	40 00 03 f2 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001a178:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4001a17c:	fa 22 00 00 	st  %i5, [ %o0 ]
                              <== NOT EXECUTED
    return returned_size;
                                            
4001a180:	10 bf ff f0 	b  4001a140 <msdos_filename_utf8_to_long_name_for_compare+0x68>
<== NOT EXECUTED
4001a184:	90 10 3f ff 	mov  -1, %o0
                                  <== NOT EXECUTED

4001a2c8 <msdos_filename_utf8_to_long_name_for_save>:
                
    rtems_dosfs_convert_control     *converter,
                      
    const uint8_t                   *utf8_name,
                      
    const size_t                     utf8_name_size,
                 
    uint16_t                        *long_name,
                      
    const size_t                     long_name_size)
                 
{
                                                                    
4001a2c8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    size_t       name_size_tmp;
                                      
    int          i;
                                                  
    uint16_t     c;
                                                  
    unsigned int chars_written;
                                      

                                                                     
    name_size_tmp = long_name_size;
                                  
4001a2cc:	f8 27 bf fc 	st  %i4, [ %fp + -4 ]
                         
  for ( i = size_returned - UTF8_FULL_STOP_SIZE;
                     
4001a2d0:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001a2d4:	14 80 00 07 	bg  4001a2f0 <msdos_filename_utf8_to_long_name_for_save+0x28>
<== ALWAYS TAKEN
4001a2d8:	82 06 bf ff 	add  %i2, -1, %g1
                             
4001a2dc:	30 80 00 0a 	b,a   4001a304 <msdos_filename_utf8_to_long_name_for_save+0x3c>
<== NOT EXECUTED
    i             -= UTF8_FULL_STOP_SIZE;
                            
4001a2e0:	82 00 7f ff 	add  %g1, -1, %g1
                             
  for ( i = size_returned - UTF8_FULL_STOP_SIZE;
                     
4001a2e4:	80 a0 7f ff 	cmp  %g1, -1
                                  
4001a2e8:	02 80 00 07 	be  4001a304 <msdos_filename_utf8_to_long_name_for_save+0x3c>
<== NEVER TAKEN
4001a2ec:	80 a6 a0 00 	cmp  %i2, 0
                                   
        && filename_utf8[i] == UTF8_FULL_STOP;) {
                    
4001a2f0:	c4 0e 40 01 	ldub  [ %i1 + %g1 ], %g2
                      
4001a2f4:	80 a0 a0 2e 	cmp  %g2, 0x2e
                                
4001a2f8:	22 bf ff fa 	be,a   4001a2e0 <msdos_filename_utf8_to_long_name_for_save+0x18>

4001a2fc:	b4 10 00 01 	mov  %g1, %i2
                                 
    name_size = msdos_filename_delete_trailing_dots (
                
      &utf8_name[0],
                                                 
      utf8_name_size);
                                               
    if (name_size > 0) {
                                             
4001a300:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001a304:	02 80 00 64 	be  4001a494 <msdos_filename_utf8_to_long_name_for_save+0x1cc>
<== NEVER TAKEN
4001a308:	98 07 bf fc 	add  %fp, -4, %o4
                             
      /*
                                                             
       * Finally convert from UTF-8 to UTF-16
                        
       */
                                                            
      eno = (*converter->handler->utf8_to_utf16) (
                   
4001a30c:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
4001a310:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
4001a314:	96 10 00 1b 	mov  %i3, %o3
                                 
4001a318:	94 10 00 1a 	mov  %i2, %o2
                                 
4001a31c:	92 10 00 19 	mov  %i1, %o1
                                 
4001a320:	9f c0 40 00 	call  %g1
                                     
4001a324:	90 10 00 18 	mov  %i0, %o0
                                 
          converter,
                                                 
          utf8_name,
                                                 
          name_size,
                                                 
          &long_name[0],
                                             
          &name_size_tmp);
                                           
      if (eno == 0) {
                                                
4001a328:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4001a32c:	12 80 00 3b 	bne  4001a418 <msdos_filename_utf8_to_long_name_for_save+0x150>
<== NEVER TAKEN
4001a330:	c8 07 bf fc 	ld  [ %fp + -4 ], %g4
                         
        if (name_size_tmp <= (MSDOS_NAME_MAX_LNF_LEN * MSDOS_NAME_LFN_BYTES_PER_CHAR))

4001a334:	80 a1 21 fe 	cmp  %g4, 0x1fe
                               
4001a338:	38 80 00 38 	bgu,a   4001a418 <msdos_filename_utf8_to_long_name_for_save+0x150>

4001a33c:	ba 10 20 5b 	mov  0x5b, %i5
                                
      if ( eno == 0 )
                                                
      {
                                                              
        /*
                                                           
         * Validate the characters and assign them to the UTF-16 file name

         */
                                                          
        for ( i = 0;
                                                 
4001a340:	80 a1 20 00 	cmp  %g4, 0
                                   
4001a344:	02 80 00 56 	be  4001a49c <msdos_filename_utf8_to_long_name_for_save+0x1d4>
<== NEVER TAKEN
4001a348:	86 10 00 1b 	mov  %i3, %g3
                                 
        retval = codepage_valid_char_map[char_num];
                  
4001a34c:	1f 10 00 a9 	sethi  %hi(0x4002a400), %o7
                   
    switch ( char_num )
                                              
4001a350:	31 10 00 68 	sethi  %hi(0x4001a000), %i0
                   
        retval = codepage_valid_char_map[char_num];
                  
4001a354:	9e 13 e2 08 	or  %o7, 0x208, %o7
                           
    switch ( char_num )
                                              
4001a358:	b0 16 21 88 	or  %i0, 0x188, %i0
                           
  uint16_t char_num  = CF_LE_W( utf16_character );
                   
4001a35c:	c4 10 c0 00 	lduh  [ %g3 ], %g2
                            
4001a360:	83 28 a0 08 	sll  %g2, 8, %g1
                              
4001a364:	85 30 a0 08 	srl  %g2, 8, %g2
                              
4001a368:	82 10 40 02 	or  %g1, %g2, %g1
                             
  if ( char_num <= 0x00ff ) {
                                        
4001a36c:	b5 28 60 10 	sll  %g1, 0x10, %i2
                           
4001a370:	b3 36 a0 10 	srl  %i2, 0x10, %i1
                           
4001a374:	80 a6 60 ff 	cmp  %i1, 0xff
                                
4001a378:	18 80 00 0d 	bgu  4001a3ac <msdos_filename_utf8_to_long_name_for_save+0xe4>

4001a37c:	84 10 00 01 	mov  %g1, %g2
                                 
    switch ( char_num )
                                              
4001a380:	82 00 7f d5 	add  %g1, -43, %g1
                            
4001a384:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
4001a388:	83 30 60 10 	srl  %g1, 0x10, %g1
                           
4001a38c:	80 a0 60 4f 	cmp  %g1, 0x4f
                                
4001a390:	18 80 00 05 	bgu  4001a3a4 <msdos_filename_utf8_to_long_name_for_save+0xdc>

4001a394:	83 28 60 02 	sll  %g1, 2, %g1
                              
4001a398:	c2 06 00 01 	ld  [ %i0 + %g1 ], %g1
                        
4001a39c:	81 c0 40 00 	jmp  %g1
                                      
4001a3a0:	01 00 00 00 	nop 
                                          
4001a3a4:	b5 36 a0 10 	srl  %i2, 0x10, %i2
                           
        retval = codepage_valid_char_map[char_num];
                  
4001a3a8:	c4 0b c0 1a 	ldub  [ %o7 + %i2 ], %g2
                      
  return CT_LE_W( retval );
                                          
4001a3ac:	83 28 a0 08 	sll  %g2, 8, %g1
                              
4001a3b0:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
4001a3b4:	85 30 a0 18 	srl  %g2, 0x18, %g2
                           
4001a3b8:	84 10 40 02 	or  %g1, %g2, %g2
                             
                 name_size
                                           
              && (c = msdos_get_valid_utf16_filename_character ( long_name[i]) );

4001a3bc:	83 28 a0 10 	sll  %g2, 0x10, %g1
                           
4001a3c0:	80 a0 60 00 	cmp  %g1, 0
                                   
4001a3c4:	02 80 00 1a 	be  4001a42c <msdos_filename_utf8_to_long_name_for_save+0x164>

4001a3c8:	80 a1 20 02 	cmp  %g4, 2
                                   
              ++i ) {
                                                
          long_name[i]   = c;
                                        
4001a3cc:	c4 30 c0 00 	sth  %g2, [ %g3 ]
                             
          returned_size += MSDOS_NAME_LFN_BYTES_PER_CHAR;
            
4001a3d0:	ba 07 60 02 	add  %i5, 2, %i5
                              
        for ( i = 0;
                                                 
4001a3d4:	88 81 3f fe 	addcc  %g4, -2, %g4
                           
4001a3d8:	12 bf ff e1 	bne  4001a35c <msdos_filename_utf8_to_long_name_for_save+0x94>

4001a3dc:	86 00 e0 02 	add  %g3, 2, %g3
                              
4001a3e0:	85 3f 60 01 	sra  %i5, 1, %g2
                              
4001a3e4:	83 28 a0 01 	sll  %g2, 1, %g1
                              
4001a3e8:	82 00 7f fe 	add  %g1, -2, %g1
                             
          returned_size += MSDOS_NAME_LFN_BYTES_PER_CHAR;
            
        }
                                                            
        else if ( name_size != 0 )
                                   
          eno = EINVAL;
                                              
        chars_written = returned_size / MSDOS_NAME_LFN_BYTES_PER_CHAR;

        if (   long_name [chars_written - 1] != UTF16_NULL
           
4001a3ec:	c2 16 c0 01 	lduh  [ %i3 + %g1 ], %g1
                      
4001a3f0:	80 a0 60 00 	cmp  %g1, 0
                                   
4001a3f4:	02 80 00 2d 	be  4001a4a8 <msdos_filename_utf8_to_long_name_for_save+0x1e0>
<== NEVER TAKEN
4001a3f8:	82 07 60 02 	add  %i5, 2, %g1
                              
            && (returned_size + UTF16_NULL_SIZE ) <= long_name_size ) {

4001a3fc:	80 a0 40 1c 	cmp  %g1, %i4
                                 
4001a400:	18 80 00 04 	bgu  4001a410 <msdos_filename_utf8_to_long_name_for_save+0x148>
<== NEVER TAKEN
4001a404:	b0 10 00 1d 	mov  %i5, %i0
                                 
          long_name[chars_written] = UTF16_NULL;
                     
4001a408:	85 28 a0 01 	sll  %g2, 1, %g2
                              
4001a40c:	c0 36 c0 02 	clrh  [ %i3 + %g2 ]
                           
4001a410:	81 c7 e0 08 	ret 
                                          
4001a414:	81 e8 00 00 	restore 
                                      
    }
                                                                
    else
                                                             
      eno = EINVAL;
                                                  

                                                                     
    if ( eno != 0 ) {
                                                
      errno         = eno;
                                           
4001a418:	40 00 03 49 	call  4001b13c <__errno>
                      
4001a41c:	b0 10 3f ff 	mov  -1, %i0
                                  
4001a420:	fa 22 00 00 	st  %i5, [ %o0 ]
                              
4001a424:	81 c7 e0 08 	ret 
                                          
4001a428:	81 e8 00 00 	restore 
                                      
        if ( name_size == UTF16_NULL_SIZE && c == UTF16_NULL ) {
     
4001a42c:	12 80 00 0c 	bne  4001a45c <msdos_filename_utf8_to_long_name_for_save+0x194>
<== ALWAYS TAKEN
4001a430:	b0 07 60 02 	add  %i5, 2, %i0
                              
          long_name[i]   = c;
                                        
4001a434:	c0 30 c0 00 	clrh  [ %g3 ]
                                 <== NOT EXECUTED
        chars_written = returned_size / MSDOS_NAME_LFN_BYTES_PER_CHAR;

4001a438:	85 3e 20 01 	sra  %i0, 1, %g2
                              <== NOT EXECUTED
        if (   long_name [chars_written - 1] != UTF16_NULL
           
4001a43c:	83 28 a0 01 	sll  %g2, 1, %g1
                              <== NOT EXECUTED
4001a440:	82 00 7f fe 	add  %g1, -2, %g1
                             <== NOT EXECUTED
4001a444:	c2 16 c0 01 	lduh  [ %i3 + %g1 ], %g1
                      <== NOT EXECUTED
4001a448:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4001a44c:	12 80 00 19 	bne  4001a4b0 <msdos_filename_utf8_to_long_name_for_save+0x1e8>
<== NOT EXECUTED
4001a450:	ba 07 60 04 	add  %i5, 4, %i5
                              <== NOT EXECUTED
      returned_size = -1;
                                            
    }
                                                                

                                                                     
    return returned_size;
                                            
  }
                                                                  
4001a454:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001a458:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
4001a45c:	85 3f 60 01 	sra  %i5, 1, %g2
                              
        if (   long_name [chars_written - 1] != UTF16_NULL
           
4001a460:	83 28 a0 01 	sll  %g2, 1, %g1
                              
4001a464:	82 00 7f fe 	add  %g1, -2, %g1
                             
4001a468:	c2 16 c0 01 	lduh  [ %i3 + %g1 ], %g1
                      
4001a46c:	80 a0 60 00 	cmp  %g1, 0
                                   
4001a470:	22 bf ff ea 	be,a   4001a418 <msdos_filename_utf8_to_long_name_for_save+0x150>
<== NEVER TAKEN
4001a474:	ba 10 20 16 	mov  0x16, %i5
                                <== NOT EXECUTED
            && (returned_size + UTF16_NULL_SIZE ) <= long_name_size ) {

4001a478:	ba 07 60 02 	add  %i5, 2, %i5
                              
4001a47c:	80 a7 40 1c 	cmp  %i5, %i4
                                 
4001a480:	18 bf ff e6 	bgu  4001a418 <msdos_filename_utf8_to_long_name_for_save+0x150>
<== NEVER TAKEN
4001a484:	ba 10 20 16 	mov  0x16, %i5
                                
          long_name[chars_written] = UTF16_NULL;
                     
4001a488:	85 28 a0 01 	sll  %g2, 1, %g2
                              
4001a48c:	10 bf ff e3 	b  4001a418 <msdos_filename_utf8_to_long_name_for_save+0x150>

4001a490:	c0 36 c0 02 	clrh  [ %i3 + %g2 ]
                           
      eno = EINVAL;
                                                  
4001a494:	10 bf ff e1 	b  4001a418 <msdos_filename_utf8_to_long_name_for_save+0x150>
<== NOT EXECUTED
4001a498:	ba 10 20 16 	mov  0x16, %i5
                                <== NOT EXECUTED
        for ( i = 0;
                                                 
4001a49c:	84 10 20 00 	clr  %g2
                                      <== NOT EXECUTED
4001a4a0:	10 bf ff d3 	b  4001a3ec <msdos_filename_utf8_to_long_name_for_save+0x124>
<== NOT EXECUTED
4001a4a4:	82 10 3f fe 	mov  -2, %g1
                                  <== NOT EXECUTED
  }
                                                                  
4001a4a8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001a4ac:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED
            && (returned_size + UTF16_NULL_SIZE ) <= long_name_size ) {

4001a4b0:	80 a7 00 1d 	cmp  %i4, %i5
                                 <== NOT EXECUTED
4001a4b4:	1a bf ff d6 	bcc  4001a40c <msdos_filename_utf8_to_long_name_for_save+0x144>
<== NOT EXECUTED
4001a4b8:	85 28 a0 01 	sll  %g2, 1, %g2
                              <== NOT EXECUTED
4001a4bc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4001a4c0:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

4001a4c4 <msdos_filename_utf8_to_short_name_for_compare>: rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, void *short_name, const size_t short_name_size) {
4001a4c4:	9d e3 bf 68 	save  %sp, -152, %sp
                          
  int            eno                     = 0;
                        
  const uint8_t *name_ptr                = utf8_name;
                
  char          *dest_ptr                = (char*)short_name;
        
  size_t         name_size               = utf8_name_size;
           
  uint8_t        name_normalized_buf[(MSDOS_SHORT_NAME_LEN +1) * MSDOS_NAME_MAX_UTF8_BYTES_PER_CHAR];

  size_t         name_size_tmp           = sizeof(name_normalized_buf);

4001a4c8:	82 10 20 30 	mov  0x30, %g1
                                

                                                                     
  returned_size = msdos_filename_process_dot_names (
                 
4001a4cc:	96 10 00 1c 	mov  %i4, %o3
                                 
  size_t         name_size_tmp           = sizeof(name_normalized_buf);

4001a4d0:	c2 27 bf cc 	st  %g1, [ %fp + -52 ]
                        
  returned_size = msdos_filename_process_dot_names (
                 
4001a4d4:	94 10 00 1b 	mov  %i3, %o2
                                 
4001a4d8:	92 10 00 1a 	mov  %i2, %o1
                                 
4001a4dc:	7f ff fe 23 	call  40019d68 <msdos_filename_process_dot_names>

4001a4e0:	90 10 00 19 	mov  %i1, %o0
                                 
    utf8_name,
                                                       
    utf8_name_size,
                                                  
    short_name,
                                                      
    short_name_size);
                                                

                                                                     
  if (returned_size == 0) {
                                          
4001a4e4:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4001a4e8:	12 80 00 1e 	bne  4001a560 <msdos_filename_utf8_to_short_name_for_compare+0x9c>

4001a4ec:	80 a6 a0 00 	cmp  %i2, 0
                                   
  while (    *name_size >= UTF8_FULL_STOP_SIZE
                       
4001a4f0:	32 80 00 07 	bne,a   4001a50c <msdos_filename_utf8_to_short_name_for_compare+0x48>
<== ALWAYS TAKEN
4001a4f4:	c2 0e 40 00 	ldub  [ %i1 ], %g1
                            
      if ( eno == 0 ) {
                                              
        memcpy (&dest_ptr[0], &name_ptr[0], name_size);
              
        returned_size = name_size;
                                   
      }
                                                              
    } else
                                                           
      eno = EINVAL;
                                                  
4001a4f8:	10 80 00 17 	b  4001a554 <msdos_filename_utf8_to_short_name_for_compare+0x90>
<== NOT EXECUTED
4001a4fc:	b8 10 20 16 	mov  0x16, %i4
                                <== NOT EXECUTED
  while (    *name_size >= UTF8_FULL_STOP_SIZE
                       
4001a500:	02 bf ff fe 	be  4001a4f8 <msdos_filename_utf8_to_short_name_for_compare+0x34>
<== NOT EXECUTED
4001a504:	b2 06 60 01 	inc  %i1
                                      <== NOT EXECUTED
         && **name_utf8 == UTF8_FULL_STOP) {
                         
4001a508:	c2 0e 40 00 	ldub  [ %i1 ], %g1
                            <== NOT EXECUTED
4001a50c:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
4001a510:	22 bf ff fc 	be,a   4001a500 <msdos_filename_utf8_to_short_name_for_compare+0x3c>
<== NEVER TAKEN
4001a514:	b4 86 bf ff 	addcc  %i2, -1, %i2
                           <== NOT EXECUTED
      eno = (*converter->handler->utf8_normalize_and_fold) (
         
4001a518:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
4001a51c:	c2 00 60 10 	ld  [ %g1 + 0x10 ], %g1
                       
4001a520:	98 07 bf cc 	add  %fp, -52, %o4
                            
4001a524:	96 07 bf d0 	add  %fp, -48, %o3
                            
4001a528:	94 10 00 1a 	mov  %i2, %o2
                                 
4001a52c:	92 10 00 19 	mov  %i1, %o1
                                 
4001a530:	9f c0 40 00 	call  %g1
                                     
4001a534:	90 10 00 18 	mov  %i0, %o0
                                 
      name_size = name_size_tmp;
                                     
4001a538:	fa 07 bf cc 	ld  [ %fp + -52 ], %i5
                        
      if ( eno == ENOMEM ) {
                                         
4001a53c:	80 a2 20 0c 	cmp  %o0, 0xc
                                 
4001a540:	02 80 00 0a 	be  4001a568 <msdos_filename_utf8_to_short_name_for_compare+0xa4>
<== NEVER TAKEN
4001a544:	b8 10 00 08 	mov  %o0, %i4
                                 
      if ( eno == 0 ) {
                                              
4001a548:	80 a7 20 00 	cmp  %i4, 0
                                   
4001a54c:	02 80 00 08 	be  4001a56c <msdos_filename_utf8_to_short_name_for_compare+0xa8>
<== ALWAYS TAKEN
4001a550:	94 10 00 1d 	mov  %i5, %o2
                                 
  }
                                                                  

                                                                     
  if ( eno != 0 ) {
                                                  
    errno         = eno;
                                             
4001a554:	40 00 02 fa 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001a558:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
4001a55c:	f8 22 00 00 	st  %i4, [ %o0 ]
                              <== NOT EXECUTED
    returned_size = -1;
                                              
  }
                                                                  

                                                                     
  return returned_size;
                                              
}
                                                                    
4001a560:	81 c7 e0 08 	ret 
                                          
4001a564:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
        memcpy (&dest_ptr[0], &name_ptr[0], name_size);
              
4001a568:	94 10 00 1d 	mov  %i5, %o2
                                 <== NOT EXECUTED
4001a56c:	92 07 bf d0 	add  %fp, -48, %o1
                            
4001a570:	90 10 00 1b 	mov  %i3, %o0
                                 
4001a574:	40 00 05 e3 	call  4001bd00 <memcpy>
                       
4001a578:	b0 10 00 1d 	mov  %i5, %i0
                                 
}
                                                                    
4001a57c:	81 c7 e0 08 	ret 
                                          
4001a580:	81 e8 00 00 	restore 
                                      

                                                                     

4001a584 <msdos_filename_utf8_to_short_name_for_save>: rtems_dosfs_convert_control *converter, const uint8_t *utf8_name, const size_t utf8_name_size, void *short_name, const size_t short_name_size) {
4001a584:	9d e3 bf 88 	save  %sp, -120, %sp
                          
  char          *dest_ptr                = (char*)short_name;
        
  unsigned int   i;
                                                  
  size_t         name_size_tmp;
                                      
  char           name_to_format_buf[MSDOS_SHORT_NAME_LEN +1];
        

                                                                     
  returned_size = msdos_filename_process_dot_names (
                 
4001a588:	94 10 00 1b 	mov  %i3, %o2
                                 
4001a58c:	96 10 00 1c 	mov  %i4, %o3
                                 
4001a590:	92 10 00 1a 	mov  %i2, %o1
                                 
4001a594:	7f ff fd f5 	call  40019d68 <msdos_filename_process_dot_names>

4001a598:	90 10 00 19 	mov  %i1, %o0
                                 
    utf8_name,
                                                       
    utf8_name_size,
                                                  
    short_name,
                                                      
    short_name_size);
                                                

                                                                     
  if (returned_size == 0) {
                                          
4001a59c:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4001a5a0:	12 80 00 08 	bne  4001a5c0 <msdos_filename_utf8_to_short_name_for_save+0x3c>
<== NEVER TAKEN
4001a5a4:	80 a6 a0 00 	cmp  %i2, 0
                                   
  while (    *name_size >= UTF8_FULL_STOP_SIZE
                       
4001a5a8:	32 80 00 0b 	bne,a   4001a5d4 <msdos_filename_utf8_to_short_name_for_save+0x50>
<== ALWAYS TAKEN
4001a5ac:	c2 0e 40 00 	ldub  [ %i1 ], %g1
                            
    else
                                                             
      eno = EINVAL;
                                                  
  }
                                                                  

                                                                     
  if ( eno != 0 ) {
                                                  
    errno = eno;
                                                     
4001a5b0:	40 00 02 e3 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4001a5b4:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
4001a5b8:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
4001a5bc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    return -1;
                                                       
  }
                                                                  

                                                                     
  return returned_size;
                                              
}
                                                                    
4001a5c0:	81 c7 e0 08 	ret 
                                          
4001a5c4:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
  while (    *name_size >= UTF8_FULL_STOP_SIZE
                       
4001a5c8:	02 bf ff fa 	be  4001a5b0 <msdos_filename_utf8_to_short_name_for_save+0x2c>
<== NOT EXECUTED
4001a5cc:	b2 06 60 01 	inc  %i1
                                      <== NOT EXECUTED
         && **name_utf8 == UTF8_FULL_STOP) {
                         
4001a5d0:	c2 0e 40 00 	ldub  [ %i1 ], %g1
                            <== NOT EXECUTED
4001a5d4:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
4001a5d8:	22 bf ff fc 	be,a   4001a5c8 <msdos_filename_utf8_to_short_name_for_save+0x44>
<== NEVER TAKEN
4001a5dc:	b4 86 bf ff 	addcc  %i2, -1, %i2
                           <== NOT EXECUTED
      eno = (*converter->handler->utf8_to_codepage) (
                
4001a5e0:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
      name_size_tmp = sizeof ( name_to_format_buf );
                 
4001a5e4:	84 10 20 0c 	mov  0xc, %g2
                                 
4001a5e8:	c4 27 bf ec 	st  %g2, [ %fp + -20 ]
                        
      eno = (*converter->handler->utf8_to_codepage) (
                
4001a5ec:	94 10 00 1a 	mov  %i2, %o2
                                 
4001a5f0:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
4001a5f4:	92 10 00 19 	mov  %i1, %o1
                                 
4001a5f8:	a0 07 bf f0 	add  %fp, -16, %l0
                            
4001a5fc:	98 07 bf ec 	add  %fp, -20, %o4
                            
4001a600:	96 10 00 10 	mov  %l0, %o3
                                 
4001a604:	9f c0 40 00 	call  %g1
                                     
4001a608:	90 10 00 18 	mov  %i0, %o0
                                 
      name_size = name_size_tmp;
                                     
4001a60c:	f2 07 bf ec 	ld  [ %fp + -20 ], %i1
                        
      for (i = 0; i < name_size; ++i)
                                
4001a610:	80 a6 60 00 	cmp  %i1, 0
                                   
4001a614:	02 bf ff eb 	be  4001a5c0 <msdos_filename_utf8_to_short_name_for_save+0x3c>
<== NEVER TAKEN
4001a618:	b4 10 20 00 	clr  %i2
                                      
        name_to_format_buf[i] = toupper ( (unsigned char)(name_to_format_buf[i]) );

4001a61c:	40 00 05 12 	call  4001ba64 <__locale_ctype_ptr>
           
4001a620:	fa 0c 00 1a 	ldub  [ %l0 + %i2 ], %i5
                      
4001a624:	82 0f 60 ff 	and  %i5, 0xff, %g1
                           
4001a628:	90 02 00 01 	add  %o0, %g1, %o0
                            
4001a62c:	c4 0a 20 01 	ldub  [ %o0 + 1 ], %g2
                        
4001a630:	84 08 a0 03 	and  %g2, 3, %g2
                              
4001a634:	80 a0 a0 02 	cmp  %g2, 2
                                   
4001a638:	22 80 00 02 	be,a   4001a640 <msdos_filename_utf8_to_short_name_for_save+0xbc>

4001a63c:	82 00 7f e0 	add  %g1, -32, %g1
                            
4001a640:	c2 2c 00 1a 	stb  %g1, [ %l0 + %i2 ]
                       
      for (i = 0; i < name_size; ++i)
                                
4001a644:	82 06 a0 01 	add  %i2, 1, %g1
                              
4001a648:	80 a6 40 01 	cmp  %i1, %g1
                                 
4001a64c:	32 bf ff f4 	bne,a   4001a61c <msdos_filename_utf8_to_short_name_for_save+0x98>

4001a650:	b4 10 00 01 	mov  %g1, %i2
                                 
        if ( 0x20 == *name_ptr )
                                     
4001a654:	c2 0f bf f0 	ldub  [ %fp + -16 ], %g1
                      
4001a658:	80 a0 60 20 	cmp  %g1, 0x20
                                
4001a65c:	02 80 00 09 	be  4001a680 <msdos_filename_utf8_to_short_name_for_save+0xfc>

4001a660:	80 a0 60 e5 	cmp  %g1, 0xe5
                                
        else if ( 0xE5 == *name_ptr )
                                
4001a664:	02 80 00 0a 	be  4001a68c <msdos_filename_utf8_to_short_name_for_save+0x108>
<== NEVER TAKEN
4001a668:	05 10 00 a9 	sethi  %hi(0x4002a400), %g2
                   
  char c = codepage_valid_char_map[character];
                       
4001a66c:	84 10 a2 08 	or  %g2, 0x208, %g2	! 4002a608 <codepage_valid_char_map>

  if (c == 0) {
                                                      
4001a670:	c6 48 80 01 	ldsb  [ %g2 + %g1 ], %g3
                      
4001a674:	80 a0 e0 00 	cmp  %g3, 0
                                   
4001a678:	12 80 00 03 	bne  4001a684 <msdos_filename_utf8_to_short_name_for_save+0x100>

4001a67c:	c2 08 80 01 	ldub  [ %g2 + %g1 ], %g1
                      
    c = '_';
                                                         
4001a680:	82 10 20 5f 	mov  0x5f, %g1
                                
          dest_ptr[0] = msdos_get_valid_codepage_filename_character(*name_ptr);

4001a684:	10 80 00 04 	b  4001a694 <msdos_filename_utf8_to_short_name_for_save+0x110>

4001a688:	c2 2e c0 00 	stb  %g1, [ %i3 ]
                             
          dest_ptr[0] = 0x05;
                                        
4001a68c:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
4001a690:	c2 2e c0 00 	stb  %g1, [ %i3 ]
                             <== NOT EXECUTED
        for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
  
4001a694:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001a698:	02 80 00 68 	be  4001a838 <msdos_filename_utf8_to_short_name_for_save+0x2b4>

4001a69c:	c2 0f bf f1 	ldub  [ %fp + -15 ], %g1
                      
4001a6a0:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
4001a6a4:	02 80 00 2f 	be  4001a760 <msdos_filename_utf8_to_short_name_for_save+0x1dc>

4001a6a8:	05 10 00 a9 	sethi  %hi(0x4002a400), %g2
                   
4001a6ac:	84 10 a2 08 	or  %g2, 0x208, %g2	! 4002a608 <codepage_valid_char_map>

  if (c == 0) {
                                                      
4001a6b0:	c6 48 80 01 	ldsb  [ %g2 + %g1 ], %g3
                      
        ++returned_size;
                                             
4001a6b4:	ba 10 20 01 	mov  1, %i5
                                   
  if (c == 0) {
                                                      
4001a6b8:	80 a0 e0 00 	cmp  %g3, 0
                                   
4001a6bc:	12 80 00 03 	bne  4001a6c8 <msdos_filename_utf8_to_short_name_for_save+0x144>

4001a6c0:	c2 08 80 01 	ldub  [ %g2 + %g1 ], %g1
                      
    c = '_';
                                                         
4001a6c4:	82 10 20 5f 	mov  0x5f, %g1
                                
          dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);

4001a6c8:	c2 2e c0 1d 	stb  %g1, [ %i3 + %i5 ]
                       
          --name_size;
                                               
4001a6cc:	86 06 bf ff 	add  %i2, -1, %g3
                             
4001a6d0:	82 07 bf f1 	add  %fp, -15, %g1
                            
4001a6d4:	88 00 40 1d 	add  %g1, %i5, %g4
                            
          ++returned_size;
                                           
4001a6d8:	ba 07 60 01 	inc  %i5
                                      
        for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
  
4001a6dc:	80 a7 60 08 	cmp  %i5, 8
                                   
4001a6e0:	02 80 00 16 	be  4001a738 <msdos_filename_utf8_to_short_name_for_save+0x1b4>

4001a6e4:	b2 10 00 1d 	mov  %i5, %i1
                                 
4001a6e8:	80 a0 e0 00 	cmp  %g3, 0
                                   
4001a6ec:	02 80 00 22 	be  4001a774 <msdos_filename_utf8_to_short_name_for_save+0x1f0>

4001a6f0:	82 10 00 19 	mov  %i1, %g1
                                 
4001a6f4:	c2 0c 00 1d 	ldub  [ %l0 + %i5 ], %g1
                      
4001a6f8:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
4001a6fc:	02 80 00 4d 	be  4001a830 <msdos_filename_utf8_to_short_name_for_save+0x2ac>

4001a700:	88 01 20 01 	inc  %g4
                                      
4001a704:	b4 10 00 03 	mov  %g3, %i2
                                 
  if (c == 0) {
                                                      
4001a708:	c6 48 80 01 	ldsb  [ %g2 + %g1 ], %g3
                      
4001a70c:	80 a0 e0 00 	cmp  %g3, 0
                                   
4001a710:	02 bf ff ed 	be  4001a6c4 <msdos_filename_utf8_to_short_name_for_save+0x140>

4001a714:	c2 08 80 01 	ldub  [ %g2 + %g1 ], %g1
                      
          dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);

4001a718:	c2 2e c0 1d 	stb  %g1, [ %i3 + %i5 ]
                       
          --name_size;
                                               
4001a71c:	86 06 bf ff 	add  %i2, -1, %g3
                             
4001a720:	82 07 bf f1 	add  %fp, -15, %g1
                            
4001a724:	88 00 40 1d 	add  %g1, %i5, %g4
                            
          ++returned_size;
                                           
4001a728:	ba 07 60 01 	inc  %i5
                                      
        for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
  
4001a72c:	80 a7 60 08 	cmp  %i5, 8
                                   
4001a730:	12 bf ff ee 	bne  4001a6e8 <msdos_filename_utf8_to_short_name_for_save+0x164>

4001a734:	b2 10 00 1d 	mov  %i5, %i1
                                 
        if ( name_size > 0 && *name_ptr == '.' ) {
                   
4001a738:	80 a0 e0 00 	cmp  %g3, 0
                                   
4001a73c:	02 80 00 2d 	be  4001a7f0 <msdos_filename_utf8_to_short_name_for_save+0x26c>

4001a740:	82 10 20 08 	mov  8, %g1
                                   
4001a744:	c2 09 00 00 	ldub  [ %g4 ], %g1
                            
4001a748:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
4001a74c:	32 80 00 17 	bne,a   4001a7a8 <msdos_filename_utf8_to_short_name_for_save+0x224>

4001a750:	b4 10 20 08 	mov  8, %i2
                                   
          ++name_ptr;
                                                
4001a754:	88 01 20 01 	inc  %g4
                                      
          --name_size;
                                               
4001a758:	10 80 00 0f 	b  4001a794 <msdos_filename_utf8_to_short_name_for_save+0x210>

4001a75c:	86 06 bf fe 	add  %i2, -2, %g3
                             
4001a760:	86 06 bf ff 	add  %i2, -1, %g3
                             
          ++name_ptr;
                                                
4001a764:	88 07 bf f2 	add  %fp, -14, %g4
                            
        for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
  
4001a768:	b2 10 20 01 	mov  1, %i1
                                   
        ++returned_size;
                                             
4001a76c:	ba 10 20 01 	mov  1, %i5
                                   
4001a770:	82 10 00 19 	mov  %i1, %g1
                                 
          dest_ptr[i] = ' ';
                                         
4001a774:	84 10 20 20 	mov  0x20, %g2
                                
4001a778:	c4 2e c0 01 	stb  %g2, [ %i3 + %g1 ]
                       
        for (; i < 8; ++i) {
                                         
4001a77c:	82 00 60 01 	inc  %g1
                                      
4001a780:	80 a0 60 08 	cmp  %g1, 8
                                   
4001a784:	32 bf ff fe 	bne,a   4001a77c <msdos_filename_utf8_to_short_name_for_save+0x1f8>

4001a788:	c4 2e c0 01 	stb  %g2, [ %i3 + %g1 ]
                       
4001a78c:	ba 27 40 19 	sub  %i5, %i1, %i5
                            
4001a790:	ba 07 60 08 	add  %i5, 8, %i5
                              
        for (; i <= 10 && name_size ; i++) {
                         
4001a794:	80 a0 e0 00 	cmp  %g3, 0
                                   
4001a798:	02 80 00 24 	be  4001a828 <msdos_filename_utf8_to_short_name_for_save+0x2a4>

4001a79c:	05 10 00 a9 	sethi  %hi(0x4002a400), %g2
                   
4001a7a0:	b4 10 00 1d 	mov  %i5, %i2
                                 
4001a7a4:	84 10 a2 08 	or  %g2, 0x208, %g2
                           
4001a7a8:	82 10 20 08 	mov  8, %g1
                                   
4001a7ac:	b4 21 00 1a 	sub  %g4, %i2, %i2
                            
4001a7b0:	10 80 00 05 	b  4001a7c4 <msdos_filename_utf8_to_short_name_for_save+0x240>

4001a7b4:	86 00 e0 08 	add  %g3, 8, %g3
                              
4001a7b8:	80 a0 c0 01 	cmp  %g3, %g1
                                 
4001a7bc:	22 80 00 0e 	be,a   4001a7f4 <msdos_filename_utf8_to_short_name_for_save+0x270>

4001a7c0:	84 06 c0 01 	add  %i3, %g1, %g2
                            
  char c = codepage_valid_char_map[character];
                       
4001a7c4:	c8 0e 80 1d 	ldub  [ %i2 + %i5 ], %g4
                      
  if (c == 0) {
                                                      
4001a7c8:	f2 48 80 04 	ldsb  [ %g2 + %g4 ], %i1
                      
4001a7cc:	80 a6 60 00 	cmp  %i1, 0
                                   
4001a7d0:	12 80 00 03 	bne  4001a7dc <msdos_filename_utf8_to_short_name_for_save+0x258>

4001a7d4:	c8 08 80 04 	ldub  [ %g2 + %g4 ], %g4
                      
    c = '_';
                                                         
4001a7d8:	88 10 20 5f 	mov  0x5f, %g4
                                
          dest_ptr[i] = msdos_get_valid_codepage_filename_character(*name_ptr);

4001a7dc:	c8 2e c0 01 	stb  %g4, [ %i3 + %g1 ]
                       
        for (; i <= 10 && name_size ; i++) {
                         
4001a7e0:	82 00 60 01 	inc  %g1
                                      
4001a7e4:	80 a0 60 0b 	cmp  %g1, 0xb
                                 
4001a7e8:	12 bf ff f4 	bne  4001a7b8 <msdos_filename_utf8_to_short_name_for_save+0x234>

4001a7ec:	ba 07 60 01 	inc  %i5
                                      
4001a7f0:	84 06 c0 01 	add  %i3, %g1, %g2
                            
          dest_ptr[i] = ' ';
                                         
4001a7f4:	86 10 20 20 	mov  0x20, %g3
                                
        for ( ; i < short_name_size; ++i ) {
                         
4001a7f8:	80 a0 40 1c 	cmp  %g1, %i4
                                 
4001a7fc:	1a bf ff 71 	bcc  4001a5c0 <msdos_filename_utf8_to_short_name_for_save+0x3c>

4001a800:	b6 06 c0 1c 	add  %i3, %i4, %i3
                            
          dest_ptr[i] = ' ';
                                         
4001a804:	c6 28 80 00 	stb  %g3, [ %g2 ]
                             
4001a808:	84 00 a0 01 	inc  %g2
                                      
        for ( ; i < short_name_size; ++i ) {
                         
4001a80c:	80 a6 c0 02 	cmp  %i3, %g2
                                 
4001a810:	32 bf ff fe 	bne,a   4001a808 <msdos_filename_utf8_to_short_name_for_save+0x284>

4001a814:	c6 28 80 00 	stb  %g3, [ %g2 ]
                             
4001a818:	ba 27 40 01 	sub  %i5, %g1, %i5
                            
4001a81c:	ba 07 40 1c 	add  %i5, %i4, %i5
                            
}
                                                                    
4001a820:	81 c7 e0 08 	ret 
                                          
4001a824:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
        for (; i <= 10 && name_size ; i++) {
                         
4001a828:	10 bf ff f2 	b  4001a7f0 <msdos_filename_utf8_to_short_name_for_save+0x26c>

4001a82c:	82 10 20 08 	mov  8, %g1
                                   
          --name_size;
                                               
4001a830:	10 bf ff d0 	b  4001a770 <msdos_filename_utf8_to_short_name_for_save+0x1ec>

4001a834:	86 06 bf fe 	add  %i2, -2, %g3
                             
        for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
  
4001a838:	86 10 20 00 	clr  %g3
                                      
        ++name_ptr;
                                                  
4001a83c:	88 07 bf f1 	add  %fp, -15, %g4
                            
        for (i = 1; i <= 7 && name_size && *name_ptr != '.'; ++i) {
  
4001a840:	b2 10 20 01 	mov  1, %i1
                                   
        ++returned_size;
                                             
4001a844:	10 bf ff cb 	b  4001a770 <msdos_filename_utf8_to_short_name_for_save+0x1ec>

4001a848:	ba 10 20 01 	mov  1, %i5
                                   

                                                                     

40019ab0 <msdos_find_name>: {
40019ab0:	9d e3 bf 60 	save  %sp, -160, %sp
                          
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;
      
40019ab4:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
40019ab8:	f8 00 60 08 	ld  [ %g1 + 8 ], %i4
                          
    name_type = msdos_long_to_short (
                                
40019abc:	d0 07 20 c0 	ld  [ %i4 + 0xc0 ], %o0
                       
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
        
40019ac0:	ba 07 bf e0 	add  %fp, -32, %i5
                            
    name_type = msdos_long_to_short (
                                
40019ac4:	98 10 20 0b 	mov  0xb, %o4
                                 
40019ac8:	96 10 00 1d 	mov  %i5, %o3
                                 
40019acc:	94 10 00 1a 	mov  %i2, %o2
                                 
40019ad0:	92 10 00 19 	mov  %i1, %o1
                                 
    fat_file_fd_t     *fat_fd = NULL;
                                
40019ad4:	c0 27 bf cc 	clr  [ %fp + -52 ]
                            
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
        
40019ad8:	c0 27 bf e0 	clr  [ %fp + -32 ]
                            
40019adc:	c0 27 bf e4 	clr  [ %fp + -28 ]
                            
40019ae0:	c0 27 bf e8 	clr  [ %fp + -24 ]
                            
40019ae4:	c0 27 bf ec 	clr  [ %fp + -20 ]
                            
40019ae8:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            
40019aec:	c0 27 bf f4 	clr  [ %fp + -12 ]
                            
40019af0:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
    name_type = msdos_long_to_short (
                                
40019af4:	7f ff f9 bf 	call  400181f0 <msdos_long_to_short>
          
40019af8:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,

40019afc:	fa 23 a0 5c 	st  %i5, [ %sp + 0x5c ]
                       
40019b00:	98 10 00 08 	mov  %o0, %o4
                                 
40019b04:	96 10 00 1a 	mov  %i2, %o3
                                 
40019b08:	9a 07 bf d0 	add  %fp, -48, %o5
                            
40019b0c:	94 10 00 19 	mov  %i1, %o2
                                 
40019b10:	92 10 20 00 	clr  %o1
                                      
40019b14:	7f ff ff aa 	call  400199bc <msdos_get_name_node>
          
40019b18:	90 10 00 18 	mov  %i0, %o0
                                 
    if (rc != RC_OK)
                                                 
40019b1c:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019b20:	12 80 00 1d 	bne  40019b94 <msdos_find_name+0xe4>
          
40019b24:	c2 0f bf eb 	ldub  [ %fp + -21 ], %g1
                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||
    
40019b28:	80 88 60 08 	btst  8, %g1
                                  
40019b2c:	12 80 00 1c 	bne  40019b9c <msdos_find_name+0xec>
          <== NEVER TAKEN
40019b30:	82 08 60 3f 	and  %g1, 0x3f, %g1
                           
40019b34:	80 a0 60 0f 	cmp  %g1, 0xf
                                 
40019b38:	02 80 00 19 	be  40019b9c <msdos_find_name+0xec>
           <== NEVER TAKEN
40019b3c:	94 07 bf cc 	add  %fp, -52, %o2
                            
    rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);
            
40019b40:	92 07 bf d0 	add  %fp, -48, %o1
                            
40019b44:	7f ff e6 aa 	call  400135ec <fat_file_open>
                
40019b48:	90 10 00 1c 	mov  %i4, %o0
                                 
    if (rc != RC_OK)
                                                 
40019b4c:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019b50:	12 80 00 11 	bne  40019b94 <msdos_find_name+0xe4>
          <== NEVER TAKEN
40019b54:	c2 07 bf cc 	ld  [ %fp + -52 ], %g1
                        
    fat_fd->dir_pos = dir_pos;
                                       
40019b58:	c4 1f bf d0 	ldd  [ %fp + -48 ], %g2
                       
40019b5c:	c4 38 60 20 	std  %g2, [ %g1 + 0x20 ]
                      
40019b60:	c4 1f bf d8 	ldd  [ %fp + -40 ], %g2
                       
40019b64:	c4 38 60 28 	std  %g2, [ %g1 + 0x28 ]
                      
    if (fat_fd->links_num == 1)
                                      
40019b68:	c4 00 60 08 	ld  [ %g1 + 8 ], %g2
                          
40019b6c:	80 a0 a0 01 	cmp  %g2, 1
                                   
40019b70:	02 80 00 0f 	be  40019bac <msdos_find_name+0xfc>
           
40019b74:	c4 17 bf fa 	lduh  [ %fp + -6 ], %g2
                       
    rc = fat_file_close(&fs_info->fat, parent_loc->node_access);
     
40019b78:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
40019b7c:	7f ff e8 44 	call  40013c8c <fat_file_close>
               
40019b80:	90 10 00 1c 	mov  %i4, %o0
                                 
    if (rc != RC_OK)
                                                 
40019b84:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019b88:	12 80 00 4e 	bne  40019cc0 <msdos_find_name+0x210>
         <== NEVER TAKEN
40019b8c:	c2 07 bf cc 	ld  [ %fp + -52 ], %g1
                        
    parent_loc->node_access = fat_fd;
                                
40019b90:	c2 26 20 08 	st  %g1, [ %i0 + 8 ]
                          
}
                                                                    
40019b94:	81 c7 e0 08 	ret 
                                          
40019b98:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
        return MSDOS_NAME_NOT_FOUND_ERR;
                             
40019b9c:	3b 00 00 1f 	sethi  %hi(0x7c00), %i5
                       <== NOT EXECUTED
40019ba0:	ba 17 61 01 	or  %i5, 0x101, %i5	! 7d01 <_Configuration_Interrupt_stack_size+0x6d01>
<== NOT EXECUTED
}
                                                                    
40019ba4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40019ba8:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);
         
40019bac:	c8 17 bf f4 	lduh  [ %fp + -12 ], %g4
                      
40019bb0:	bb 30 a0 08 	srl  %g2, 8, %i5
                              
40019bb4:	87 28 a0 08 	sll  %g2, 8, %g3
                              
40019bb8:	85 29 20 08 	sll  %g4, 8, %g2
                              
40019bbc:	86 10 c0 1d 	or  %g3, %i5, %g3
                             
40019bc0:	89 31 20 08 	srl  %g4, 8, %g4
                              
40019bc4:	87 28 e0 10 	sll  %g3, 0x10, %g3
                           
40019bc8:	84 10 80 04 	or  %g2, %g4, %g2
                             
40019bcc:	87 30 e0 10 	srl  %g3, 0x10, %g3
                           
40019bd0:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
40019bd4:	84 10 80 03 	or  %g2, %g3, %g2
                             
40019bd8:	c4 20 60 1c 	st  %g2, [ %g1 + 0x1c ]
                       
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));

40019bdc:	c4 17 bf f8 	lduh  [ %fp + -8 ], %g2
                       
40019be0:	c2 17 bf f6 	lduh  [ %fp + -10 ], %g1
                      
40019be4:	91 28 a0 08 	sll  %g2, 8, %o0
                              
40019be8:	93 28 60 08 	sll  %g1, 8, %o1
                              
40019bec:	85 30 a0 08 	srl  %g2, 8, %g2
                              
40019bf0:	83 30 60 08 	srl  %g1, 8, %g1
                              
40019bf4:	90 12 00 02 	or  %o0, %g2, %o0
                             
40019bf8:	92 12 40 01 	or  %o1, %g1, %o1
                             
40019bfc:	91 2a 20 10 	sll  %o0, 0x10, %o0
                           
40019c00:	93 2a 60 10 	sll  %o1, 0x10, %o1
                           
40019c04:	91 32 20 10 	srl  %o0, 0x10, %o0
                           
40019c08:	40 00 00 ee 	call  40019fc0 <msdos_date_dos2unix>
          
40019c0c:	93 32 60 10 	srl  %o1, 0x10, %o1
                           
40019c10:	c2 07 bf cc 	ld  [ %fp + -52 ], %g1
                        
40019c14:	d0 20 60 4c 	st  %o0, [ %g1 + 0x4c ]
                       
        fat_fd->ctime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));

40019c18:	c4 17 bf f0 	lduh  [ %fp + -16 ], %g2
                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));

40019c1c:	c0 20 60 48 	clr  [ %g1 + 0x48 ]
                           
        fat_fd->ctime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));

40019c20:	91 28 a0 08 	sll  %g2, 8, %o0
                              
40019c24:	c2 17 bf ee 	lduh  [ %fp + -18 ], %g1
                      
40019c28:	85 30 a0 08 	srl  %g2, 8, %g2
                              
40019c2c:	93 28 60 08 	sll  %g1, 8, %o1
                              
40019c30:	83 30 60 08 	srl  %g1, 8, %g1
                              
40019c34:	90 12 00 02 	or  %o0, %g2, %o0
                             
40019c38:	92 12 40 01 	or  %o1, %g1, %o1
                             
40019c3c:	91 2a 20 10 	sll  %o0, 0x10, %o0
                           
40019c40:	93 2a 60 10 	sll  %o1, 0x10, %o1
                           
40019c44:	91 32 20 10 	srl  %o0, 0x10, %o0
                           
40019c48:	40 00 00 de 	call  40019fc0 <msdos_date_dos2unix>
          
40019c4c:	93 32 60 10 	srl  %o1, 0x10, %o1
                           
40019c50:	fa 07 bf cc 	ld  [ %fp + -52 ], %i5
                        
40019c54:	c0 27 60 40 	clr  [ %i5 + 0x40 ]
                           
40019c58:	d0 27 60 44 	st  %o0, [ %i5 + 0x44 ]
                       
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)
    
40019c5c:	c2 0f bf eb 	ldub  [ %fp + -21 ], %g1
                      
40019c60:	80 88 60 10 	btst  0x10, %g1
                               
40019c64:	32 80 00 1b 	bne,a   40019cd0 <msdos_find_name+0x220>
      
40019c68:	c0 27 60 10 	clr  [ %i5 + 0x10 ]
                           
            fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));

40019c6c:	40 00 3b 28 	call  4002890c <__bswapsi2>
                   
40019c70:	d0 07 bf fc 	ld  [ %fp + -4 ], %o0
                         
            fat_fd->fat_file_type = FAT_FILE;
                        
40019c74:	82 10 20 04 	mov  4, %g1
                                   
            fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));

40019c78:	d0 27 60 18 	st  %o0, [ %i5 + 0x18 ]
                       
            fat_fd->fat_file_type = FAT_FILE;
                        
40019c7c:	c2 27 60 10 	st  %g1, [ %i5 + 0x10 ]
                       
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;
                
40019c80:	82 10 3f ff 	mov  -1, %g1
                                  
40019c84:	c2 27 60 14 	st  %g1, [ %i5 + 0x14 ]
                       
        if ((fat_fd->fat_file_size != 0) &&
                          
40019c88:	80 a2 20 00 	cmp  %o0, 0
                                   
        fat_fd->map.disk_cln = fat_fd->cln;
                          
40019c8c:	c2 07 60 1c 	ld  [ %i5 + 0x1c ], %g1
                       
        fat_fd->map.file_cln = 0;
                                    
40019c90:	c0 27 60 34 	clr  [ %i5 + 0x34 ]
                           
        if ((fat_fd->fat_file_size != 0) &&
                          
40019c94:	02 80 00 08 	be  40019cb4 <msdos_find_name+0x204>
          
40019c98:	c2 27 60 38 	st  %g1, [ %i5 + 0x38 ]
                       
40019c9c:	c4 07 20 08 	ld  [ %i4 + 8 ], %g2
                          
40019ca0:	80 a0 80 08 	cmp  %g2, %o0
                                 
40019ca4:	2a 80 00 05 	bcs,a   40019cb8 <msdos_find_name+0x208>
      
40019ca8:	82 10 3f ff 	mov  -1, %g1
                                  
            fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;
              
40019cac:	10 bf ff b3 	b  40019b78 <msdos_find_name+0xc8>
            
40019cb0:	c2 27 60 3c 	st  %g1, [ %i5 + 0x3c ]
                       
40019cb4:	82 10 3f ff 	mov  -1, %g1
                                  
40019cb8:	10 bf ff b0 	b  40019b78 <msdos_find_name+0xc8>
            
40019cbc:	c2 27 60 3c 	st  %g1, [ %i5 + 0x3c ]
                       
        fat_file_close(&fs_info->fat, fat_fd);
                       
40019cc0:	d2 07 bf cc 	ld  [ %fp + -52 ], %o1
                        <== NOT EXECUTED
40019cc4:	7f ff e7 f2 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
40019cc8:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
        return rc;
                                                   
40019ccc:	30 bf ff b2 	b,a   40019b94 <msdos_find_name+0xe4>
         <== NOT EXECUTED
            fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
               
40019cd0:	03 00 08 00 	sethi  %hi(0x200000), %g1
                     
40019cd4:	c2 27 60 14 	st  %g1, [ %i5 + 0x14 ]
                       
            rc = fat_file_size(&fs_info->fat, fat_fd);
               
40019cd8:	92 10 00 1d 	mov  %i5, %o1
                                 
40019cdc:	7f ff e9 8e 	call  40014314 <fat_file_size>
                
40019ce0:	90 10 00 1c 	mov  %i4, %o0
                                 
            if (rc != RC_OK)
                                         
40019ce4:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019ce8:	12 bf ff f7 	bne  40019cc4 <msdos_find_name+0x214>
         <== NEVER TAKEN
40019cec:	d2 07 bf cc 	ld  [ %fp + -52 ], %o1
                        
40019cf0:	fa 07 bf cc 	ld  [ %fp + -52 ], %i5
                        
40019cf4:	10 bf ff e5 	b  40019c88 <msdos_find_name+0x1d8>
           
40019cf8:	d0 07 60 18 	ld  [ %i5 + 0x18 ], %o0
                       

                                                                     

40018b8c <msdos_find_name_in_fat_file>: const uint8_t *name_utf8, int name_utf8_len, msdos_name_type_t name_type, fat_dir_pos_t *dir_pos, char *name_dir_entry) {
40018b8c:	9d e3 be d0 	save  %sp, -304, %sp
                          
    int                                retval                     = 0;

    msdos_fs_info_t                   *fs_info                    = mt_entry->fs_info;

40018b90:	e0 06 20 08 	ld  [ %i0 + 8 ], %l0
                          
    ssize_t                            name_len_for_compare;
         
    uint32_t                           bts2rd                     = 0;

    uint32_t                           empty_file_offset          = 0;

    uint32_t                           empty_entry_count          = 0;

    unsigned int                       lfn_entries;
                  
    rtems_dosfs_convert_control       *converter = fs_info->converter;

40018b94:	c2 04 20 c0 	ld  [ %l0 + 0xc0 ], %g1
                       
    void                              *buffer = converter->buffer.data;

40018b98:	c4 00 60 04 	ld  [ %g1 + 4 ], %g2
                          
    rtems_dosfs_convert_control       *converter = fs_info->converter;

40018b9c:	c2 27 bf 4c 	st  %g1, [ %fp + -180 ]
                       
    size_t                             buffer_size = converter->buffer.size;

40018ba0:	c2 00 60 08 	ld  [ %g1 + 8 ], %g1
                          
40018ba4:	c2 27 bf 48 	st  %g1, [ %fp + -184 ]
                       

                                                                     
    assert(name_utf8_len > 0);
                                       
40018ba8:	82 97 20 00 	orcc  %i4, 0, %g1
                             
{
                                                                    
40018bac:	f8 27 a0 54 	st  %i4, [ %fp + 0x54 ]
                       
40018bb0:	f6 27 a0 50 	st  %i3, [ %fp + 0x50 ]
                       
40018bb4:	fa 27 a0 58 	st  %i5, [ %fp + 0x58 ]
                       
    assert(name_utf8_len > 0);
                                       
40018bb8:	04 80 02 69 	ble  4001955c <msdos_find_name_in_fat_file+0x9d0>
<== NEVER TAKEN
40018bbc:	c4 27 bf 58 	st  %g2, [ %fp + -168 ]
                       
  dir_pos->sname.cln = 0;
                                            
40018bc0:	c2 07 a0 5c 	ld  [ %fp + 0x5c ], %g1
                       
40018bc4:	c0 20 40 00 	clr  [ %g1 ]
                                  
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
40018bc8:	82 10 3f ff 	mov  -1, %g1
                                  
  dir_pos->sname.ofs = 0;
                                            
40018bcc:	c4 07 a0 5c 	ld  [ %fp + 0x5c ], %g2
                       
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
40018bd0:	c2 20 a0 08 	st  %g1, [ %g2 + 8 ]
                          
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                          
40018bd4:	c2 20 a0 0c 	st  %g1, [ %g2 + 0xc ]
                        
  dir_pos->sname.ofs = 0;
                                            
40018bd8:	c0 20 a0 04 	clr  [ %g2 + 4 ]
                              

                                                                     
    fat_dir_pos_init(dir_pos);
                                       

                                                                     

                                                                     

                                                                     
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
                                
40018bdc:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40018be0:	80 a0 60 01 	cmp  %g1, 1
                                   
40018be4:	22 80 00 1c 	be,a   40018c54 <msdos_find_name_in_fat_file+0xc8>

40018be8:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
           
        bts2rd = fat_fd->fat_file_size;
                              
    else
                                                             
        bts2rd = fs_info->fat.vol.bpc;
                               
40018bec:	e2 04 20 08 	ld  [ %l0 + 8 ], %l1
                          

                                                                     
    switch ( name_type ) {
                                           
40018bf0:	c2 07 a0 58 	ld  [ %fp + 0x58 ], %g1
                       
40018bf4:	80 a0 60 01 	cmp  %g1, 1
                                   
40018bf8:	02 80 00 20 	be  40018c78 <msdos_find_name_in_fat_file+0xec>

40018bfc:	80 a0 60 02 	cmp  %g1, 2
                                   
40018c00:	12 80 00 0f 	bne  40018c3c <msdos_find_name_in_fat_file+0xb0>

40018c04:	f6 07 bf 58 	ld  [ %fp + -168 ], %i3
                       
            }
                                                        
            else
                                                     
                retval = -1;
                                         
        break;
                                                       
        case MSDOS_NAME_LONG:
                                        
            name_len_for_save = msdos_filename_utf8_to_long_name_for_save (

40018c08:	f0 07 bf 48 	ld  [ %fp + -184 ], %i0
                       
40018c0c:	f8 07 bf 4c 	ld  [ %fp + -180 ], %i4
                       
40018c10:	d4 07 a0 54 	ld  [ %fp + 0x54 ], %o2
                       
40018c14:	d2 07 a0 50 	ld  [ %fp + 0x50 ], %o1
                       
40018c18:	98 10 00 18 	mov  %i0, %o4
                                 
40018c1c:	96 10 00 1b 	mov  %i3, %o3
                                 
40018c20:	40 00 05 aa 	call  4001a2c8 <msdos_filename_utf8_to_long_name_for_save>

40018c24:	90 10 00 1c 	mov  %i4, %o0
                                 
                converter,
                                           
                name_utf8,
                                           
                name_utf8_len,
                                       
                buffer,
                                              
                buffer_size);
                                        
            if (name_len_for_save > 0) {
                             
40018c28:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40018c2c:	14 80 01 5d 	bg  400191a0 <msdos_find_name_in_fat_file+0x614>

40018c30:	d4 07 a0 54 	ld  [ %fp + 0x54 ], %o2
                       
    entry = fs_info->cl_buf;
                                         
40018c34:	81 c7 e0 08 	ret 
                                          
40018c38:	91 e8 3f ff 	restore  %g0, -1, %o0
                         
              }
                                                      
              else
                                                   
                  retval = -1;
                                       
          break;
                                                     
          default:
                                                   
              errno = EINVAL;
                                        
40018c3c:	40 00 09 40 	call  4001b13c <__errno>
                      
40018c40:	b0 10 3f ff 	mov  -1, %i0
                                  
40018c44:	82 10 20 16 	mov  0x16, %g1
                                
40018c48:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
40018c4c:	81 c7 e0 08 	ret 
                                          
40018c50:	81 e8 00 00 	restore 
                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
                                
40018c54:	80 a0 60 00 	cmp  %g1, 0
                                   
40018c58:	32 bf ff e6 	bne,a   40018bf0 <msdos_find_name_in_fat_file+0x64>
<== NEVER TAKEN
40018c5c:	e2 04 20 08 	ld  [ %l0 + 8 ], %l1
                          <== NOT EXECUTED
40018c60:	c2 0c 20 16 	ldub  [ %l0 + 0x16 ], %g1
                     
40018c64:	80 88 60 03 	btst  3, %g1
                                  
40018c68:	22 bf ff e2 	be,a   40018bf0 <msdos_find_name_in_fat_file+0x64>

40018c6c:	e2 04 20 08 	ld  [ %l0 + 8 ], %l1
                          
        bts2rd = fat_fd->fat_file_size;
                              
40018c70:	10 bf ff e0 	b  40018bf0 <msdos_find_name_in_fat_file+0x64>

40018c74:	e2 06 60 18 	ld  [ %i1 + 0x18 ], %l1
                       
            name_len_for_compare = msdos_filename_utf8_to_short_name_for_compare (

40018c78:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       
40018c7c:	d4 07 a0 54 	ld  [ %fp + 0x54 ], %o2
                       
40018c80:	d2 07 a0 50 	ld  [ %fp + 0x50 ], %o1
                       
40018c84:	d0 07 bf 4c 	ld  [ %fp + -180 ], %o0
                       
40018c88:	40 00 06 0f 	call  4001a4c4 <msdos_filename_utf8_to_short_name_for_compare>

40018c8c:	98 10 20 0b 	mov  0xb, %o4
                                 
                lfn_entries = 0;
                                     
40018c90:	86 10 20 00 	clr  %g3
                                      
            if (name_len_for_compare > 0) {
                          
40018c94:	80 a2 20 00 	cmp  %o0, 0
                                   
40018c98:	04 bf ff e7 	ble  40018c34 <msdos_find_name_in_fat_file+0xa8>
<== NEVER TAKEN
40018c9c:	ac 10 00 08 	mov  %o0, %l6
                                 
    uint32_t          entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;

40018ca0:	83 34 60 05 	srl  %l1, 5, %g1
                              
40018ca4:	f2 27 a0 48 	st  %i1, [ %fp + 0x48 ]
                       
    uint32_t                           empty_file_offset          = 0;

40018ca8:	a4 10 20 00 	clr  %l2
                                      
    uint32_t          entries_per_block = bts2rd / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;

40018cac:	c2 27 bf 44 	st  %g1, [ %fp + -188 ]
                       
    *entry_matched = false;
                                          
40018cb0:	ae 10 20 00 	clr  %l7
                                      
    rtems_dosfs_convert_control *converter = fs_info->converter;
     
40018cb4:	c2 04 20 c0 	ld  [ %l0 + 0xc0 ], %g1
                       
40018cb8:	c2 27 bf 54 	st  %g1, [ %fp + -172 ]
                       
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
40018cbc:	82 10 3f ff 	mov  -1, %g1
                                  
    while (   (bytes_read = fat_file_read (&fs_info->fat, fat_fd, (dir_offset * bts2rd),

40018cc0:	d8 04 20 bc 	ld  [ %l0 + 0xbc ], %o4
                       
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
40018cc4:	c2 27 bf 68 	st  %g1, [ %fp + -152 ]
                       
                    if (*empty_entry_count == (lfn_entries + 1))
     
40018cc8:	82 00 e0 01 	add  %g3, 1, %g1
                              
    while (   (bytes_read = fat_file_read (&fs_info->fat, fat_fd, (dir_offset * bts2rd),

40018ccc:	d2 07 a0 48 	ld  [ %fp + 0x48 ], %o1
                       
    *entry_matched = false;
                                          
40018cd0:	c0 2f bf 63 	clrb  [ %fp + -157 ]
                          
40018cd4:	b2 10 00 12 	mov  %l2, %i1
                                 
    uint8_t           lfn_checksum      = 0;
                         
40018cd8:	c0 2f bf 53 	clrb  [ %fp + -173 ]
                          
40018cdc:	a4 10 00 1a 	mov  %i2, %l2
                                 
                    if (*empty_entry_count == (lfn_entries + 1))
     
40018ce0:	c2 27 bf 5c 	st  %g1, [ %fp + -164 ]
                       
40018ce4:	b4 10 00 17 	mov  %l7, %i2
                                 
    while (   (bytes_read = fat_file_read (&fs_info->fat, fat_fd, (dir_offset * bts2rd),

40018ce8:	96 10 00 11 	mov  %l1, %o3
                                 
40018cec:	94 10 00 1a 	mov  %i2, %o2
                                 
40018cf0:	90 10 00 10 	mov  %l0, %o0
                                 
40018cf4:	7f ff eb 27 	call  40013990 <fat_file_read>
                
40018cf8:	aa 10 00 16 	mov  %l6, %l5
                                 
    uint32_t                           empty_entry_count          = 0;

40018cfc:	b6 10 20 00 	clr  %i3
                                      
    uint32_t          dir_offset = 0;
                                
40018d00:	a8 10 20 00 	clr  %l4
                                      
    int               lfn_entry         = 0;
                         
40018d04:	b0 10 20 00 	clr  %i0
                                      
           && rc == RC_OK)
                                           
40018d08:	80 a2 20 00 	cmp  %o0, 0
                                   
40018d0c:	02 80 00 b2 	be  40018fd4 <msdos_find_name_in_fat_file+0x448>
<== NEVER TAKEN
40018d10:	a6 10 20 00 	clr  %l3
                                      
        if (bytes_read < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
          
40018d14:	80 a2 20 1f 	cmp  %o0, 0x1f
                                
40018d18:	04 80 01 65 	ble  400192ac <msdos_find_name_in_fat_file+0x720>
<== NEVER TAKEN
40018d1c:	80 a4 40 08 	cmp  %l1, %o0
                                 
        assert(bytes_read == bts2rd);
                                
40018d20:	12 80 02 03 	bne  4001952c <msdos_find_name_in_fat_file+0x9a0>
<== NEVER TAKEN
40018d24:	ba 10 20 00 	clr  %i5
                                      
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
40018d28:	10 80 00 1c 	b  40018d98 <msdos_find_name_in_fat_file+0x20c>

40018d2c:	ae 10 3f ff 	mov  -1, %l7
                                  
                if (create_node && !empty_space_found)
               
40018d30:	12 80 00 06 	bne  40018d48 <msdos_find_name_in_fat_file+0x1bc>
<== NEVER TAKEN
40018d34:	80 a4 a0 00 	cmp  %l2, 0
                                   
40018d38:	22 80 00 05 	be,a   40018d4c <msdos_find_name_in_fat_file+0x1c0>

40018d3c:	c4 0f 20 0b 	ldub  [ %i4 + 0xb ], %g2
                      
                    *empty_entry_count = 0;
                          
40018d40:	b6 10 20 00 	clr  %i3
                                      
                    *empty_file_offset = 0;
                          
40018d44:	b2 10 20 00 	clr  %i1
                                      
                if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==

40018d48:	c4 0f 20 0b 	ldub  [ %i4 + 0xb ], %g2
                      
40018d4c:	86 08 a0 3f 	and  %g2, 0x3f, %g3
                           
40018d50:	80 a0 e0 0f 	cmp  %g3, 0xf
                                 
40018d54:	02 80 00 26 	be  40018dec <msdos_find_name_in_fat_file+0x260>

40018d58:	c6 0f bf 63 	ldub  [ %fp + -157 ], %g3
                     
                    if (entry_matched)
                               
40018d5c:	80 a0 e0 00 	cmp  %g3, 0
                                   
40018d60:	02 80 00 31 	be  40018e24 <msdos_find_name_in_fat_file+0x298>

40018d64:	80 88 a0 08 	btst  8, %g2
                                  
                        if (lfn_entry ||
                             
40018d68:	80 a5 60 00 	cmp  %l5, 0
                                   
40018d6c:	14 80 00 04 	bg  40018d7c <msdos_find_name_in_fat_file+0x1f0>

40018d70:	80 a6 20 00 	cmp  %i0, 0
                                   
40018d74:	02 80 00 ea 	be  4001911c <msdos_find_name_in_fat_file+0x590>
<== ALWAYS TAKEN
40018d78:	88 10 20 00 	clr  %g4
                                      
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
40018d7c:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       
    *entry_matched = false;
                                          
40018d80:	aa 10 00 16 	mov  %l6, %l5
                                 
40018d84:	c0 2f bf 63 	clrb  [ %fp + -157 ]
                          
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
         
40018d88:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
        for (dir_entry = 0;
                                          
40018d8c:	80 a4 40 1d 	cmp  %l1, %i5
                                 
40018d90:	28 80 00 87 	bleu,a   40018fac <msdos_find_name_in_fat_file+0x420>

40018d94:	d8 04 20 bc 	ld  [ %l0 + 0xbc ], %o4
                       
            char* entry = (char*) fs_info->cl_buf + dir_entry;
       
40018d98:	c2 04 20 bc 	ld  [ %l0 + 0xbc ], %g1
                       
40018d9c:	b8 00 40 1d 	add  %g1, %i5, %i4
                            
            if (*empty_entry_count == 0)
                             
40018da0:	80 a6 e0 00 	cmp  %i3, 0
                                   
40018da4:	12 80 00 03 	bne  40018db0 <msdos_find_name_in_fat_file+0x224>

40018da8:	c2 08 40 1d 	ldub  [ %g1 + %i5 ], %g1
                      
40018dac:	b2 06 80 1d 	add  %i2, %i5, %i1
                            
            if (remainder_empty)
                                     
40018db0:	84 88 60 ff 	andcc  %g1, 0xff, %g2
                         
40018db4:	02 80 00 c5 	be  400190c8 <msdos_find_name_in_fat_file+0x53c>

40018db8:	80 a0 a0 e5 	cmp  %g2, 0xe5
                                
            else if (entry_empty)
                                    
40018dbc:	12 bf ff dd 	bne  40018d30 <msdos_find_name_in_fat_file+0x1a4>

40018dc0:	80 8c e0 ff 	btst  0xff, %l3
                               
                if (create_node)
                                     
40018dc4:	80 a4 a0 00 	cmp  %l2, 0
                                   
40018dc8:	22 bf ff ee 	be,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>

40018dcc:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       
                    if (*empty_entry_count == (lfn_entries + 1))
     
40018dd0:	c2 07 bf 5c 	ld  [ %fp + -164 ], %g1
                       
                    (*empty_entry_count)++;
                          
40018dd4:	b6 06 e0 01 	inc  %i3
                                      
                    if (*empty_entry_count == (lfn_entries + 1))
     
40018dd8:	80 a6 c0 01 	cmp  %i3, %g1
                                 
40018ddc:	22 bf ff e8 	be,a   40018d7c <msdos_find_name_in_fat_file+0x1f0>

40018de0:	a6 10 20 01 	mov  1, %l3
                                   
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
40018de4:	10 bf ff e7 	b  40018d80 <msdos_find_name_in_fat_file+0x1f4>

40018de8:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       
                        (lfn_start.cln == FAT_FILE_SHORT_NAME);
      
40018dec:	c4 07 bf 68 	ld  [ %fp + -152 ], %g2
                       
                    if (is_first_lfn_entry)
                          
40018df0:	80 a0 bf ff 	cmp  %g2, -1
                                  
40018df4:	02 80 00 7d 	be  40018fe8 <msdos_find_name_in_fat_file+0x45c>

40018df8:	82 08 60 3f 	and  %g1, 0x3f, %g1
                           
                    if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) &

40018dfc:	80 a6 00 01 	cmp  %i0, %g1
                                 
40018e00:	32 bf ff e0 	bne,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NEVER TAKEN
40018e04:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
                                       MSDOS_LAST_LONG_ENTRY_MASK)) ||

40018e08:	c2 0f 20 0d 	ldub  [ %i4 + 0xd ], %g1
                      
40018e0c:	c6 0f bf 53 	ldub  [ %fp + -173 ], %g3
                     
40018e10:	80 a0 c0 01 	cmp  %g3, %g1
                                 
40018e14:	32 bf ff db 	bne,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NEVER TAKEN
40018e18:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
                    bool is_first_lfn_entry =
                        
40018e1c:	10 80 00 7f 	b  40019018 <msdos_find_name_in_fat_file+0x48c>

40018e20:	84 38 00 02 	xnor  %g0, %g2, %g2
                           
                    } else if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_VOLUME_ID)

40018e24:	32 bf ff da 	bne,a   40018d8c <msdos_find_name_in_fat_file+0x200>

40018e28:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
  size_t       bytes_converted = buf_size;
                           
40018e2c:	82 10 20 0c 	mov  0xc, %g1
                                 
  ssize_t      bytes_written   = msdos_format_dirent_with_dot(char_buf, entry);

40018e30:	92 10 00 1c 	mov  %i4, %o1
                                 
  size_t       bytes_converted = buf_size;
                           
40018e34:	c2 27 bf 64 	st  %g1, [ %fp + -156 ]
                       
  ssize_t      bytes_written   = msdos_format_dirent_with_dot(char_buf, entry);

40018e38:	7f ff ff 04 	call  40018a48 <msdos_format_dirent_with_dot>
 
40018e3c:	90 07 bf 70 	add  %fp, -144, %o0
                           
  if (bytes_written > 0) {
                                           
40018e40:	94 92 20 00 	orcc  %o0, 0, %o2
                             
40018e44:	04 80 01 b8 	ble  40019524 <msdos_find_name_in_fat_file+0x998>
<== NEVER TAKEN
40018e48:	c2 4f bf 70 	ldsb  [ %fp + -144 ], %g1
                     
    if (char_buf[0] == 0x05)
                                         
40018e4c:	80 a0 60 05 	cmp  %g1, 5
                                   
40018e50:	12 80 00 04 	bne  40018e60 <msdos_find_name_in_fat_file+0x2d4>
<== ALWAYS TAKEN
40018e54:	98 07 bf 64 	add  %fp, -156, %o4
                           
      char_buf[0] = 0xE5;
                                            
40018e58:	82 10 3f e5 	mov  -27, %g1
                                 <== NOT EXECUTED
40018e5c:	c2 2f bf 70 	stb  %g1, [ %fp + -144 ]
                      <== NOT EXECUTED
    eno = (*converter->handler->codepage_to_utf8) (
                  
40018e60:	d0 07 bf 54 	ld  [ %fp + -172 ], %o0
                       
40018e64:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
40018e68:	c2 00 60 04 	ld  [ %g1 + 4 ], %g1
                          
40018e6c:	96 07 bf 90 	add  %fp, -112, %o3
                           
40018e70:	9f c0 40 00 	call  %g1
                                     
40018e74:	92 07 bf 70 	add  %fp, -144, %o1
                           
    if (eno == 0)
                                                    
40018e78:	aa 92 20 00 	orcc  %o0, 0, %l5
                             
40018e7c:	02 80 00 8e 	be  400190b4 <msdos_find_name_in_fat_file+0x528>
<== ALWAYS TAKEN
40018e80:	d4 07 bf 64 	ld  [ %fp + -156 ], %o2
                       
      errno         = eno;
                                           
40018e84:	40 00 08 ae 	call  4001b13c <__errno>
                      <== NOT EXECUTED
40018e88:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
40018e8c:	ea 22 00 00 	st  %l5, [ %o0 ]
                              <== NOT EXECUTED
                        bytes_in_entry = msdos_short_entry_to_utf8_name (

40018e90:	94 10 3f ff 	mov  -1, %o2
                                  <== NOT EXECUTED
                            name_len_remaining = msdos_compare_entry_against_filename (

40018e94:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       <== NOT EXECUTED
40018e98:	d0 07 bf 54 	ld  [ %fp + -172 ], %o0
                       
40018e9c:	9a 07 bf 63 	add  %fp, -157, %o5
                           
40018ea0:	98 10 00 16 	mov  %l6, %o4
                                 
40018ea4:	7f ff fc 5c 	call  40018014 <msdos_compare_entry_against_filename>

40018ea8:	92 07 bf 90 	add  %fp, -112, %o1
                           
                            if (entry_matched && name_len_remaining == 0) {

40018eac:	c2 0f bf 63 	ldub  [ %fp + -157 ], %g1
                     
40018eb0:	80 a0 60 00 	cmp  %g1, 0
                                   
40018eb4:	02 bf ff b2 	be  40018d7c <msdos_find_name_in_fat_file+0x1f0>

40018eb8:	80 a2 20 00 	cmp  %o0, 0
                                   
40018ebc:	32 bf ff b1 	bne,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>

40018ec0:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       
                                rc = msdos_on_entry_found (
          
40018ec4:	fa 23 a0 60 	st  %i5, [ %sp + 0x60 ]
                       
40018ec8:	82 07 bf 68 	add  %fp, -152, %g1
                           
40018ecc:	e8 23 a0 5c 	st  %l4, [ %sp + 0x5c ]
                       
40018ed0:	b4 10 00 12 	mov  %l2, %i2
                                 
40018ed4:	c2 23 a0 64 	st  %g1, [ %sp + 0x64 ]
                       
40018ed8:	a4 10 00 19 	mov  %i1, %l2
                                 
40018edc:	da 07 a0 5c 	ld  [ %fp + 0x5c ], %o5
                       
40018ee0:	f2 07 a0 48 	ld  [ %fp + 0x48 ], %i1
                       
40018ee4:	d6 07 a0 60 	ld  [ %fp + 0x60 ], %o3
                       
40018ee8:	98 10 00 1c 	mov  %i4, %o4
                                 
40018eec:	94 10 00 11 	mov  %l1, %o2
                                 
40018ef0:	92 10 00 19 	mov  %i1, %o1
                                 
40018ef4:	7f ff fc 6c 	call  400180a4 <msdos_on_entry_found>
         
40018ef8:	90 10 00 10 	mov  %l0, %o0
                                 
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
         
40018efc:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
        for (dir_entry = 0;
                                          
40018f00:	80 a7 40 11 	cmp  %i5, %l1
                                 
40018f04:	1a 80 01 92 	bcc  4001954c <msdos_find_name_in_fat_file+0x9c0>

40018f08:	b0 10 00 08 	mov  %o0, %i0
                                 
40018f0c:	80 a2 20 00 	cmp  %o0, 0
                                   
40018f10:	12 80 01 8f 	bne  4001954c <msdos_find_name_in_fat_file+0x9c0>
<== NEVER TAKEN
40018f14:	82 10 00 1a 	mov  %i2, %g1
                                 
    if (   retval == RC_OK
                                           
40018f18:	80 88 60 ff 	btst  0xff, %g1
                               
40018f1c:	02 bf ff 4c 	be  40018c4c <msdos_find_name_in_fat_file+0xc0>

40018f20:	c2 07 a0 58 	ld  [ %fp + 0x58 ], %g1
                       
        switch (name_type) {
                                         
40018f24:	80 a0 60 01 	cmp  %g1, 1
                                   
40018f28:	02 80 00 ac 	be  400191d8 <msdos_find_name_in_fat_file+0x64c>

40018f2c:	80 a0 60 02 	cmp  %g1, 2
                                   
40018f30:	12 bf ff 43 	bne  40018c3c <msdos_find_name_in_fat_file+0xb0>
<== NEVER TAKEN
40018f34:	d8 07 bf 48 	ld  [ %fp + -184 ], %o4
                       
              name_len_for_save = msdos_filename_utf8_to_long_name_for_save (

40018f38:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       
40018f3c:	d4 07 a0 54 	ld  [ %fp + 0x54 ], %o2
                       
40018f40:	d2 07 a0 50 	ld  [ %fp + 0x50 ], %o1
                       
40018f44:	40 00 04 e1 	call  4001a2c8 <msdos_filename_utf8_to_long_name_for_save>

40018f48:	d0 07 bf 4c 	ld  [ %fp + -180 ], %o0
                       
              if (name_len_for_save > 0) {
                           
40018f4c:	80 a2 20 00 	cmp  %o0, 0
                                   
40018f50:	04 bf ff 39 	ble  40018c34 <msdos_find_name_in_fat_file+0xa8>
<== NEVER TAKEN
40018f54:	b8 02 20 19 	add  %o0, 0x19, %i4
                           
                    / MSDOS_LFN_ENTRY_SIZE;
                          
40018f58:	03 13 b1 3b 	sethi  %hi(0x4ec4ec00), %g1
                   
40018f5c:	82 10 60 4f 	or  %g1, 0x4f, %g1	! 4ec4ec4f <RAM_END+0xe84ec4f>

40018f60:	80 57 00 01 	umul  %i4, %g1, %g0
                           
40018f64:	b9 40 00 00 	rd  %y, %i4
                                   
40018f68:	b9 37 20 03 	srl  %i4, 3, %i4
                              
    if (empty_entry_count < lfn_entries + 1)
                         
40018f6c:	b4 07 20 01 	add  %i4, 1, %i2
                              
40018f70:	80 a6 80 1b 	cmp  %i2, %i3
                                 
40018f74:	08 80 00 d7 	bleu  400192d0 <msdos_find_name_in_fat_file+0x744>

40018f78:	98 07 bf 90 	add  %fp, -112, %o4
                           
        empty_file_offset = fat_fd->fat_file_size -
                  
40018f7c:	e4 06 60 18 	ld  [ %i1 + 0x18 ], %l2
                       
        ret = fat_file_extend(&fs_info->fat,
                         
40018f80:	d6 04 20 08 	ld  [ %l0 + 8 ], %o3
                          
40018f84:	96 04 80 0b 	add  %l2, %o3, %o3
                            
40018f88:	94 10 20 01 	mov  1, %o2
                                   
40018f8c:	92 10 00 19 	mov  %i1, %o1
                                 
40018f90:	7f ff eb a9 	call  40013e34 <fat_file_extend>
              
40018f94:	90 10 00 10 	mov  %l0, %o0
                                 
        if (ret != RC_OK)
                                            
40018f98:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40018f9c:	02 80 00 cc 	be  400192cc <msdos_find_name_in_fat_file+0x740>
<== ALWAYS TAKEN
40018fa0:	b7 2e e0 05 	sll  %i3, 5, %i3
                              
                empty_entry_count
                                    
            );
                                                       
    }
                                                                

                                                                     
    return retval;
                                                   
}
                                                                    
40018fa4:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40018fa8:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    while (   (bytes_read = fat_file_read (&fs_info->fat, fat_fd, (dir_offset * bts2rd),

40018fac:	d2 07 a0 48 	ld  [ %fp + 0x48 ], %o1
                       
40018fb0:	b4 06 80 11 	add  %i2, %l1, %i2
                            
40018fb4:	96 10 00 11 	mov  %l1, %o3
                                 
40018fb8:	94 10 00 1a 	mov  %i2, %o2
                                 
40018fbc:	90 10 00 10 	mov  %l0, %o0
                                 
40018fc0:	7f ff ea 74 	call  40013990 <fat_file_read>
                
40018fc4:	a8 05 20 01 	inc  %l4
                                      
           && rc == RC_OK)
                                           
40018fc8:	80 a2 20 00 	cmp  %o0, 0
                                   
40018fcc:	12 bf ff 53 	bne  40018d18 <msdos_find_name_in_fat_file+0x18c>

40018fd0:	80 a2 20 1f 	cmp  %o0, 0x1f
                                
40018fd4:	b4 10 00 12 	mov  %l2, %i2
                                 
40018fd8:	b0 10 20 00 	clr  %i0
                                      
40018fdc:	a4 10 00 19 	mov  %i1, %l2
                                 
40018fe0:	10 80 00 4a 	b  40019108 <msdos_find_name_in_fat_file+0x57c>

40018fe4:	f2 07 a0 48 	ld  [ %fp + 0x48 ], %i1
                       
                        entry_matched = false;
                       
40018fe8:	c0 2f bf 63 	clrb  [ %fp + -157 ]
                          
                        if ((*MSDOS_DIR_ENTRY_TYPE(entry) &
          
40018fec:	c2 0f 00 00 	ldub  [ %i4 ], %g1
                            
40018ff0:	80 88 60 40 	btst  0x40, %g1
                               
40018ff4:	22 bf ff 66 	be,a   40018d8c <msdos_find_name_in_fat_file+0x200>

40018ff8:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
                        lfn_start.cln = dir_offset;
                  
40018ffc:	e8 27 bf 68 	st  %l4, [ %fp + -152 ]
                       
                        lfn_start.ofs = dir_entry;
                   
40019000:	fa 27 bf 6c 	st  %i5, [ %fp + -148 ]
                       
                        lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);

40019004:	c2 0f 20 0d 	ldub  [ %i4 + 0xd ], %g1
                      
40019008:	c2 2f bf 53 	stb  %g1, [ %fp + -173 ]
                      
                        lfn_entry = (*MSDOS_DIR_ENTRY_TYPE(entry)
    
4001900c:	f0 0f 00 00 	ldub  [ %i4 ], %i0
                            
40019010:	b0 0e 20 3f 	and  %i0, 0x3f, %i0
                           
                    bool is_first_lfn_entry =
                        
40019014:	84 38 00 02 	xnor  %g0, %g2, %g2
                           
    size_t       bytes_in_utf8  = buf_size;
                          
40019018:	82 10 20 70 	mov  0x70, %g1
                                
4001901c:	80 a0 00 02 	cmp  %g0, %g2
                                 
40019020:	94 60 3f ff 	subx  %g0, -1, %o2
                            
40019024:	c2 27 bf 64 	st  %g1, [ %fp + -156 ]
                       
40019028:	92 07 bf 70 	add  %fp, -144, %o1
                           
4001902c:	90 10 00 1c 	mov  %i4, %o0
                                 
40019030:	7f ff fc 43 	call  4001813c <msdos_get_utf16_string_from_long_entry.part.2>

40019034:	b0 06 3f ff 	add  %i0, -1, %i0
                             
    if (retval >= 0) {
                                               
40019038:	80 a2 20 00 	cmp  %o0, 0
                                   
4001903c:	06 80 00 0c 	bl  4001906c <msdos_find_name_in_fat_file+0x4e0>
<== NEVER TAKEN
40019040:	94 10 00 08 	mov  %o0, %o2
                                 
        eno = (*converter->handler->utf16_to_utf8) (
                 
40019044:	d0 07 bf 54 	ld  [ %fp + -172 ], %o0
                       
40019048:	c2 02 00 00 	ld  [ %o0 ], %g1
                              
4001904c:	c2 00 60 0c 	ld  [ %g1 + 0xc ], %g1
                        
40019050:	98 07 bf 64 	add  %fp, -156, %o4
                           
40019054:	96 07 bf 90 	add  %fp, -112, %o3
                           
40019058:	9f c0 40 00 	call  %g1
                                     
4001905c:	92 07 bf 70 	add  %fp, -144, %o1
                           
        if ( eno == 0 ) {
                                            
40019060:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
40019064:	12 80 00 40 	bne  40019164 <msdos_find_name_in_fat_file+0x5d8>

40019068:	d4 07 bf 64 	ld  [ %fp + -156 ], %o2
                       
                    if (bytes_in_entry > 0) {
                        
4001906c:	80 a2 a0 00 	cmp  %o2, 0
                                   
40019070:	22 bf ff 44 	be,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NEVER TAKEN
40019074:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
                        name_len_remaining = msdos_compare_entry_against_filename (

40019078:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       
4001907c:	d0 07 bf 54 	ld  [ %fp + -172 ], %o0
                       
40019080:	98 10 00 15 	mov  %l5, %o4
                                 
40019084:	9a 07 bf 63 	add  %fp, -157, %o5
                           
40019088:	7f ff fb e3 	call  40018014 <msdos_compare_entry_against_filename>

4001908c:	92 07 bf 90 	add  %fp, -112, %o1
                           
                        if (name_len_remaining < 0 || !entry_matched) {

40019090:	aa 92 20 00 	orcc  %o0, 0, %l5
                             
40019094:	26 bf ff 3b 	bl,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NEVER TAKEN
40019098:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
4001909c:	c2 0f bf 63 	ldub  [ %fp + -157 ], %g1
                     
400190a0:	80 a0 60 00 	cmp  %g1, 0
                                   
400190a4:	32 bf ff 3a 	bne,a   40018d8c <msdos_find_name_in_fat_file+0x200>

400190a8:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
400190ac:	10 bf ff 35 	b  40018d80 <msdos_find_name_in_fat_file+0x1f4>

400190b0:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       
                        if (bytes_in_entry > 0) {
                    
400190b4:	80 a2 a0 00 	cmp  %o2, 0
                                   
400190b8:	22 bf ff 32 	be,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NEVER TAKEN
400190bc:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
                            name_len_remaining = msdos_compare_entry_against_filename (

400190c0:	10 bf ff 76 	b  40018e98 <msdos_find_name_in_fat_file+0x30c>

400190c4:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       
400190c8:	b4 10 00 12 	mov  %l2, %i2
                                 
400190cc:	a4 10 00 19 	mov  %i1, %l2
                                 
                if (!create_node)
                                    
400190d0:	80 a6 a0 00 	cmp  %i2, 0
                                   
400190d4:	12 80 00 06 	bne  400190ec <msdos_find_name_in_fat_file+0x560>

400190d8:	f2 07 a0 48 	ld  [ %fp + 0x48 ], %i1
                       
            rc = MSDOS_NAME_NOT_FOUND_ERR;
                           
400190dc:	31 00 00 1f 	sethi  %hi(0x7c00), %i0
                       
400190e0:	b0 16 21 01 	or  %i0, 0x101, %i0	! 7d01 <_Configuration_Interrupt_stack_size+0x6d01>

400190e4:	81 c7 e0 08 	ret 
                                          
400190e8:	81 e8 00 00 	restore 
                                      
                if (   !empty_space_found
                            
400190ec:	80 8c e0 ff 	btst  0xff, %l3
                               
400190f0:	12 80 00 06 	bne  40019108 <msdos_find_name_in_fat_file+0x57c>

400190f4:	b0 10 20 00 	clr  %i0
                                      
                    *empty_entry_count +=
                            
400190f8:	c2 07 bf 44 	ld  [ %fp + -188 ], %g1
                       
400190fc:	b6 00 40 1b 	add  %g1, %i3, %i3
                            
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);

40019100:	bb 37 60 05 	srl  %i5, 5, %i5
                              
                    *empty_entry_count +=
                            
40019104:	b6 26 c0 1d 	sub  %i3, %i5, %i3
                            
        if (!create_node)
                                            
40019108:	80 a6 a0 00 	cmp  %i2, 0
                                   
4001910c:	02 bf ff f4 	be  400190dc <msdos_find_name_in_fat_file+0x550>

40019110:	82 10 20 01 	mov  1, %g1
                                   
    if (   retval == RC_OK
                                           
40019114:	10 bf ff 82 	b  40018f1c <msdos_find_name_in_fat_file+0x390>

40019118:	80 88 60 ff 	btst  0xff, %g1
                               
    cs = 0;
                                                          
4001911c:	10 80 00 03 	b  40019128 <msdos_find_name_in_fat_file+0x59c>

40019120:	84 10 20 00 	clr  %g2
                                      
40019124:	c2 0f 00 04 	ldub  [ %i4 + %g4 ], %g1
                      
        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + name[i];
            
40019128:	84 08 a0 ff 	and  %g2, 0xff, %g2
                           
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
4001912c:	88 01 20 01 	inc  %g4
                                      
        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + name[i];
            
40019130:	87 28 a0 07 	sll  %g2, 7, %g3
                              
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
40019134:	80 a1 20 0b 	cmp  %g4, 0xb
                                 
        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + name[i];
            
40019138:	85 30 a0 01 	srl  %g2, 1, %g2
                              
4001913c:	84 00 c0 02 	add  %g3, %g2, %g2
                            
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
40019140:	12 bf ff f9 	bne  40019124 <msdos_find_name_in_fat_file+0x598>

40019144:	84 00 80 01 	add  %g2, %g1, %g2
                            
                            name_len_remaining > 0 ||
                
40019148:	c2 0f bf 53 	ldub  [ %fp + -173 ], %g1
                     
4001914c:	84 08 a0 ff 	and  %g2, 0xff, %g2
                           
40019150:	80 a0 80 01 	cmp  %g2, %g1
                                 
40019154:	32 bf ff 0b 	bne,a   40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NEVER TAKEN
40019158:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
                                rc = msdos_on_entry_found (
          
4001915c:	10 bf ff 5b 	b  40018ec8 <msdos_find_name_in_fat_file+0x33c>

40019160:	fa 23 a0 60 	st  %i5, [ %sp + 0x60 ]
                       
        errno  = eno;
                                                
40019164:	40 00 07 f6 	call  4001b13c <__errno>
                      
40019168:	01 00 00 00 	nop 
                                          
4001916c:	f8 22 00 00 	st  %i4, [ %o0 ]
                              
                        name_len_remaining = msdos_compare_entry_against_filename (

40019170:	98 10 00 15 	mov  %l5, %o4
                                 
40019174:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       
40019178:	d0 07 bf 54 	ld  [ %fp + -172 ], %o0
                       
                    bytes_in_entry = msdos_long_entry_to_utf8_name (
 
4001917c:	94 10 3f ff 	mov  -1, %o2
                                  
                        name_len_remaining = msdos_compare_entry_against_filename (

40019180:	9a 07 bf 63 	add  %fp, -157, %o5
                           
40019184:	7f ff fb a4 	call  40018014 <msdos_compare_entry_against_filename>

40019188:	92 07 bf 90 	add  %fp, -112, %o1
                           
                        if (name_len_remaining < 0 || !entry_matched) {

4001918c:	aa 92 20 00 	orcc  %o0, 0, %l5
                             
40019190:	36 bf ff c4 	bge,a   400190a0 <msdos_find_name_in_fat_file+0x514>
<== ALWAYS TAKEN
40019194:	c2 0f bf 63 	ldub  [ %fp + -157 ], %g1
                     
    lfn_start->cln = FAT_FILE_SHORT_NAME;
                            
40019198:	10 bf fe fa 	b  40018d80 <msdos_find_name_in_fat_file+0x1f4>
<== NOT EXECUTED
4001919c:	ee 27 bf 68 	st  %l7, [ %fp + -152 ]
                       <== NOT EXECUTED
                name_len_for_compare = msdos_filename_utf8_to_long_name_for_compare (

400191a0:	d2 07 a0 50 	ld  [ %fp + 0x50 ], %o1
                       
400191a4:	98 10 00 18 	mov  %i0, %o4
                                 
400191a8:	96 10 00 1b 	mov  %i3, %o3
                                 
400191ac:	40 00 03 cb 	call  4001a0d8 <msdos_filename_utf8_to_long_name_for_compare>

400191b0:	90 10 00 1c 	mov  %i4, %o0
                                 
                if (0 >= name_len_for_compare) {
                     
400191b4:	ac 92 20 00 	orcc  %o0, 0, %l6
                             
400191b8:	04 bf fe 9f 	ble  40018c34 <msdos_find_name_in_fat_file+0xa8>
<== NEVER TAKEN
400191bc:	86 07 60 19 	add  %i5, 0x19, %g3
                           
                    / MSDOS_LFN_ENTRY_SIZE;
                          
400191c0:	03 13 b1 3b 	sethi  %hi(0x4ec4ec00), %g1
                   
400191c4:	82 10 60 4f 	or  %g1, 0x4f, %g1	! 4ec4ec4f <RAM_END+0xe84ec4f>

400191c8:	80 50 c0 01 	umul  %g3, %g1, %g0
                           
400191cc:	87 40 00 00 	rd  %y, %g3
                                   
400191d0:	10 bf fe b4 	b  40018ca0 <msdos_find_name_in_fat_file+0x114>

400191d4:	87 30 e0 03 	srl  %g3, 3, %g3
                              
              name_len_for_save = msdos_filename_utf8_to_short_name_for_save (

400191d8:	d6 07 bf 58 	ld  [ %fp + -168 ], %o3
                       
400191dc:	d4 07 a0 54 	ld  [ %fp + 0x54 ], %o2
                       
400191e0:	d2 07 a0 50 	ld  [ %fp + 0x50 ], %o1
                       
400191e4:	d0 07 bf 4c 	ld  [ %fp + -180 ], %o0
                       
400191e8:	40 00 04 e7 	call  4001a584 <msdos_filename_utf8_to_short_name_for_save>

400191ec:	98 10 20 0b 	mov  0xb, %o4
                                 
              if (name_len_for_save > 0 ) {
                          
400191f0:	80 a2 20 00 	cmp  %o0, 0
                                   
400191f4:	04 bf fe 90 	ble  40018c34 <msdos_find_name_in_fat_file+0xa8>
<== NEVER TAKEN
400191f8:	80 a6 e0 00 	cmp  %i3, 0
                                   
    if (empty_entry_count < lfn_entries + 1)
                         
400191fc:	12 80 00 0c 	bne  4001922c <msdos_find_name_in_fat_file+0x6a0>

40019200:	98 07 bf 90 	add  %fp, -112, %o4
                           
        empty_file_offset = fat_fd->fat_file_size -
                  
40019204:	e4 06 60 18 	ld  [ %i1 + 0x18 ], %l2
                       
        ret = fat_file_extend(&fs_info->fat,
                         
40019208:	d6 04 20 08 	ld  [ %l0 + 8 ], %o3
                          
4001920c:	96 04 80 0b 	add  %l2, %o3, %o3
                            
40019210:	94 10 20 01 	mov  1, %o2
                                   
40019214:	92 10 00 19 	mov  %i1, %o1
                                 
40019218:	7f ff eb 07 	call  40013e34 <fat_file_extend>
              
4001921c:	90 10 00 10 	mov  %l0, %o0
                                 
        if (ret != RC_OK)
                                            
40019220:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40019224:	12 80 00 28 	bne  400192c4 <msdos_find_name_in_fat_file+0x738>
<== ALWAYS TAKEN
40019228:	01 00 00 00 	nop 
                                          
        dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                    
4001922c:	c6 07 a0 5c 	ld  [ %fp + 0x5c ], %g3
                       
40019230:	84 10 3f ff 	mov  -1, %g2
                                  
    pos->ofs = file_offset & (bts2rd - 1);
                           
40019234:	82 04 7f ff 	add  %l1, -1, %g1
                             
        dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                    
40019238:	c4 20 e0 08 	st  %g2, [ %g3 + 8 ]
                          
    pos->ofs = file_offset & (bts2rd - 1);
                           
4001923c:	82 08 40 12 	and  %g1, %l2, %g1
                            
        dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                    
40019240:	c4 20 e0 0c 	st  %g2, [ %g3 + 0xc ]
                        
    return fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
          
40019244:	98 10 00 03 	mov  %g3, %o4
                                 
    pos->ofs = file_offset & (bts2rd - 1);
                           
40019248:	c2 20 e0 04 	st  %g1, [ %g3 + 4 ]
                          
    return fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
          
4001924c:	96 10 00 12 	mov  %l2, %o3
                                 
40019250:	94 10 20 01 	mov  1, %o2
                                   
40019254:	92 10 00 19 	mov  %i1, %o1
                                 
40019258:	7f ff ea c2 	call  40013d60 <fat_file_ioctl>
               
4001925c:	90 10 00 10 	mov  %l0, %o0
                                 
    entry = fs_info->cl_buf;
                                         
40019260:	f4 04 20 bc 	ld  [ %l0 + 0xbc ], %i2
                       
40019264:	a2 10 20 20 	mov  0x20, %l1
                                
40019268:	b6 10 20 20 	mov  0x20, %i3
                                
    memcpy(entry, name_dir_entry, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);

4001926c:	d2 07 a0 60 	ld  [ %fp + 0x60 ], %o1
                       
40019270:	94 10 20 20 	mov  0x20, %o2
                                
40019274:	40 00 0a a3 	call  4001bd00 <memcpy>
                       
40019278:	90 10 00 1a 	mov  %i2, %o0
                                 
    bytes_written = fat_file_write(&fs_info->fat, fat_fd,
            
4001927c:	d8 04 20 bc 	ld  [ %l0 + 0xbc ], %o4
                       
40019280:	96 10 00 1b 	mov  %i3, %o3
                                 
40019284:	94 10 00 12 	mov  %l2, %o2
                                 
40019288:	92 10 00 19 	mov  %i1, %o1
                                 
4001928c:	90 10 00 10 	mov  %l0, %o0
                                 
40019290:	7f ff eb 85 	call  400140a4 <fat_file_write>
               
40019294:	b0 10 20 00 	clr  %i0
                                      
    if (bytes_written == (ssize_t) length)
                           
40019298:	80 a2 00 11 	cmp  %o0, %l1
                                 
4001929c:	02 bf fe 6c 	be  40018c4c <msdos_find_name_in_fat_file+0xc0>
<== ALWAYS TAKEN
400192a0:	80 a2 3f ff 	cmp  %o0, -1
                                  
    else if (bytes_written == -1)
                                    
400192a4:	02 bf fe 64 	be  40018c34 <msdos_find_name_in_fat_file+0xa8>
<== NOT EXECUTED
400192a8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(EIO);
                   
400192ac:	40 00 07 a4 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400192b0:	b0 10 3f ff 	mov  -1, %i0	! ffffffff <RAM_END+0xbfbfffff>
  <== NOT EXECUTED
400192b4:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
400192b8:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400192bc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400192c0:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
400192c4:	81 c7 e0 08 	ret 
                                          
400192c8:	81 e8 00 00 	restore 
                                      
        empty_file_offset = fat_fd->fat_file_size -
                  
400192cc:	a4 24 80 1b 	sub  %l2, %i3, %l2
                            
      if ((*c == ' ') || (*c == '.'))
                                
400192d0:	c2 07 a0 60 	ld  [ %fp + 0x60 ], %g1
                       
400192d4:	c2 48 40 00 	ldsb  [ %g1 ], %g1
                            
        slot = (empty_file_offset /
                                  
400192d8:	89 34 a0 05 	srl  %l2, 5, %g4
                              
      if ((*c == ' ') || (*c == '.'))
                                
400192dc:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
400192e0:	02 80 00 86 	be  400194f8 <msdos_find_name_in_fat_file+0x96c>
<== NEVER TAKEN
400192e4:	88 01 00 1a 	add  %g4, %i2, %g4
                            
400192e8:	80 a0 60 20 	cmp  %g1, 0x20
                                
400192ec:	02 80 00 84 	be  400194fc <msdos_find_name_in_fat_file+0x970>
<== NEVER TAKEN
400192f0:	c4 07 a0 60 	ld  [ %fp + 0x60 ], %g2
                       
400192f4:	c2 07 a0 60 	ld  [ %fp + 0x60 ], %g1
                       
400192f8:	c2 48 60 01 	ldsb  [ %g1 + 1 ], %g1
                        
400192fc:	80 a0 60 20 	cmp  %g1, 0x20
                                
40019300:	02 80 00 82 	be  40019508 <msdos_find_name_in_fat_file+0x97c>

40019304:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
40019308:	02 80 00 81 	be  4001950c <msdos_find_name_in_fat_file+0x980>
<== NEVER TAKEN
4001930c:	c4 07 a0 60 	ld  [ %fp + 0x60 ], %g2
                       
    for (i = 0; i < 2; i++, c++)
                                     
40019310:	c2 07 a0 60 	ld  [ %fp + 0x60 ], %g1
                       
40019314:	86 00 60 02 	add  %g1, 2, %g3
                              
40019318:	3b 10 00 a9 	sethi  %hi(0x4002a400), %i5
                   
4001931c:	82 10 20 0c 	mov  0xc, %g1
                                 
40019320:	ba 17 61 48 	or  %i5, 0x148, %i5
                           
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];
                        
40019324:	85 31 00 01 	srl  %g4, %g1, %g2
                            
40019328:	84 08 a0 0f 	and  %g2, 0xf, %g2
                            
4001932c:	c4 0f 40 02 	ldub  [ %i5 + %g2 ], %g2
                      
40019330:	c4 28 c0 00 	stb  %g2, [ %g3 ]
                             
40019334:	82 00 7f fc 	add  %g1, -4, %g1
                             
    for (i = 0; i < 4; i++, c++)
                                     
40019338:	80 a0 7f fc 	cmp  %g1, -4
                                  
4001933c:	12 bf ff fa 	bne  40019324 <msdos_find_name_in_fat_file+0x798>

40019340:	86 00 e0 01 	inc  %g3
                                      
    *c++ = '~';
                                                      
40019344:	82 10 20 7e 	mov  0x7e, %g1
                                
40019348:	c4 07 a0 60 	ld  [ %fp + 0x60 ], %g2
                       
4001934c:	c2 28 a0 06 	stb  %g1, [ %g2 + 6 ]
                         
    *c   = '1';
                                                      
40019350:	82 10 20 31 	mov  0x31, %g1
                                
40019354:	c2 28 a0 07 	stb  %g1, [ %g2 + 7 ]
                         
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
40019358:	86 10 20 00 	clr  %g3
                                      
    cs = 0;
                                                          
4001935c:	ba 10 20 00 	clr  %i5
                                      
40019360:	c2 07 a0 60 	ld  [ %fp + 0x60 ], %g1
                       
40019364:	c4 08 40 03 	ldub  [ %g1 + %g3 ], %g2
                      
        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + name[i];
            
40019368:	82 0f 60 ff 	and  %i5, 0xff, %g1
                           
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
4001936c:	86 00 e0 01 	inc  %g3
                                      
        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + name[i];
            
40019370:	bb 28 60 07 	sll  %g1, 7, %i5
                              
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
40019374:	80 a0 e0 0b 	cmp  %g3, 0xb
                                 
        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + name[i];
            
40019378:	83 30 60 01 	srl  %g1, 1, %g1
                              
4001937c:	82 00 40 02 	add  %g1, %g2, %g1
                            
    for (i = 0; i < MSDOS_SHORT_NAME_LEN; ++i) {
                     
40019380:	12 bf ff f8 	bne  40019360 <msdos_find_name_in_fat_file+0x7d4>

40019384:	ba 07 40 01 	add  %i5, %g1, %i5
                            
    pos->ofs = file_offset & (bts2rd - 1);
                           
40019388:	c4 07 a0 5c 	ld  [ %fp + 0x5c ], %g2
                       
4001938c:	a2 04 7f ff 	add  %l1, -1, %l1
                             
40019390:	82 0c 40 12 	and  %l1, %l2, %g1
                            
40019394:	c2 20 a0 0c 	st  %g1, [ %g2 + 0xc ]
                        
    return fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
          
40019398:	98 00 a0 08 	add  %g2, 8, %o4
                              
4001939c:	96 10 00 12 	mov  %l2, %o3
                                 
400193a0:	94 10 20 01 	mov  1, %o2
                                   
400193a4:	92 10 00 19 	mov  %i1, %o1
                                 
400193a8:	7f ff ea 6e 	call  40013d60 <fat_file_ioctl>
               
400193ac:	90 10 00 10 	mov  %l0, %o0
                                 
        if (ret != RC_OK)
                                            
400193b0:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
400193b4:	12 bf fe 26 	bne  40018c4c <msdos_find_name_in_fat_file+0xc0>
<== NEVER TAKEN
400193b8:	c2 07 a0 5c 	ld  [ %fp + 0x5c ], %g1
                       
            * MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
                     
400193bc:	b1 2f 20 05 	sll  %i4, 5, %i0
                              
        short_file_offset = empty_file_offset + lfn_entries
          
400193c0:	96 06 00 12 	add  %i0, %l2, %o3
                            
    pos->ofs = file_offset & (bts2rd - 1);
                           
400193c4:	a2 0a c0 11 	and  %o3, %l1, %l1
                            
400193c8:	e2 20 60 04 	st  %l1, [ %g1 + 4 ]
                          
    return fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
          
400193cc:	98 10 00 01 	mov  %g1, %o4
                                 
400193d0:	94 10 20 01 	mov  1, %o2
                                   
400193d4:	92 10 00 19 	mov  %i1, %o1
                                 
400193d8:	7f ff ea 62 	call  40013d60 <fat_file_ioctl>
               
400193dc:	90 10 00 10 	mov  %l0, %o0
                                 
400193e0:	b7 2e a0 05 	sll  %i2, 5, %i3
                              
    for (lfn_entry = 0; lfn_entry < lfn_entries; ++lfn_entry) {
      
400193e4:	80 a7 20 00 	cmp  %i4, 0
                                   
    entry = fs_info->cl_buf;
                                         
400193e8:	f4 04 20 bc 	ld  [ %l0 + 0xbc ], %i2
                       
    for (lfn_entry = 0; lfn_entry < lfn_entries; ++lfn_entry) {
      
400193ec:	02 bf ff a0 	be  4001926c <msdos_find_name_in_fat_file+0x6e0>
<== NEVER TAKEN
400193f0:	a2 10 00 1b 	mov  %i3, %l1
                                 
400193f4:	c2 07 bf 58 	ld  [ %fp + -168 ], %g1
                       
400193f8:	aa 5f 20 1a 	smul  %i4, 0x1a, %l5
                          
400193fc:	a8 10 00 1c 	mov  %i4, %l4
                                 
40019400:	aa 05 7f e6 	add  %l5, -26, %l5
                            
40019404:	a6 10 20 00 	clr  %l3
                                      
40019408:	aa 00 40 15 	add  %g1, %l5, %l5
                            
    entry = fs_info->cl_buf;
                                         
4001940c:	98 10 00 1a 	mov  %i2, %o4
                                 
        memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
        
40019410:	90 10 00 0c 	mov  %o4, %o0
                                 
40019414:	94 10 20 20 	mov  0x20, %o2
                                
40019418:	40 00 0a 76 	call  4001bdf0 <memset>
                       
4001941c:	92 10 20 00 	clr  %o1
                                      
        *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;
               
40019420:	fa 2a 20 0d 	stb  %i5, [ %o0 + 0xd ]
                       
        n = (const uint8_t *) name_converted +
                       
40019424:	84 10 00 15 	mov  %l5, %g2
                                 
            if (*n != 0 || *(n + 1) != 0)
                            
40019428:	c8 08 80 00 	ldub  [ %g2 ], %g4
                            
        memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
        
4001942c:	98 10 00 08 	mov  %o0, %o4
                                 
40019430:	82 02 20 01 	add  %o0, 1, %g1
                              
        for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; ++i)
                
40019434:	86 10 20 00 	clr  %g3
                                      
            if (*n != 0 || *(n + 1) != 0)
                            
40019438:	80 89 20 ff 	btst  0xff, %g4
                               
4001943c:	12 80 00 15 	bne  40019490 <msdos_find_name_in_fat_file+0x904>
<== ALWAYS TAKEN
40019440:	9a 10 20 00 	clr  %o5
                                      
40019444:	de 08 a0 01 	ldub  [ %g2 + 1 ], %o7
                        <== NOT EXECUTED
40019448:	80 a3 e0 00 	cmp  %o7, 0
                                   
4001944c:	32 80 00 12 	bne,a   40019494 <msdos_find_name_in_fat_file+0x908>

40019450:	c8 28 40 00 	stb  %g4, [ %g1 ]
                             
                p [0] = fill;
                                        
40019454:	da 28 40 00 	stb  %o5, [ %g1 ]
                             
40019458:	88 00 e0 01 	add  %g3, 1, %g4
                              
                p [1] = fill;
                                        
4001945c:	da 28 60 01 	stb  %o5, [ %g1 + 1 ]
                         
            switch (i)
                                               
40019460:	80 a0 e0 04 	cmp  %g3, 4
                                   
40019464:	02 80 00 12 	be  400194ac <msdos_find_name_in_fat_file+0x920>

40019468:	9a 10 3f ff 	mov  -1, %o5
                                  
4001946c:	80 a0 e0 0a 	cmp  %g3, 0xa
                                 
40019470:	12 80 00 12 	bne  400194b8 <msdos_find_name_in_fat_file+0x92c>

40019474:	80 a1 20 0d 	cmp  %g4, 0xd
                                 
                    p += 4;
                                          
40019478:	82 00 60 04 	add  %g1, 4, %g1
                              
    entry = fs_info->cl_buf;
                                         
4001947c:	86 10 00 04 	mov  %g4, %g3
                                 
            if (*n != 0 || *(n + 1) != 0)
                            
40019480:	c8 08 80 00 	ldub  [ %g2 ], %g4
                            
40019484:	80 89 20 ff 	btst  0xff, %g4
                               
40019488:	22 bf ff f0 	be,a   40019448 <msdos_find_name_in_fat_file+0x8bc>

4001948c:	de 08 a0 01 	ldub  [ %g2 + 1 ], %o7
                        
                *p = *n;
                                             
40019490:	c8 28 40 00 	stb  %g4, [ %g1 ]
                             
                n += MSDOS_NAME_LFN_BYTES_PER_CHAR;
                  
40019494:	84 00 a0 02 	add  %g2, 2, %g2
                              
                *(p + 1) = *(n + 1);
                                 
40019498:	c8 08 bf ff 	ldub  [ %g2 + -1 ], %g4
                       
4001949c:	c8 28 60 01 	stb  %g4, [ %g1 + 1 ]
                         
            switch (i)
                                               
400194a0:	80 a0 e0 04 	cmp  %g3, 4
                                   
400194a4:	12 bf ff f2 	bne  4001946c <msdos_find_name_in_fat_file+0x8e0>

400194a8:	88 00 e0 01 	add  %g3, 1, %g4
                              
                    p += 5;
                                          
400194ac:	82 00 60 05 	add  %g1, 5, %g1
                              
    entry = fs_info->cl_buf;
                                         
400194b0:	10 bf ff f4 	b  40019480 <msdos_find_name_in_fat_file+0x8f4>

400194b4:	86 10 00 04 	mov  %g4, %g3
                                 
        for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; ++i)
                
400194b8:	12 bf ff f1 	bne  4001947c <msdos_find_name_in_fat_file+0x8f0>

400194bc:	82 00 60 02 	add  %g1, 2, %g1
                              
        if (lfn_entry == 0)
                                          
400194c0:	80 a4 e0 00 	cmp  %l3, 0
                                   
400194c4:	02 80 00 15 	be  40019518 <msdos_find_name_in_fat_file+0x98c>

400194c8:	e8 2b 00 00 	stb  %l4, [ %o4 ]
                             
        *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;
                    
400194cc:	c2 0b 20 0b 	ldub  [ %o4 + 0xb ], %g1
                      
400194d0:	82 10 60 0f 	or  %g1, 0xf, %g1
                             
400194d4:	c2 2b 20 0b 	stb  %g1, [ %o4 + 0xb ]
                       
    for (lfn_entry = 0; lfn_entry < lfn_entries; ++lfn_entry) {
      
400194d8:	a6 04 e0 01 	inc  %l3
                                      
400194dc:	a8 05 3f ff 	add  %l4, -1, %l4
                             
        entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
                  
400194e0:	98 03 20 20 	add  %o4, 0x20, %o4
                           
    for (lfn_entry = 0; lfn_entry < lfn_entries; ++lfn_entry) {
      
400194e4:	80 a7 00 13 	cmp  %i4, %l3
                                 
400194e8:	12 bf ff ca 	bne  40019410 <msdos_find_name_in_fat_file+0x884>

400194ec:	aa 05 7f e6 	add  %l5, -26, %l5
                            
400194f0:	10 bf ff 5f 	b  4001926c <msdos_find_name_in_fat_file+0x6e0>

400194f4:	b4 06 80 18 	add  %i2, %i0, %i2
                            
        *c = '_';
                                                    
400194f8:	c4 07 a0 60 	ld  [ %fp + 0x60 ], %g2
                       <== NOT EXECUTED
400194fc:	82 10 20 5f 	mov  0x5f, %g1
                                <== NOT EXECUTED
40019500:	10 bf ff 7d 	b  400192f4 <msdos_find_name_in_fat_file+0x768>
<== NOT EXECUTED
40019504:	c2 28 80 00 	stb  %g1, [ %g2 ]
                             <== NOT EXECUTED
40019508:	c4 07 a0 60 	ld  [ %fp + 0x60 ], %g2
                       
4001950c:	82 10 20 5f 	mov  0x5f, %g1
                                
40019510:	10 bf ff 80 	b  40019310 <msdos_find_name_in_fat_file+0x784>

40019514:	c2 28 a0 01 	stb  %g1, [ %g2 + 1 ]
                         
            *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
   
40019518:	82 15 20 40 	or  %l4, 0x40, %g1
                            
4001951c:	10 bf ff ec 	b  400194cc <msdos_find_name_in_fat_file+0x940>

40019520:	c2 2b 00 00 	stb  %g1, [ %o4 ]
                             
      eno = EINVAL;
                                                  
40019524:	10 bf fe 58 	b  40018e84 <msdos_find_name_in_fat_file+0x2f8>
<== NOT EXECUTED
40019528:	aa 10 20 16 	mov  0x16, %l5
                                <== NOT EXECUTED
        assert(bytes_read == bts2rd);
                                
4001952c:	17 10 00 a9 	sethi  %hi(0x4002a400), %o3
                   <== NOT EXECUTED
40019530:	15 10 00 a9 	sethi  %hi(0x4002a400), %o2
                   <== NOT EXECUTED
40019534:	11 10 00 a9 	sethi  %hi(0x4002a400), %o0
                   <== NOT EXECUTED
40019538:	96 12 e1 30 	or  %o3, 0x130, %o3
                           <== NOT EXECUTED
4001953c:	94 12 a1 a0 	or  %o2, 0x1a0, %o2
                           <== NOT EXECUTED
40019540:	92 10 25 4c 	mov  0x54c, %o1
                               <== NOT EXECUTED
40019544:	7f ff f0 d6 	call  4001589c <__assert_func>
                <== NOT EXECUTED
40019548:	90 12 20 98 	or  %o0, 0x98, %o0
                            <== NOT EXECUTED
4001954c:	80 a0 00 18 	cmp  %g0, %i0
                                 
40019550:	82 60 3f ff 	subx  %g0, -1, %g1
                            
40019554:	10 bf fe 71 	b  40018f18 <msdos_find_name_in_fat_file+0x38c>

40019558:	82 0e 80 01 	and  %i2, %g1, %g1
                            
    assert(name_utf8_len > 0);
                                       
4001955c:	17 10 00 a9 	sethi  %hi(0x4002a400), %o3
                   <== NOT EXECUTED
40019560:	15 10 00 a9 	sethi  %hi(0x4002a400), %o2
                   <== NOT EXECUTED
40019564:	11 10 00 a9 	sethi  %hi(0x4002a400), %o0
                   <== NOT EXECUTED
40019568:	96 12 e1 18 	or  %o3, 0x118, %o3
                           <== NOT EXECUTED
4001956c:	94 12 a1 c0 	or  %o2, 0x1c0, %o2
                           <== NOT EXECUTED
40019570:	92 10 27 45 	mov  0x745, %o1
                               <== NOT EXECUTED
40019574:	7f ff f0 ca 	call  4001589c <__assert_func>
                <== NOT EXECUTED
40019578:	90 12 20 98 	or  %o0, 0x98, %o0
                            <== NOT EXECUTED
4001957c:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40019580 <msdos_find_node_by_cluster_num_in_fat_file>: fat_file_fd_t *fat_fd, uint32_t cl4find, fat_dir_pos_t *dir_pos, char *dir_entry ) {
40019580:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    ssize_t          ret = 0;
                                        
    msdos_fs_info_t *fs_info = mt_entry->fs_info;
                    
    uint32_t         bts2rd = 0;
                                     
    uint32_t         i = 0, j = 0;
                                   

                                                                     
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
                                
40019584:	c2 06 60 20 	ld  [ %i1 + 0x20 ], %g1
                       
40019588:	80 a0 60 01 	cmp  %g1, 1
                                   
4001958c:	02 80 00 32 	be  40019654 <msdos_find_node_by_cluster_num_in_fat_file+0xd4>

40019590:	e2 06 20 08 	ld  [ %i0 + 8 ], %l1
                          
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))
            
        bts2rd = fat_fd->fat_file_size;
                              
    else
                                                             
        bts2rd = fs_info->fat.vol.bpc;
                               
40019594:	f0 04 60 08 	ld  [ %l1 + 8 ], %i0
                          
40019598:	d8 04 60 bc 	ld  [ %l1 + 0xbc ], %o4
                       
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
               
            rtems_set_errno_and_return_minus_one( EIO );
             

                                                                     
        assert(ret == bts2rd);
                                       

                                                                     
        for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001959c:	a4 10 20 00 	clr  %l2
                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,

400195a0:	96 10 00 18 	mov  %i0, %o3
                                 
400195a4:	94 10 00 12 	mov  %l2, %o2
                                 
400195a8:	92 10 00 19 	mov  %i1, %o1
                                 
400195ac:	7f ff e8 f9 	call  40013990 <fat_file_read>
                
400195b0:	90 10 00 11 	mov  %l1, %o0
                                 
400195b4:	80 a2 20 00 	cmp  %o0, 0
                                   
400195b8:	02 80 00 23 	be  40019644 <msdos_find_node_by_cluster_num_in_fat_file+0xc4>
<== NEVER TAKEN
400195bc:	80 a2 20 1f 	cmp  %o0, 0x1f
                                
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )
               
400195c0:	04 80 00 40 	ble  400196c0 <msdos_find_node_by_cluster_num_in_fat_file+0x140>
<== NEVER TAKEN
400195c4:	80 a2 00 18 	cmp  %o0, %i0
                                 
        assert(ret == bts2rd);
                                       
400195c8:	12 80 00 44 	bne  400196d8 <msdos_find_node_by_cluster_num_in_fat_file+0x158>
<== NEVER TAKEN
400195cc:	a0 10 20 00 	clr  %l0
                                      
        {
                                                            
            char* entry = (char*) fs_info->cl_buf + i;
               
400195d0:	d8 04 60 bc 	ld  [ %l1 + 0xbc ], %o4
                       
400195d4:	ba 10 00 0c 	mov  %o4, %i5
                                 

                                                                     
            /* if this and all rest entries are empty - return not-found */

            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
                    
400195d8:	c2 0f 40 00 	ldub  [ %i5 ], %g1
                            
400195dc:	80 a0 60 00 	cmp  %g1, 0
                                   
400195e0:	02 80 00 19 	be  40019644 <msdos_find_node_by_cluster_num_in_fat_file+0xc4>
<== NEVER TAKEN
400195e4:	80 a0 60 e5 	cmp  %g1, 0xe5
                                
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)
                 
                return MSDOS_NAME_NOT_FOUND_ERR;
                     

                                                                     
            /* if this entry is empty - skip it */
                   
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==
                    
400195e8:	22 80 00 12 	be,a   40019630 <msdos_find_node_by_cluster_num_in_fat_file+0xb0>
<== NEVER TAKEN
400195ec:	a0 04 20 20 	add  %l0, 0x20, %l0
                           <== NOT EXECUTED
                MSDOS_THIS_DIR_ENTRY_EMPTY)
                          
                continue;
                                            

                                                                     
            /* if get a non-empty entry - compare clusters num */
    
            if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)
         
400195f0:	c2 17 60 1a 	lduh  [ %i5 + 0x1a ], %g1
                     
400195f4:	c6 17 60 14 	lduh  [ %i5 + 0x14 ], %g3
                     
400195f8:	85 28 60 08 	sll  %g1, 8, %g2
                              
400195fc:	89 30 60 08 	srl  %g1, 8, %g4
                              
40019600:	83 28 e0 08 	sll  %g3, 8, %g1
                              
40019604:	84 10 80 04 	or  %g2, %g4, %g2
                             
40019608:	87 30 e0 08 	srl  %g3, 8, %g3
                              
4001960c:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
40019610:	82 10 40 03 	or  %g1, %g3, %g1
                             
40019614:	85 30 a0 10 	srl  %g2, 0x10, %g2
                           
40019618:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
4001961c:	82 10 40 02 	or  %g1, %g2, %g1
                             
40019620:	80 a0 40 1a 	cmp  %g1, %i2
                                 
40019624:	22 80 00 16 	be,a   4001967c <msdos_find_node_by_cluster_num_in_fat_file+0xfc>

40019628:	98 10 00 1b 	mov  %i3, %o4
                                 
        for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)

4001962c:	a0 04 20 20 	add  %l0, 0x20, %l0
                           
40019630:	80 a4 00 18 	cmp  %l0, %i0
                                 
40019634:	0a bf ff e9 	bcs  400195d8 <msdos_find_node_by_cluster_num_in_fat_file+0x58>
<== ALWAYS TAKEN
40019638:	ba 07 60 20 	add  %i5, 0x20, %i5
                           
4001963c:	10 bf ff d9 	b  400195a0 <msdos_find_node_by_cluster_num_in_fat_file+0x20>
<== NOT EXECUTED
40019640:	a4 04 80 08 	add  %l2, %o0, %l2
                            <== NOT EXECUTED
                return MSDOS_NAME_NOT_FOUND_ERR;
                     
40019644:	31 00 00 1f 	sethi  %hi(0x7c00), %i0
                       <== NOT EXECUTED
40019648:	b0 16 21 01 	or  %i0, 0x101, %i0	! 7d01 <_Configuration_Interrupt_stack_size+0x6d01>
<== NOT EXECUTED
            }
                                                        
        }
                                                            
        j++;
                                                         
    }
                                                                
    return MSDOS_NAME_NOT_FOUND_ERR;
                                 
}
                                                                    
4001964c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40019650:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&
                                
40019654:	c2 06 60 24 	ld  [ %i1 + 0x24 ], %g1
                       
40019658:	80 a0 60 00 	cmp  %g1, 0
                                   
4001965c:	32 bf ff cf 	bne,a   40019598 <msdos_find_node_by_cluster_num_in_fat_file+0x18>
<== NEVER TAKEN
40019660:	f0 04 60 08 	ld  [ %l1 + 8 ], %i0
                          <== NOT EXECUTED
40019664:	c2 0c 60 16 	ldub  [ %l1 + 0x16 ], %g1
                     
40019668:	80 88 60 03 	btst  3, %g1
                                  
4001966c:	22 bf ff cb 	be,a   40019598 <msdos_find_node_by_cluster_num_in_fat_file+0x18>
<== NEVER TAKEN
40019670:	f0 04 60 08 	ld  [ %l1 + 8 ], %i0
                          <== NOT EXECUTED
        bts2rd = fat_fd->fat_file_size;
                              
40019674:	10 bf ff c9 	b  40019598 <msdos_find_node_by_cluster_num_in_fat_file+0x18>

40019678:	f0 06 60 18 	ld  [ %i1 + 0x18 ], %i0
                       
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,

4001967c:	96 10 00 12 	mov  %l2, %o3
                                 
40019680:	94 10 20 01 	mov  1, %o2
                                   
40019684:	92 10 00 19 	mov  %i1, %o1
                                 
40019688:	7f ff e9 b6 	call  40013d60 <fat_file_ioctl>
               
4001968c:	90 10 00 11 	mov  %l1, %o0
                                 
                if (rc != RC_OK)
                                     
40019690:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40019694:	12 bf ff ee 	bne  4001964c <msdos_find_node_by_cluster_num_in_fat_file+0xcc>
<== NEVER TAKEN
40019698:	82 10 3f ff 	mov  -1, %g1
                                  
                dir_pos->sname.ofs = i;
                              
4001969c:	e0 26 e0 04 	st  %l0, [ %i3 + 4 ]
                          
                memcpy(dir_entry, entry,
                             
400196a0:	94 10 20 20 	mov  0x20, %o2
                                
                dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
            
400196a4:	c2 26 e0 08 	st  %g1, [ %i3 + 8 ]
                          
                memcpy(dir_entry, entry,
                             
400196a8:	92 10 00 1d 	mov  %i5, %o1
                                 
                dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
            
400196ac:	c2 26 e0 0c 	st  %g1, [ %i3 + 0xc ]
                        
                memcpy(dir_entry, entry,
                             
400196b0:	40 00 09 94 	call  4001bd00 <memcpy>
                       
400196b4:	90 10 00 1c 	mov  %i4, %o0
                                 
                return RC_OK;
                                        
400196b8:	81 c7 e0 08 	ret 
                                          
400196bc:	81 e8 00 00 	restore 
                                      
            rtems_set_errno_and_return_minus_one( EIO );
             
400196c0:	40 00 06 9f 	call  4001b13c <__errno>
                      <== NOT EXECUTED
400196c4:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
400196c8:	82 10 20 05 	mov  5, %g1
                                   <== NOT EXECUTED
400196cc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
400196d0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400196d4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
        assert(ret == bts2rd);
                                       
400196d8:	17 10 00 a9 	sethi  %hi(0x4002a400), %o3
                   <== NOT EXECUTED
400196dc:	15 10 00 a9 	sethi  %hi(0x4002a400), %o2
                   <== NOT EXECUTED
400196e0:	11 10 00 a9 	sethi  %hi(0x4002a400), %o0
                   <== NOT EXECUTED
400196e4:	96 12 e1 60 	or  %o3, 0x160, %o3
                           <== NOT EXECUTED
400196e8:	94 12 a1 70 	or  %o2, 0x170, %o2
                           <== NOT EXECUTED
400196ec:	92 10 27 f0 	mov  0x7f0, %o1
                               <== NOT EXECUTED
400196f0:	7f ff f0 6b 	call  4001589c <__assert_func>
                <== NOT EXECUTED
400196f4:	90 12 20 98 	or  %o0, 0x98, %o0
                            <== NOT EXECUTED
400196f8:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

4000d9d0 <msdos_format>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
4000d9d0:	9d e3 bc d0 	save  %sp, -816, %sp
                          
  msdos_format_param_t fmt_params;
                                   

                                                                     
  /*
                                                                 
   * open device for writing
                                         
   */
                                                                
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");

4000d9d4:	92 10 20 02 	mov  2, %o1
                                   
4000d9d8:	90 10 00 19 	mov  %i1, %o0
                                 
4000d9dc:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000d9e0:	7f ff ff 3d 	call  4000d6d4 <msdos_format_printf>
          
4000d9e4:	94 12 a2 48 	or  %o2, 0x248, %o2	! 40029e48 <_Thread_queue_Operations_default+0x6c>

  fd = open(devname, O_RDWR);
                                        
4000d9e8:	92 10 20 02 	mov  2, %o1
                                   
4000d9ec:	90 10 00 18 	mov  %i0, %o0
                                 
4000d9f0:	7f ff e1 5c 	call  40005f60 <open>
                         
4000d9f4:	ba 10 00 18 	mov  %i0, %i5
                                 
  if (fd == -1) {
                                                    
4000d9f8:	80 a2 3f ff 	cmp  %o0, -1
                                  
4000d9fc:	02 80 01 09 	be  4000de20 <msdos_format+0x450>
             <== NEVER TAKEN
4000da00:	a0 10 00 08 	mov  %o0, %l0
                                 
  }
                                                                  

                                                                     
  /*
                                                                 
   * sanity check on device
                                          
   */
                                                                
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
          
4000da04:	96 10 00 18 	mov  %i0, %o3
                                 
4000da08:	92 10 20 02 	mov  2, %o1
                                   
4000da0c:	90 10 00 19 	mov  %i1, %o0
                                 
4000da10:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000da14:	7f ff ff 30 	call  4000d6d4 <msdos_format_printf>
          
4000da18:	94 12 a2 58 	or  %o2, 0x258, %o2	! 40029e58 <_Thread_queue_Operations_default+0x7c>

                       "stat check: %s\n", devname);
                 
  if (ret_val == 0) {
                                                
    ret_val = fstat(fd, &stat_buf);
                                  
4000da1c:	92 07 bd a0 	add  %fp, -608, %o1
                           
4000da20:	7f ff de 82 	call  40005428 <fstat>
                        
4000da24:	90 10 00 10 	mov  %l0, %o0
                                 
  }
                                                                  

                                                                     
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
            
4000da28:	96 10 00 1d 	mov  %i5, %o3
                                 
    ret_val = fstat(fd, &stat_buf);
                                  
4000da2c:	b0 10 00 08 	mov  %o0, %i0
                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
            
4000da30:	92 10 20 01 	mov  1, %o1
                                   
4000da34:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000da38:	90 10 00 19 	mov  %i1, %o0
                                 
4000da3c:	7f ff ff 26 	call  4000d6d4 <msdos_format_printf>
          
4000da40:	94 12 a2 68 	or  %o2, 0x268, %o2
                           
                       "formating: %s\n", devname);
                  
  /* rtems feature: no block devices, all are character devices */
   
  if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {
              
4000da44:	80 a6 20 00 	cmp  %i0, 0
                                   
4000da48:	12 80 00 ea 	bne  4000ddf0 <msdos_format+0x420>
            <== NEVER TAKEN
4000da4c:	05 00 00 3c 	sethi  %hi(0xf000), %g2
                       
4000da50:	c2 07 bd ac 	ld  [ %fp + -596 ], %g1
                       
4000da54:	82 08 40 02 	and  %g1, %g2, %g1
                            
4000da58:	05 00 00 18 	sethi  %hi(0x6000), %g2
                       
4000da5c:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000da60:	12 80 00 e8 	bne  4000de00 <msdos_format+0x430>
            <== NEVER TAKEN
4000da64:	92 10 20 00 	clr  %o1
                                      
  memset(fmt_params,0,sizeof(*fmt_params));
                          
4000da68:	94 10 20 54 	mov  0x54, %o2
                                
4000da6c:	40 00 38 e1 	call  4001bdf0 <memset>
                       
4000da70:	90 07 bd 4c 	add  %fp, -692, %o0
                           
static inline int rtems_disk_fd_get_media_block_size(
                
  int fd,
                                                            
  uint32_t *media_block_size
                                         
)
                                                                    
{
                                                                    
  return ioctl(fd, RTEMS_BLKIO_GETMEDIABLKSIZE, media_block_size);
   
4000da74:	94 07 bd 4c 	add  %fp, -692, %o2
                           
4000da78:	3b 10 01 10 	sethi  %hi(0x40044000), %i5
                   
4000da7c:	90 10 00 10 	mov  %l0, %o0
                                 
4000da80:	40 00 20 4e 	call  40015bb8 <ioctl>
                        
4000da84:	92 17 62 02 	or  %i5, 0x202, %o1
                           
4000da88:	d8 07 bd 50 	ld  [ %fp + -688 ], %o4
                       
  if (ret_val == 0) {
                                                
4000da8c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000da90:	02 80 00 f3 	be  4000de5c <msdos_format+0x48c>
             <== ALWAYS TAKEN
4000da94:	b0 10 00 08 	mov  %o0, %i0
                                 
  if ( fmt_params->totl_sector_cnt == 0 )
                            
4000da98:	80 a3 20 00 	cmp  %o4, 0
                                   <== NOT EXECUTED
4000da9c:	02 80 01 d4 	be  4000e1ec <msdos_format+0x81c>
             <== NOT EXECUTED
4000daa0:	fa 07 bd 54 	ld  [ %fp + -684 ], %i5
                       <== NOT EXECUTED
4000daa4:	c2 0f bd 7c 	ldub  [ %fp + -644 ], %g1
                     
4000daa8:	c6 07 bd 5c 	ld  [ %fp + -676 ], %g3
                       
4000daac:	82 58 40 03 	smul  %g1, %g3, %g1
                           
4000dab0:	82 00 40 1d 	add  %g1, %i5, %g1
                            
    fmt_params->root_dir_start_sec =
                                 
4000dab4:	c2 27 bd 6c 	st  %g1, [ %fp + -660 ]
                       
  if (fmt_params->root_dir_sectors > 0) {
                            
4000dab8:	c4 07 bd 68 	ld  [ %fp + -664 ], %g2
                       
4000dabc:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000dac0:	02 80 01 da 	be  4000e228 <msdos_format+0x858>
             
4000dac4:	c2 07 bd 58 	ld  [ %fp + -680 ], %g1
                       
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->root_dir_sectors;
 
4000dac8:	c4 27 bd 70 	st  %g2, [ %fp + -656 ]
                       
  if (ret_val == 0) {
                                                
4000dacc:	80 a6 20 00 	cmp  %i0, 0
                                   
4000dad0:	12 80 00 c8 	bne  4000ddf0 <msdos_format+0x420>
            
4000dad4:	80 a6 60 00 	cmp  %i1, 0
                                   
    if ((rqdata != NULL) && (rqdata->OEMName != NULL)) {
             
4000dad8:	02 80 02 aa 	be  4000e580 <msdos_format+0xbb0>
             
4000dadc:	39 10 00 a7 	sethi  %hi(0x40029c00), %i4
                   
4000dae0:	f8 06 40 00 	ld  [ %i1 ], %i4
                              
4000dae4:	80 a7 20 00 	cmp  %i4, 0
                                   
4000dae8:	22 80 02 a6 	be,a   4000e580 <msdos_format+0xbb0>
          
4000daec:	39 10 00 a7 	sethi  %hi(0x40029c00), %i4
                   
4000daf0:	b6 07 bd 87 	add  %fp, -633, %i3
                           
      from = "RTEMS"; /* default: make "from" point to OS Name */
    
4000daf4:	ba 07 bd 7f 	add  %fp, -641, %i5
                           
        *to++=' ';
                                                   
4000daf8:	10 80 00 06 	b  4000db10 <msdos_format+0x140>
              
4000dafc:	b4 10 20 20 	mov  0x20, %i2
                                
        *to++ = *from++;
                                             
4000db00:	b8 07 20 01 	inc  %i4
                                      
    for (cnt = 0; cnt < (sizeof(fmt_params->OEMName)-1); cnt++) {
    
4000db04:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000db08:	02 80 00 0e 	be  4000db40 <msdos_format+0x170>
             <== NEVER TAKEN
4000db0c:	c0 2f 40 00 	clrb  [ %i5 ]
                                 
      if (isprint((unsigned char)*from)) {
                           
4000db10:	40 00 37 d5 	call  4001ba64 <__locale_ctype_ptr>
           
4000db14:	ba 07 60 01 	inc  %i5
                                      
4000db18:	c2 0f 00 00 	ldub  [ %i4 ], %g1
                            
4000db1c:	90 02 00 01 	add  %o0, %g1, %o0
                            
4000db20:	c4 4a 20 01 	ldsb  [ %o0 + 1 ], %g2
                        
4000db24:	80 88 a0 97 	btst  0x97, %g2
                               
4000db28:	32 bf ff f6 	bne,a   4000db00 <msdos_format+0x130>
         
4000db2c:	c2 2f 7f ff 	stb  %g1, [ %i5 + -1 ]
                        
        *to++=' ';
                                                   
4000db30:	f4 2f 7f ff 	stb  %i2, [ %i5 + -1 ]
                        
    for (cnt = 0; cnt < (sizeof(fmt_params->OEMName)-1); cnt++) {
    
4000db34:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000db38:	12 bf ff f6 	bne  4000db10 <msdos_format+0x140>
            
4000db3c:	c0 2f 40 00 	clrb  [ %i5 ]
                                 
    if ((rqdata != NULL) &&
                                          
4000db40:	80 a6 60 00 	cmp  %i1, 0
                                   
4000db44:	02 80 02 8d 	be  4000e578 <msdos_format+0xba8>
             
4000db48:	39 10 00 a7 	sethi  %hi(0x40029c00), %i4
                   
        (rqdata->VolLabel != NULL)) {
                                
4000db4c:	f8 06 60 04 	ld  [ %i1 + 4 ], %i4
                          
    if ((rqdata != NULL) &&
                                          
4000db50:	80 a7 20 00 	cmp  %i4, 0
                                   
4000db54:	02 80 02 88 	be  4000e574 <msdos_format+0xba4>
             
4000db58:	82 10 20 01 	mov  1, %g1
                                   
      fmt_params->VolLabel_present = true;
                           
4000db5c:	c2 2f bd 94 	stb  %g1, [ %fp + -620 ]
                      
4000db60:	b6 07 bd 93 	add  %fp, -621, %i3
                           
      from = ""; /* default: make "from" point to empty string */
    
4000db64:	ba 07 bd 88 	add  %fp, -632, %i5
                           
        *to++=' ';
                                                   
4000db68:	10 80 00 06 	b  4000db80 <msdos_format+0x1b0>
              
4000db6c:	b4 10 20 20 	mov  0x20, %i2
                                
        *to++ = *from++;
                                             
4000db70:	b8 07 20 01 	inc  %i4
                                      
    for (cnt = 0; cnt < (sizeof(fmt_params->VolLabel)-1); cnt++) {
   
4000db74:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000db78:	02 80 00 0e 	be  4000dbb0 <msdos_format+0x1e0>
             <== NEVER TAKEN
4000db7c:	c0 2f 40 00 	clrb  [ %i5 ]
                                 
      if (isprint((unsigned char)*from)) {
                           
4000db80:	40 00 37 b9 	call  4001ba64 <__locale_ctype_ptr>
           
4000db84:	ba 07 60 01 	inc  %i5
                                      
4000db88:	c2 0f 00 00 	ldub  [ %i4 ], %g1
                            
4000db8c:	90 02 00 01 	add  %o0, %g1, %o0
                            
4000db90:	c4 4a 20 01 	ldsb  [ %o0 + 1 ], %g2
                        
4000db94:	80 88 a0 97 	btst  0x97, %g2
                               
4000db98:	32 bf ff f6 	bne,a   4000db70 <msdos_format+0x1a0>
         
4000db9c:	c2 2f 7f ff 	stb  %g1, [ %i5 + -1 ]
                        
        *to++=' ';
                                                   
4000dba0:	f4 2f 7f ff 	stb  %i2, [ %i5 + -1 ]
                        
    for (cnt = 0; cnt < (sizeof(fmt_params->VolLabel)-1); cnt++) {
   
4000dba4:	80 a7 40 1b 	cmp  %i5, %i3
                                 
4000dba8:	12 bf ff f6 	bne  4000db80 <msdos_format+0x1b0>
            
4000dbac:	c0 2f 40 00 	clrb  [ %i5 ]
                                 
  rc = rtems_clock_get_tod_timeval(&time_value);
                     
4000dbb0:	40 00 21 95 	call  40016204 <rtems_clock_get_tod_timeval>
  
4000dbb4:	90 07 be 00 	add  %fp, -512, %o0
                           
  if (rc == RTEMS_SUCCESSFUL) {
                                      
4000dbb8:	80 a2 20 00 	cmp  %o0, 0
                                   
4000dbbc:	12 80 03 9d 	bne  4000ea30 <msdos_format+0x1060>
           <== ALWAYS TAKEN
4000dbc0:	c2 07 be 04 	ld  [ %fp + -508 ], %g1
                       
    *volid_ptr = time_value.tv_sec + time_value.tv_sec;
              
4000dbc4:	83 28 60 01 	sll  %g1, 1, %g1
                              <== NOT EXECUTED
4000dbc8:	c2 27 bd 98 	st  %g1, [ %fp + -616 ]
                       <== NOT EXECUTED
    ret_val = msdos_format_determine_fmt_params(fd,rqdata,&fmt_params);

  }
                                                                  
  /*
                                                                 
   * if requested, write whole disk/partition with 0xe5
              
   */
                                                                
  if ((ret_val == 0) &&
                                              
4000dbcc:	80 a6 60 00 	cmp  %i1, 0
                                   
4000dbd0:	02 80 00 06 	be  4000dbe8 <msdos_format+0x218>
             
4000dbd4:	b6 10 20 00 	clr  %i3
                                      
      (rqdata != NULL) &&
                                            
      !(rqdata->quick_format)) {
                                     
4000dbd8:	f6 0e 60 15 	ldub  [ %i1 + 0x15 ], %i3
                     
      (rqdata != NULL) &&
                                            
4000dbdc:	80 8e e0 ff 	btst  0xff, %i3
                               
4000dbe0:	02 80 02 33 	be  4000e4ac <msdos_format+0xadc>
             <== NEVER TAKEN
4000dbe4:	d8 07 bd 4c 	ld  [ %fp + -692 ], %o4
                       
   */
                                                                
  if (ret_val == 0) {
                                                
    /*
                                                               
     * Read the current MBR to obtain the partition table.
           
     */
                                                              
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
        
4000dbe8:	92 10 20 02 	mov  2, %o1
                                   
4000dbec:	90 10 00 19 	mov  %i1, %o0
                                 
4000dbf0:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000dbf4:	7f ff fe b8 	call  4000d6d4 <msdos_format_printf>
          
4000dbf8:	94 12 a3 40 	or  %o2, 0x340, %o2	! 40029f40 <_Thread_queue_Operations_default+0x164>

  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
    
4000dbfc:	96 10 20 00 	clr  %o3
                                      
                         "read MRB sector\n");
                       
    ret_val = msdos_format_read_sec(fd,
                              
4000dc00:	fa 07 bd 4c 	ld  [ %fp + -692 ], %i5
                       
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {
    
4000dc04:	92 10 20 00 	clr  %o1
                                      
4000dc08:	94 10 20 00 	clr  %o2
                                      
4000dc0c:	40 00 20 27 	call  40015ca8 <lseek>
                        
4000dc10:	90 10 00 10 	mov  %l0, %o0
                                 
4000dc14:	80 a2 20 00 	cmp  %o0, 0
                                   
4000dc18:	06 80 03 8a 	bl  4000ea40 <msdos_format+0x1070>
            <== NEVER TAKEN
4000dc1c:	94 10 00 1d 	mov  %i5, %o2
                                 
    if (0 > read(fd,buffer,sector_size)) {
                           
4000dc20:	92 07 be 00 	add  %fp, -512, %o1
                           
4000dc24:	40 00 20 ca 	call  40015f4c <read>
                         
4000dc28:	90 10 00 10 	mov  %l0, %o0
                                 
4000dc2c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000dc30:	06 80 03 84 	bl  4000ea40 <msdos_format+0x1070>
            <== NEVER TAKEN
4000dc34:	92 10 20 02 	mov  2, %o1
                                   
                                    0,
                               
                                    fmt_params.bytes_per_sector,
     
                                    tmp_sec);
                        
    if (ret_val == 0) {
                                              
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
      
4000dc38:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000dc3c:	90 10 00 19 	mov  %i1, %o0
                                 
4000dc40:	7f ff fe a5 	call  4000d6d4 <msdos_format_printf>
          
4000dc44:	94 12 a2 f0 	or  %o2, 0x2f0, %o2
                           
  if (fmt_params->totl_sector_cnt < 0x10000) {
                       
4000dc48:	c2 07 bd 50 	ld  [ %fp + -688 ], %g1
                       
4000dc4c:	05 00 00 3f 	sethi  %hi(0xfc00), %g2
                       
4000dc50:	84 10 a3 ff 	or  %g2, 0x3ff, %g2	! ffff <_Configuration_Interrupt_stack_size+0xefff>

4000dc54:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000dc58:	18 80 02 20 	bgu  4000e4d8 <msdos_format+0xb08>
            
4000dc5c:	a3 30 60 08 	srl  %g1, 8, %l1
                              
4000dc60:	b5 30 60 08 	srl  %g1, 8, %i2
                              
4000dc64:	ba 10 00 01 	mov  %g1, %i5
                                 
4000dc68:	b0 10 20 00 	clr  %i0
                                      
4000dc6c:	b8 10 20 00 	clr  %i4
                                      
4000dc70:	a2 10 20 00 	clr  %l1
                                      
4000dc74:	a4 10 20 00 	clr  %l2
                                      
  memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);
                    
4000dc78:	94 10 21 be 	mov  0x1be, %o2
                               
4000dc7c:	92 10 20 00 	clr  %o1
                                      
4000dc80:	40 00 38 5c 	call  4001bdf0 <memset>
                       
4000dc84:	90 07 be 00 	add  %fp, -512, %o0
                           
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
                               
4000dc88:	94 10 20 08 	mov  8, %o2
                                   
  memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,

4000dc8c:	c0 37 bf fe 	clrh  [ %fp + -2 ]
                            
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),
                               
4000dc90:	92 07 bd 7f 	add  %fp, -641, %o1
                           
4000dc94:	40 00 38 1b 	call  4001bd00 <memcpy>
                       
4000dc98:	90 07 be 03 	add  %fp, -509, %o0
                           
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);

4000dc9c:	c4 07 bd 64 	ld  [ %fp + -668 ], %g2
                       
4000dca0:	83 30 a0 08 	srl  %g2, 8, %g1
                              
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector);

4000dca4:	c8 07 bd 4c 	ld  [ %fp + -692 ], %g4
                       
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);

4000dca8:	c2 2f be 12 	stb  %g1, [ %fp + -494 ]
                      
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector);

4000dcac:	97 31 20 08 	srl  %g4, 8, %o3
                              
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);
      
4000dcb0:	c2 0f bd 7d 	ldub  [ %fp + -643 ], %g1
                     
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
 
4000dcb4:	c6 07 bd 54 	ld  [ %fp + -684 ], %g3
                       
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector);

4000dcb8:	c8 2f be 0b 	stb  %g4, [ %fp + -501 ]
                      
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
 
4000dcbc:	99 30 e0 08 	srl  %g3, 8, %o4
                              
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);

4000dcc0:	c8 07 bd 58 	ld  [ %fp + -680 ], %g4
                       
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);
      
4000dcc4:	c2 2f be 15 	stb  %g1, [ %fp + -491 ]
                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */

4000dcc8:	82 10 3f ff 	mov  -1, %g1
                                  
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */

4000dccc:	9a 10 20 02 	mov  2, %o5
                                   
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */

4000dcd0:	9e 10 20 01 	mov  1, %o7
                                   
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
 
4000dcd4:	c6 2f be 0e 	stb  %g3, [ %fp + -498 ]
                      
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);
         
4000dcd8:	fa 2f be 13 	stb  %i5, [ %fp + -493 ]
                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */

4000dcdc:	c2 2f be 18 	stb  %g1, [ %fp + -488 ]
                      
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */

4000dce0:	82 10 20 06 	mov  6, %g1
                                   
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector);

4000dce4:	d6 2f be 0c 	stb  %o3, [ %fp + -500 ]
                      
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */

4000dce8:	c2 2f be 1a 	stb  %g1, [ %fp + -486 ]
                      
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);

4000dcec:	c8 2f be 0d 	stb  %g4, [ %fp + -499 ]
                      
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);
 
4000dcf0:	d8 2f be 0f 	stb  %o4, [ %fp + -497 ]
                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */

4000dcf4:	da 2f be 10 	stb  %o5, [ %fp + -496 ]
                      
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);

4000dcf8:	c4 2f be 11 	stb  %g2, [ %fp + -495 ]
                      
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);
         
4000dcfc:	f4 2f be 14 	stb  %i2, [ %fp + -492 ]
                      
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */

4000dd00:	de 2f be 1c 	stb  %o7, [ %fp + -484 ]
                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);
         
4000dd04:	e4 2f be 20 	stb  %l2, [ %fp + -480 ]
                      
4000dd08:	e2 2f be 21 	stb  %l1, [ %fp + -479 ]
                      
4000dd0c:	f8 2f be 22 	stb  %i4, [ %fp + -478 ]
                      
4000dd10:	f0 2f be 23 	stb  %i0, [ %fp + -477 ]
                      
4000dd14:	c2 07 bd 5c 	ld  [ %fp + -676 ], %g1
                       
  if (fmt_params->fattype != FAT_FAT32) {
                            
4000dd18:	fa 0f bd 7e 	ldub  [ %fp + -642 ], %i5
                     
4000dd1c:	80 a7 60 04 	cmp  %i5, 4
                                   
4000dd20:	02 80 03 1b 	be  4000e98c <msdos_format+0xfbc>
             
4000dd24:	87 30 60 08 	srl  %g1, 8, %g3
                              
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */

4000dd28:	c4 07 bd 98 	ld  [ %fp + -616 ], %g2
                       
4000dd2c:	89 30 a0 18 	srl  %g2, 0x18, %g4
                           
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);
  
4000dd30:	c2 2f be 16 	stb  %g1, [ %fp + -490 ]
                      
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);
          
4000dd34:	82 10 20 29 	mov  0x29, %g1
                                
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */

4000dd38:	b5 30 a0 08 	srl  %g2, 8, %i2
                              
4000dd3c:	b9 30 a0 10 	srl  %g2, 0x10, %i4
                           
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);
  
4000dd40:	c6 2f be 17 	stb  %g3, [ %fp + -489 ]
                      
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
                                
4000dd44:	94 10 20 0b 	mov  0xb, %o2
                                 
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);
          
4000dd48:	c2 2f be 26 	stb  %g1, [ %fp + -474 ]
                      
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
                                
4000dd4c:	92 07 bd 88 	add  %fp, -632, %o1
                           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */

4000dd50:	c4 2f be 27 	stb  %g2, [ %fp + -473 ]
                      
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
                                
4000dd54:	90 07 be 2b 	add  %fp, -469, %o0
                           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */

4000dd58:	f4 2f be 28 	stb  %i2, [ %fp + -472 ]
                      
4000dd5c:	f8 2f be 29 	stb  %i4, [ %fp + -471 ]
                      
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),
                                
4000dd60:	40 00 37 e8 	call  4001bd00 <memcpy>
                       
4000dd64:	c8 2f be 2a 	stb  %g4, [ %fp + -470 ]
                      
    memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),
                          
4000dd68:	80 a7 60 01 	cmp  %i5, 1
                                   
4000dd6c:	02 80 03 4c 	be  4000ea9c <msdos_format+0x10cc>
            
4000dd70:	03 10 00 a7 	sethi  %hi(0x40029c00), %g1
                   
4000dd74:	03 10 00 a7 	sethi  %hi(0x40029c00), %g1
                   
4000dd78:	82 10 62 38 	or  %g1, 0x238, %g1	! 40029e38 <_Thread_queue_Operations_default+0x5c>

4000dd7c:	c8 10 40 00 	lduh  [ %g1 ], %g4
                            
4000dd80:	c6 10 60 02 	lduh  [ %g1 + 2 ], %g3
                        
4000dd84:	c4 10 60 04 	lduh  [ %g1 + 4 ], %g2
                        
4000dd88:	c2 10 60 06 	lduh  [ %g1 + 6 ], %g1
                        
4000dd8c:	c8 37 be 36 	sth  %g4, [ %fp + -458 ]
                      
4000dd90:	c6 37 be 38 	sth  %g3, [ %fp + -456 ]
                      
4000dd94:	c4 37 be 3a 	sth  %g2, [ %fp + -454 ]
                      
4000dd98:	c2 37 be 3c 	sth  %g1, [ %fp + -452 ]
                      
  FAT_SET_BR_SIGNATURE(mbr,      FAT_BR_SIGNATURE_VAL);
              
4000dd9c:	03 00 00 15 	sethi  %hi(0x5400), %g1
                       
4000dda0:	82 10 61 aa 	or  %g1, 0x1aa, %g1	! 55aa <_Configuration_Interrupt_stack_size+0x45aa>

4000dda4:	c2 37 bf fe 	sth  %g1, [ %fp + -2 ]
                        
  FAT_SET_VAL8(mbr,0,0xeb);
                                          
4000dda8:	03 3f ff fa 	sethi  %hi(0xffffe800), %g1
                   
4000ddac:	82 10 63 3c 	or  %g1, 0x33c, %g1	! ffffeb3c <RAM_END+0xbfbfeb3c>

4000ddb0:	c2 37 be 00 	sth  %g1, [ %fp + -512 ]
                      
  FAT_SET_VAL8(mbr,1,0x3c);
                                          
4000ddb4:	82 10 3f 90 	mov  -112, %g1
                                
    /*
                                                               
     * write master boot record to disk
                              
     * also write copy of MBR to disk
                                
     */
                                                              
    if (ret_val == 0) {
                                              
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
      
4000ddb8:	92 10 20 02 	mov  2, %o1
                                   
4000ddbc:	90 10 00 19 	mov  %i1, %o0
                                 
  FAT_SET_VAL8(mbr,1,0x3c);
                                          
4000ddc0:	c2 2f be 02 	stb  %g1, [ %fp + -510 ]
                      
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
      
4000ddc4:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000ddc8:	7f ff fe 43 	call  4000d6d4 <msdos_format_printf>
          
4000ddcc:	94 12 a3 08 	or  %o2, 0x308, %o2	! 40029f08 <_Thread_queue_Operations_default+0x12c>

                           "write MRB sector\n");
                    
      ret_val = msdos_format_write_sec(fd,
                           
4000ddd0:	d4 07 bd 4c 	ld  [ %fp + -692 ], %o2
                       
4000ddd4:	96 07 be 00 	add  %fp, -512, %o3
                           
4000ddd8:	92 10 20 00 	clr  %o1
                                      
4000dddc:	7f ff fe 58 	call  4000d73c <msdos_format_write_sec>
       
4000dde0:	90 10 00 10 	mov  %l0, %o0
                                 
                                       0,
                            
                                       fmt_params.bytes_per_sector,
  
                                       tmp_sec);
                     
    }
                                                                
    if ((ret_val == 0) &&
                                            
4000dde4:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000dde8:	02 80 01 12 	be  4000e230 <msdos_format+0x860>
             <== ALWAYS TAKEN
4000ddec:	c2 07 bd 74 	ld  [ %fp + -652 ], %g1
                       
   * cleanup:
                                                        
   * sync and unlock disk
                                            
   * free any data structures (not needed now)
                       
   */
                                                                
  if (fd != -1) {
                                                    
    close(fd);
                                                       
4000ddf0:	7f ff dd 18 	call  40005250 <close>
                        
4000ddf4:	90 10 00 10 	mov  %l0, %o0
                                 
  }
                                                                  

                                                                     
  return ret_val;
                                                    
}
                                                                    
4000ddf8:	81 c7 e0 08 	ret 
                                          
4000ddfc:	81 e8 00 00 	restore 
                                      
    errno = ENOTTY;
                                                  
4000de00:	40 00 34 cf 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4000de04:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4000de08:	82 10 20 19 	mov  0x19, %g1
                                <== NOT EXECUTED
4000de0c:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    close(fd);
                                                       
4000de10:	7f ff dd 10 	call  40005250 <close>
                        <== NOT EXECUTED
4000de14:	90 10 00 10 	mov  %l0, %o0
                                 <== NOT EXECUTED
}
                                                                    
4000de18:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000de1c:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
          
4000de20:	90 10 00 19 	mov  %i1, %o0
                                 <== NOT EXECUTED
4000de24:	96 10 00 18 	mov  %i0, %o3
                                 <== NOT EXECUTED
4000de28:	92 10 20 02 	mov  2, %o1
                                   <== NOT EXECUTED
4000de2c:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   <== NOT EXECUTED
4000de30:	7f ff fe 29 	call  4000d6d4 <msdos_format_printf>
          <== NOT EXECUTED
4000de34:	94 12 a2 58 	or  %o2, 0x258, %o2	! 40029e58 <_Thread_queue_Operations_default+0x7c>
<== NOT EXECUTED
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
            
4000de38:	96 10 00 18 	mov  %i0, %o3
                                 <== NOT EXECUTED
4000de3c:	92 10 20 01 	mov  1, %o1
                                   <== NOT EXECUTED
    ret_val= -1;
                                                     
4000de40:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,
            
4000de44:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   <== NOT EXECUTED
4000de48:	90 10 00 19 	mov  %i1, %o0
                                 <== NOT EXECUTED
4000de4c:	7f ff fe 22 	call  4000d6d4 <msdos_format_printf>
          <== NOT EXECUTED
4000de50:	94 12 a2 68 	or  %o2, 0x268, %o2
                           <== NOT EXECUTED
4000de54:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000de58:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
static inline int rtems_disk_fd_get_block_count(
                     
  int fd,
                                                            
  rtems_blkdev_bnum *block_count
                                     
)
                                                                    
{
                                                                    
  return ioctl(fd, RTEMS_BLKIO_GETSIZE, block_count);
                
4000de5c:	94 07 bd 50 	add  %fp, -688, %o2
                           
4000de60:	92 17 62 05 	or  %i5, 0x205, %o1
                           
4000de64:	40 00 1f 55 	call  40015bb8 <ioctl>
                        
4000de68:	90 10 00 10 	mov  %l0, %o0
                                 
  if (ret_val == 0) {
                                                
4000de6c:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000de70:	12 80 01 c6 	bne  4000e588 <msdos_format+0xbb8>
            <== NEVER TAKEN
4000de74:	d6 07 bd 4c 	ld  [ %fp + -692 ], %o3
                       
    total_size = (uint64_t)fmt_params->bytes_per_sector * fmt_params->totl_sector_cnt;

4000de78:	d8 07 bd 50 	ld  [ %fp + -688 ], %o4
                       
4000de7c:	ba 52 c0 0c 	umul  %o3, %o4, %i5
                           
4000de80:	b9 40 00 00 	rd  %y, %i4
                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
        
4000de84:	fa 23 a0 5c 	st  %i5, [ %sp + 0x5c ]
                       
4000de88:	9a 10 00 1c 	mov  %i4, %o5
                                 
4000de8c:	f8 3f bd 40 	std  %i4, [ %fp + -704 ]
                      
4000de90:	92 10 20 02 	mov  2, %o1
                                   
4000de94:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000de98:	90 10 00 19 	mov  %i1, %o0
                                 
4000de9c:	7f ff fe 0e 	call  4000d6d4 <msdos_format_printf>
          
4000dea0:	94 12 a2 78 	or  %o2, 0x278, %o2
                           
    if ((rqdata == NULL) || (rqdata->fat_num == 0)) {
                
4000dea4:	80 a6 60 00 	cmp  %i1, 0
                                   
4000dea8:	02 80 02 72 	be  4000e870 <msdos_format+0xea0>
             
4000deac:	82 10 20 02 	mov  2, %g1
                                   
4000deb0:	d6 06 60 0c 	ld  [ %i1 + 0xc ], %o3
                        
4000deb4:	80 a2 e0 00 	cmp  %o3, 0
                                   
4000deb8:	22 80 01 b6 	be,a   4000e590 <msdos_format+0xbc0>
          
4000debc:	96 10 20 02 	mov  2, %o3
                                   
    else if (rqdata->fat_num <= 6) {
                                 
4000dec0:	80 a2 e0 06 	cmp  %o3, 6
                                   
4000dec4:	18 80 02 f8 	bgu  4000eaa4 <msdos_format+0x10d4>
           
4000dec8:	01 00 00 00 	nop 
                                          
      fmt_params->fat_num = rqdata->fat_num;
                         
4000decc:	d6 2f bd 7c 	stb  %o3, [ %fp + -644 ]
                      
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
        
4000ded0:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000ded4:	92 10 20 02 	mov  2, %o1
                                   
4000ded8:	94 12 a2 b8 	or  %o2, 0x2b8, %o2
                           
4000dedc:	7f ff fd fe 	call  4000d6d4 <msdos_format_printf>
          
4000dee0:	90 10 00 19 	mov  %i1, %o0
                                 
    if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {
        
4000dee4:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
4000dee8:	80 a0 60 00 	cmp  %g1, 0
                                   
4000deec:	02 80 02 69 	be  4000e890 <msdos_format+0xec0>
             
4000def0:	05 00 00 1f 	sethi  %hi(0x7c00), %g2
                       
4000def4:	84 58 6f f5 	smul  %g1, 0xff5, %g2
                         
    if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {

4000def8:	c6 07 bd 50 	ld  [ %fp + -688 ], %g3
                       
4000defc:	80 a0 c0 02 	cmp  %g3, %g2
                                 
4000df00:	1a 80 02 67 	bcc  4000e89c <msdos_format+0xecc>
            
4000df04:	05 00 00 3f 	sethi  %hi(0xfc00), %g2
                       
      fmt_params->fattype = FAT_FAT12;
                               
4000df08:	82 10 20 01 	mov  1, %g1
                                   
4000df0c:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      
      fmt_params->sectors_per_cluster = 2;
                           
4000df10:	82 10 20 02 	mov  2, %g1
                                   
4000df14:	c2 27 bd 58 	st  %g1, [ %fp + -680 ]
                       
    ret_val = msdos_set_sectors_per_cluster_from_request( rqdata, fmt_params );

4000df18:	92 07 bd 4c 	add  %fp, -692, %o1
                           
4000df1c:	94 07 bd 58 	add  %fp, -680, %o2
                           
4000df20:	7f ff fe 88 	call  4000d940 <msdos_set_sectors_per_cluster_from_request.isra.1>

4000df24:	90 10 00 19 	mov  %i1, %o0
                                 
    if (ret_val == 0) {
                                              
4000df28:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000df2c:	12 bf fe db 	bne  4000da98 <msdos_format+0xc8>
             <== NEVER TAKEN
4000df30:	d8 07 bd 50 	ld  [ %fp + -688 ], %o4
                       
          && fmt_params->fattype != fat_type
                         
4000df34:	c4 0f bd 7e 	ldub  [ %fp + -642 ], %g2
                     
4000df38:	80 a0 a0 ff 	cmp  %g2, 0xff
                                
4000df3c:	02 80 02 e6 	be  4000ead4 <msdos_format+0x1104>
            <== NEVER TAKEN
4000df40:	c2 07 bd 50 	ld  [ %fp + -688 ], %g1
                       
          && fmt_params->totl_sector_cnt > 0 ) {
                     
4000df44:	80 a0 60 00 	cmp  %g1, 0
                                   
4000df48:	02 80 00 a9 	be  4000e1ec <msdos_format+0x81c>
             <== NEVER TAKEN
4000df4c:	01 00 00 00 	nop 
                                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
                
4000df50:	37 10 00 00 	sethi  %hi(0x40000000), %i3
                   
  uint32_t ms_sectors_per_cluster_limit_FAT12 =
                      
4000df54:	f0 27 bd 38 	st  %i0, [ %fp + -712 ]
                       
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
                
4000df58:	9a 87 40 1b 	addcc  %i5, %i3, %o5
                          
4000df5c:	83 33 60 1e 	srl  %o5, 0x1e, %g1
                           
4000df60:	b4 10 20 00 	clr  %i2
                                      
4000df64:	98 47 00 1a 	addx  %i4, %i2, %o4
                           
4000df68:	85 2b 20 02 	sll  %o4, 2, %g2
                              
4000df6c:	b6 10 80 01 	or  %g2, %g1, %i3
                             
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
    
4000df70:	03 10 00 a7 	sethi  %hi(0x40029c00), %g1
                   
4000df74:	82 10 62 d0 	or  %g1, 0x2d0, %g1	! 40029ed0 <_Thread_queue_Operations_default+0xf4>

      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {

4000df78:	23 00 00 04 	sethi  %hi(0x1000), %l1
                       
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
    
4000df7c:	c2 27 bd 3c 	st  %g1, [ %fp + -708 ]
                       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =
                      
4000df80:	2b 00 00 20 	sethi  %hi(0x8000), %l5
                       
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {

4000df84:	03 00 00 3f 	sethi  %hi(0xfc00), %g1
                       
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;
                
4000df88:	a4 10 20 00 	clr  %l2
                                      
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {

4000df8c:	29 00 00 40 	sethi  %hi(0x10000), %l4
                      
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {

4000df90:	a6 10 63 f5 	or  %g1, 0x3f5, %l3
                           
  uint32_t ms_sectors_per_cluster_limit_FAT16 =
                      
4000df94:	aa 15 60 01 	or  %l5, 1, %l5
                               
  uint32_t ms_sectors_per_cluster_limit_FAT12 =
                      
4000df98:	ac 14 60 01 	or  %l1, 1, %l6
                               
      if (ret_val == 0 && rqdata != NULL)
                            
4000df9c:	80 a6 60 00 	cmp  %i1, 0
                                   
4000dfa0:	02 80 02 00 	be  4000e7a0 <msdos_format+0xdd0>
             
4000dfa4:	d6 07 bd 58 	ld  [ %fp + -680 ], %o3
                       
        fmt_params->skip_alignment = rqdata->skip_alignment;
         
4000dfa8:	c2 0e 60 16 	ldub  [ %i1 + 0x16 ], %g1
                     
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
    
4000dfac:	d4 07 bd 3c 	ld  [ %fp + -708 ], %o2
                       
        fmt_params->skip_alignment = rqdata->skip_alignment;
         
4000dfb0:	c2 2f bd 9c 	stb  %g1, [ %fp + -612 ]
                      
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
    
4000dfb4:	92 10 20 02 	mov  2, %o1
                                   
4000dfb8:	7f ff fd c7 	call  4000d6d4 <msdos_format_printf>
          
4000dfbc:	90 10 00 19 	mov  %i1, %o0
                                 
        if (fmt_params->fattype == FAT_FAT32) {
                      
4000dfc0:	ee 0f bd 7e 	ldub  [ %fp + -642 ], %l7
                     
4000dfc4:	ba 0d e0 ff 	and  %l7, 0xff, %i5
                           
4000dfc8:	80 a7 60 04 	cmp  %i5, 4
                                   
4000dfcc:	02 80 01 fe 	be  4000e7c4 <msdos_format+0xdf4>
             
4000dfd0:	82 10 00 17 	mov  %l7, %g1
                                 
          fmt_params->rsvd_sector_cnt = 1;
                           
4000dfd4:	84 10 20 01 	mov  1, %g2
                                   
4000dfd8:	c4 27 bd 54 	st  %g2, [ %fp + -684 ]
                       
              (rqdata->files_per_root_dir > 0)) {
                    
4000dfdc:	c6 06 60 10 	ld  [ %i1 + 0x10 ], %g3
                       
          if ((rqdata != NULL) &&
                                    
4000dfe0:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000dfe4:	02 80 02 0f 	be  4000e820 <msdos_format+0xe50>
             
4000dfe8:	80 a7 60 02 	cmp  %i5, 2
                                   
4000dfec:	86 00 ff ff 	add  %g3, -1, %g3
                             
4000dff0:	96 10 20 01 	mov  1, %o3
                                   
                                           (2*fmt_params->bytes_per_sector/

4000dff4:	f8 07 bd 4c 	ld  [ %fp + -692 ], %i4
                       
4000dff8:	83 2f 20 01 	sll  %i4, 1, %g1
                              
4000dffc:	85 30 60 05 	srl  %g1, 5, %g2
                              
          fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +

4000e000:	86 00 80 03 	add  %g2, %g3, %g3
                            
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %

4000e004:	81 80 20 00 	wr  %g0, %y
                                   
4000e008:	01 00 00 00 	nop 
                                          
4000e00c:	01 00 00 00 	nop 
                                          
4000e010:	01 00 00 00 	nop 
                                          
4000e014:	82 70 c0 02 	udiv  %g3, %g2, %g1
                           
4000e018:	82 58 40 02 	smul  %g1, %g2, %g1
                           
4000e01c:	c2 27 bd 64 	st  %g1, [ %fp + -668 ]
                       
4000e020:	83 28 60 05 	sll  %g1, 5, %g1
                              
4000e024:	9a 07 3f ff 	add  %i4, -1, %o5
                             
            + fmt_params->bytes_per_sector - 1)
                      
4000e028:	82 03 40 01 	add  %o5, %g1, %g1
                            
           / fmt_params->bytes_per_sector);
                          
4000e02c:	81 80 20 00 	wr  %g0, %y
                                   
4000e030:	01 00 00 00 	nop 
                                          
4000e034:	01 00 00 00 	nop 
                                          
4000e038:	01 00 00 00 	nop 
                                          
4000e03c:	92 70 40 1c 	udiv  %g1, %i4, %o1
                           
        fmt_params->root_dir_sectors =
                               
4000e040:	d2 27 bd 68 	st  %o1, [ %fp + -664 ]
                       
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {

4000e044:	81 80 20 00 	wr  %g0, %y
                                   
4000e048:	01 00 00 00 	nop 
                                          
4000e04c:	01 00 00 00 	nop 
                                          
4000e050:	01 00 00 00 	nop 
                                          
4000e054:	84 75 00 1c 	udiv  %l4, %i4, %g2
                           
        ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,

4000e058:	c2 07 bd 58 	ld  [ %fp + -680 ], %g1
                       
4000e05c:	d8 07 bd 50 	ld  [ %fp + -688 ], %o4
                       
4000e060:	de 0f bd 7c 	ldub  [ %fp + -644 ], %o7
                     
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {

4000e064:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000e068:	08 80 00 06 	bleu  4000e080 <msdos_format+0x6b0>
           <== ALWAYS TAKEN
4000e06c:	f0 0f bd 9c 	ldub  [ %fp + -612 ], %i0
                     
    sectors_per_cluster /= 2;
                                        
4000e070:	83 30 60 01 	srl  %g1, 1, %g1
                              <== NOT EXECUTED
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {

4000e074:	80 a0 40 02 	cmp  %g1, %g2
                                 <== NOT EXECUTED
4000e078:	38 bf ff ff 	bgu,a   4000e074 <msdos_format+0x6a4>
         <== NOT EXECUTED
4000e07c:	83 30 60 01 	srl  %g1, 1, %g1
                              <== NOT EXECUTED
    fatdata_sect_cnt = total_sector_cnt
                              
4000e080:	94 23 00 0b 	sub  %o4, %o3, %o2
                            
4000e084:	9e 0b e0 ff 	and  %o7, 0xff, %o7
                           
4000e088:	b0 0e 20 ff 	and  %i0, 0xff, %i0
                           
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e08c:	96 02 ff ff 	add  %o3, -1, %o3
                             
4000e090:	90 02 7f ff 	add  %o1, -1, %o0
                             
  if (! skip_alignment)
                                              
4000e094:	80 a6 20 00 	cmp  %i0, 0
                                   
4000e098:	12 80 01 40 	bne  4000e598 <msdos_format+0xbc8>
            
4000e09c:	80 a7 60 01 	cmp  %i5, 1
                                   
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e0a0:	84 20 00 01 	neg  %g1, %g2
                                 
4000e0a4:	86 02 c0 01 	add  %o3, %g1, %g3
                            
4000e0a8:	86 08 c0 02 	and  %g3, %g2, %g3
                            
    if (fattype == FAT_FAT12) {
                                      
4000e0ac:	02 80 01 6a 	be  4000e654 <msdos_format+0xc84>
             
4000e0b0:	86 23 00 03 	sub  %o4, %g3, %g3
                            
    else if (fattype == FAT_FAT16) {
                                 
4000e0b4:	80 a7 60 02 	cmp  %i5, 2
                                   
4000e0b8:	22 80 01 b8 	be,a   4000e798 <msdos_format+0xdc8>
          
4000e0bc:	88 02 00 01 	add  %o0, %g1, %g4
                            
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
    
4000e0c0:	81 80 20 00 	wr  %g0, %y
                                   
4000e0c4:	01 00 00 00 	nop 
                                          
4000e0c8:	01 00 00 00 	nop 
                                          
4000e0cc:	01 00 00 00 	nop 
                                          
4000e0d0:	84 70 c0 01 	udiv  %g3, %g1, %g2
                           
      fat_capacity        = fatdata_cluster_cnt * 4;
                 
4000e0d4:	89 28 a0 02 	sll  %g2, 2, %g4
                              
                        + (bytes_per_sector - 1))
                    
4000e0d8:	88 03 40 04 	add  %o5, %g4, %g4
                            
4000e0dc:	b4 00 7f ff 	add  %g1, -1, %i2
                             
    sectors_per_fat = ((fat_capacity
                                 
4000e0e0:	81 80 20 00 	wr  %g0, %y
                                   
4000e0e4:	01 00 00 00 	nop 
                                          
4000e0e8:	01 00 00 00 	nop 
                                          
4000e0ec:	01 00 00 00 	nop 
                                          
4000e0f0:	86 71 00 1c 	udiv  %g4, %i4, %g3
                           
  if (! skip_alignment)
                                              
4000e0f4:	80 a6 20 00 	cmp  %i0, 0
                                   
    fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,
   
4000e0f8:	86 58 c0 0f 	smul  %g3, %o7, %g3
                           
  if (! skip_alignment)
                                              
4000e0fc:	12 80 00 05 	bne  4000e110 <msdos_format+0x740>
            
4000e100:	88 00 c0 1a 	add  %g3, %i2, %g4
                            
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e104:	86 20 00 01 	neg  %g1, %g3
                                 
4000e108:	86 08 c0 04 	and  %g3, %g4, %g3
                            
4000e10c:	88 00 c0 1a 	add  %g3, %i2, %g4
                            
                         / sectors_per_cluster));
                    
4000e110:	81 80 20 00 	wr  %g0, %y
                                   
4000e114:	01 00 00 00 	nop 
                                          
4000e118:	01 00 00 00 	nop 
                                          
4000e11c:	01 00 00 00 	nop 
                                          
4000e120:	b4 71 00 01 	udiv  %g4, %g1, %i2
                           
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||

4000e124:	80 a7 60 01 	cmp  %i5, 1
                                   
4000e128:	02 80 01 29 	be  4000e5cc <msdos_format+0xbfc>
             
4000e12c:	84 20 80 1a 	sub  %g2, %i2, %g2
                            
4000e130:	80 a7 60 02 	cmp  %i5, 2
                                   
4000e134:	12 80 00 09 	bne  4000e158 <msdos_format+0x788>
            
4000e138:	80 a0 80 13 	cmp  %g2, %l3
                                 
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {

4000e13c:	28 80 01 54 	bleu,a   4000e68c <msdos_format+0xcbc>
        
4000e140:	c2 27 bd 58 	st  %g1, [ %fp + -680 ]
                       
      sectors_per_cluster *= 2;
                                      
4000e144:	83 28 60 01 	sll  %g1, 1, %g1
                              
    } else if ((sectors_per_cluster * bytes_per_sector)
              
4000e148:	88 5f 00 01 	smul  %i4, %g1, %g4
                           
4000e14c:	80 a1 00 14 	cmp  %g4, %l4
                                 
4000e150:	08 bf ff d2 	bleu  4000e098 <msdos_format+0x6c8>
           <== ALWAYS TAKEN
4000e154:	80 a6 20 00 	cmp  %i0, 0
                                   
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;
              
4000e158:	81 80 20 00 	wr  %g0, %y
                                   
4000e15c:	01 00 00 00 	nop 
                                          
4000e160:	01 00 00 00 	nop 
                                          
4000e164:	01 00 00 00 	nop 
                                          
4000e168:	88 70 c0 0f 	udiv  %g3, %o7, %g4
                           
        fmt_params->sectors_per_cluster = sectors_per_cluster_adj;
   
4000e16c:	c2 27 bd 58 	st  %g1, [ %fp + -680 ]
                       
  uint32_t ms_sectors_per_cluster_limit_FAT12 =
                      
4000e170:	81 80 20 00 	wr  %g0, %y
                                   
4000e174:	01 00 00 00 	nop 
                                          
4000e178:	01 00 00 00 	nop 
                                          
4000e17c:	01 00 00 00 	nop 
                                          
4000e180:	86 75 80 1c 	udiv  %l6, %i4, %g3
                           
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;
              
4000e184:	c8 27 bd 5c 	st  %g4, [ %fp + -676 ]
                       
  if (   number_of_clusters < FAT_FAT12_MAX_CLN
                      
4000e188:	80 a0 c0 01 	cmp  %g3, %g1
                                 
  uint32_t ms_sectors_per_cluster_limit_FAT16 =
                      
4000e18c:	81 80 20 00 	wr  %g0, %y
                                   
4000e190:	01 00 00 00 	nop 
                                          
4000e194:	01 00 00 00 	nop 
                                          
4000e198:	01 00 00 00 	nop 
                                          
4000e19c:	88 75 40 1c 	udiv  %l5, %i4, %g4
                           
  if (   number_of_clusters < FAT_FAT12_MAX_CLN
                      
4000e1a0:	0a 80 02 52 	bcs  4000eae8 <msdos_format+0x1118>
           
4000e1a4:	80 a0 af f4 	cmp  %g2, 0xff4
                               
4000e1a8:	18 80 02 50 	bgu  4000eae8 <msdos_format+0x1118>
           <== ALWAYS TAKEN
4000e1ac:	86 10 20 01 	mov  1, %g3
                                   
          if (fat_type != fmt_params->fattype) {
                     
4000e1b0:	ae 08 e0 ff 	and  %g3, 0xff, %l7
                           
4000e1b4:	80 a7 40 17 	cmp  %i5, %l7
                                 
4000e1b8:	12 80 01 a1 	bne  4000e83c <msdos_format+0xe6c>
            <== ALWAYS TAKEN
4000e1bc:	c6 2f bd 7e 	stb  %g3, [ %fp + -642 ]
                      
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {
  
4000e1c0:	ae 1f 40 17 	xor  %i5, %l7, %l7
                            
4000e1c4:	84 10 00 0c 	mov  %o4, %g2
                                 
4000e1c8:	80 a0 00 17 	cmp  %g0, %l7
                                 
      ++iteration_cnt;
                                               
4000e1cc:	a4 04 a0 01 	inc  %l2
                                      
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {
  
4000e1d0:	82 40 20 00 	addx  %g0, 0, %g1
                             
          && fmt_params->fattype != fat_type
                         
4000e1d4:	80 88 60 ff 	btst  0xff, %g1
                               
4000e1d8:	02 80 01 bb 	be  4000e8c4 <msdos_format+0xef4>
             
4000e1dc:	80 a3 20 00 	cmp  %o4, 0
                                   
          && fmt_params->totl_sector_cnt > 0 ) {
                     
4000e1e0:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e1e4:	12 bf ff 6f 	bne  4000dfa0 <msdos_format+0x5d0>
            <== ALWAYS TAKEN
4000e1e8:	80 a6 60 00 	cmp  %i1, 0
                                   
    errno = EINVAL;
                                                  
4000e1ec:	40 00 33 d4 	call  4001b13c <__errno>
                      
4000e1f0:	b0 10 3f ff 	mov  -1, %i0
                                  
4000e1f4:	82 10 20 16 	mov  0x16, %g1
                                
4000e1f8:	fa 07 bd 54 	ld  [ %fp + -684 ], %i5
                       
4000e1fc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
4000e200:	c2 0f bd 7c 	ldub  [ %fp + -644 ], %g1
                     
4000e204:	c6 07 bd 5c 	ld  [ %fp + -676 ], %g3
                       
4000e208:	82 58 40 03 	smul  %g1, %g3, %g1
                           
4000e20c:	82 00 40 1d 	add  %g1, %i5, %g1
                            
    fmt_params->root_dir_start_sec =
                                 
4000e210:	c2 27 bd 6c 	st  %g1, [ %fp + -660 ]
                       
  if (fmt_params->root_dir_sectors > 0) {
                            
4000e214:	c4 07 bd 68 	ld  [ %fp + -664 ], %g2
                       
4000e218:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e21c:	32 bf fe 2c 	bne,a   4000dacc <msdos_format+0xfc>
          <== ALWAYS TAKEN
4000e220:	c4 27 bd 70 	st  %g2, [ %fp + -656 ]
                       
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;

4000e224:	c2 07 bd 58 	ld  [ %fp + -680 ], %g1
                       <== NOT EXECUTED
4000e228:	10 bf fe 29 	b  4000dacc <msdos_format+0xfc>
               
4000e22c:	c2 27 bd 70 	st  %g1, [ %fp + -656 ]
                       
    if ((ret_val == 0) &&
                                            
4000e230:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e234:	02 80 00 0e 	be  4000e26c <msdos_format+0x89c>
             
4000e238:	92 10 20 02 	mov  2, %o1
                                   
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
      
4000e23c:	90 10 00 19 	mov  %i1, %o0
                                 
4000e240:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
4000e244:	7f ff fd 24 	call  4000d6d4 <msdos_format_printf>
          
4000e248:	94 12 a3 20 	or  %o2, 0x320, %o2	! 40029f20 <_Thread_queue_Operations_default+0x144>

      ret_val = msdos_format_write_sec(fd,
                           
4000e24c:	d4 07 bd 4c 	ld  [ %fp + -692 ], %o2
                       
4000e250:	d2 07 bd 74 	ld  [ %fp + -652 ], %o1
                       
4000e254:	96 07 be 00 	add  %fp, -512, %o3
                           
4000e258:	7f ff fd 39 	call  4000d73c <msdos_format_write_sec>
       
4000e25c:	90 10 00 10 	mov  %l0, %o0
                                 
  if ((ret_val == 0) &&
                                              
4000e260:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000e264:	12 bf fe e3 	bne  4000ddf0 <msdos_format+0x420>
            <== NEVER TAKEN
4000e268:	01 00 00 00 	nop 
                                          
      (fmt_params.fsinfo_sec != 0)) {
                                
4000e26c:	fa 07 bd 78 	ld  [ %fp + -648 ], %i5
                       
  if ((ret_val == 0) &&
                                              
4000e270:	80 a7 60 00 	cmp  %i5, 0
                                   
4000e274:	12 80 00 72 	bne  4000e43c <msdos_format+0xa6c>
            
4000e278:	d8 07 bd 4c 	ld  [ %fp + -692 ], %o4
                       
       fmt_params.fat_num*fmt_params.sectors_per_fat,/* sector count */

4000e27c:	d6 0f bd 7c 	ldub  [ %fp + -644 ], %o3
                     
    ret_val = msdos_format_fill_sectors
                              
4000e280:	c2 07 bd 5c 	ld  [ %fp + -676 ], %g1
                       
4000e284:	d4 07 bd 54 	ld  [ %fp + -684 ], %o2
                       
4000e288:	9a 10 20 00 	clr  %o5
                                      
4000e28c:	96 5a c0 01 	smul  %o3, %g1, %o3
                           
4000e290:	92 10 00 10 	mov  %l0, %o1
                                 
4000e294:	7f ff fd 3d 	call  4000d788 <msdos_format_fill_sectors>
    
4000e298:	90 10 00 19 	mov  %i1, %o0
                                 
  if (ret_val == 0) {
                                                
4000e29c:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000e2a0:	12 bf fe d4 	bne  4000ddf0 <msdos_format+0x420>
            <== NEVER TAKEN
4000e2a4:	d8 07 bd 4c 	ld  [ %fp + -692 ], %o4
                       
    ret_val = msdos_format_fill_sectors
                              
4000e2a8:	d6 07 bd 70 	ld  [ %fp + -656 ], %o3
                       
4000e2ac:	d4 07 bd 6c 	ld  [ %fp + -660 ], %o2
                       
4000e2b0:	9a 10 20 00 	clr  %o5
                                      
4000e2b4:	92 10 00 10 	mov  %l0, %o1
                                 
4000e2b8:	7f ff fd 34 	call  4000d788 <msdos_format_fill_sectors>
    
4000e2bc:	90 10 00 19 	mov  %i1, %o0
                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {
               
4000e2c0:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000e2c4:	12 bf fe cb 	bne  4000ddf0 <msdos_format+0x420>
            <== NEVER TAKEN
4000e2c8:	c2 0f bd 94 	ldub  [ %fp + -620 ], %g1
                     
4000e2cc:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e2d0:	12 80 00 44 	bne  4000e3e0 <msdos_format+0xa10>
            
4000e2d4:	94 10 22 00 	mov  0x200, %o2
                               
    memset(tmp_sec,0,sizeof(tmp_sec));
                               
4000e2d8:	92 10 20 00 	clr  %o1
                                      
4000e2dc:	40 00 36 c5 	call  4001bdf0 <memset>
                       
4000e2e0:	90 07 be 00 	add  %fp, -512, %o0
                           
    switch(fmt_params.fattype) {
                                     
4000e2e4:	c2 0f bd 7e 	ldub  [ %fp + -642 ], %g1
                     
4000e2e8:	80 a0 60 02 	cmp  %g1, 2
                                   
4000e2ec:	02 80 00 99 	be  4000e550 <msdos_format+0xb80>
             
4000e2f0:	80 a0 60 04 	cmp  %g1, 4
                                   
4000e2f4:	02 80 00 7f 	be  4000e4f0 <msdos_format+0xb20>
             
4000e2f8:	80 a0 60 01 	cmp  %g1, 1
                                   
4000e2fc:	02 80 00 8e 	be  4000e534 <msdos_format+0xb64>
             <== ALWAYS TAKEN
4000e300:	c2 0f bd 7d 	ldub  [ %fp + -643 ], %g1
                     
      errno = EINVAL;
                                                
4000e304:	40 00 33 8e 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4000e308:	ba 10 3f ff 	mov  -1, %i5
                                  <== NOT EXECUTED
4000e30c:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
4000e310:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
    if (fmt_params.fattype == FAT_FAT32) {
                           
4000e314:	c2 0f bd 7e 	ldub  [ %fp + -642 ], %g1
                     <== NOT EXECUTED
4000e318:	80 a0 60 04 	cmp  %g1, 4
                                   <== NOT EXECUTED
4000e31c:	22 80 00 83 	be,a   4000e528 <msdos_format+0xb58>
          <== NOT EXECUTED
4000e320:	03 3e 3f ff 	sethi  %hi(0xf8fffc00), %g1
                   <== NOT EXECUTED
  if (! skip_alignment)
                                              
4000e324:	c4 0f bd 9c 	ldub  [ %fp + -612 ], %g2
                     
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,
     
4000e328:	f8 07 bd 54 	ld  [ %fp + -684 ], %i4
                       
  if (! skip_alignment)
                                              
4000e32c:	80 a0 a0 00 	cmp  %g2, 0
                                   
4000e330:	12 80 00 06 	bne  4000e348 <msdos_format+0x978>
            
4000e334:	c2 07 bd 58 	ld  [ %fp + -680 ], %g1
                       
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e338:	b8 07 00 01 	add  %i4, %g1, %i4
                            
4000e33c:	82 20 00 01 	neg  %g1
                                      
4000e340:	b8 07 3f ff 	add  %i4, -1, %i4
                             
4000e344:	b8 0f 00 01 	and  %i4, %g1, %i4
                            
    for (i = 0;
                                                      
4000e348:	c2 0f bd 7c 	ldub  [ %fp + -644 ], %g1
                     
4000e34c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e350:	02 80 01 d1 	be  4000ea94 <msdos_format+0x10c4>
            <== NEVER TAKEN
4000e354:	80 a7 60 00 	cmp  %i5, 0
                                   
         (i < fmt_params.fat_num) && (ret_val == 0);
                 
4000e358:	02 80 00 06 	be  4000e370 <msdos_format+0x9a0>
             <== ALWAYS TAKEN
4000e35c:	d2 07 bd 5c 	ld  [ %fp + -676 ], %o1
                       
    ret_val = -1;
                                                    
4000e360:	10 bf fe a4 	b  4000ddf0 <msdos_format+0x420>
              <== NOT EXECUTED
4000e364:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
         (i < fmt_params.fat_num) && (ret_val == 0);
                 
4000e368:	12 80 00 19 	bne  4000e3cc <msdos_format+0x9fc>
            <== NEVER TAKEN
4000e36c:	d2 07 bd 5c 	ld  [ %fp + -676 ], %o1
                       
      ret_val = msdos_format_write_sec
                               
4000e370:	d4 07 bd 4c 	ld  [ %fp + -692 ], %o2
                       
         + (i * fmt_params.sectors_per_fat),
                         
4000e374:	92 5f 40 09 	smul  %i5, %o1, %o1
                           
      ret_val = msdos_format_write_sec
                               
4000e378:	96 07 be 00 	add  %fp, -512, %o3
                           
4000e37c:	92 02 40 1c 	add  %o1, %i4, %o1
                            
4000e380:	7f ff fc ef 	call  4000d73c <msdos_format_write_sec>
       
4000e384:	90 10 00 10 	mov  %l0, %o0
                                 
         (i < fmt_params.fat_num) && (ret_val == 0);
                 
4000e388:	c2 0f bd 7c 	ldub  [ %fp + -644 ], %g1
                     
         i++) {
                                                      
4000e38c:	ba 07 60 01 	inc  %i5
                                      
    for (i = 0;
                                                      
4000e390:	80 a0 40 1d 	cmp  %g1, %i5
                                 
4000e394:	14 bf ff f5 	bg  4000e368 <msdos_format+0x998>
             
4000e398:	80 a2 20 00 	cmp  %o0, 0
                                   
  if (ret_val == 0 && rqdata != NULL && rqdata->sync_device) {
       
4000e39c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e3a0:	12 80 00 0b 	bne  4000e3cc <msdos_format+0x9fc>
            <== NEVER TAKEN
4000e3a4:	80 8e e0 ff 	btst  0xff, %i3
                               
4000e3a8:	22 80 00 0a 	be,a   4000e3d0 <msdos_format+0xa00>
          
4000e3ac:	b0 10 00 08 	mov  %o0, %i0
                                 
4000e3b0:	c2 0e 60 17 	ldub  [ %i1 + 0x17 ], %g1
                     
4000e3b4:	80 a0 60 00 	cmp  %g1, 0
                                   
4000e3b8:	02 bf fe 8e 	be  4000ddf0 <msdos_format+0x420>
             
4000e3bc:	13 08 00 10 	sethi  %hi(0x20004000), %o1
                   
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);
                  
}
                                                                    

                                                                     
static inline int rtems_disk_fd_sync(int fd)
                         
{
                                                                    
  return ioctl(fd, RTEMS_BLKIO_SYNCDEV);
                             
4000e3c0:	90 10 00 10 	mov  %l0, %o0
                                 
4000e3c4:	40 00 1d fd 	call  40015bb8 <ioctl>
                        
4000e3c8:	92 12 62 06 	or  %o1, 0x206, %o1
                           
4000e3cc:	b0 10 00 08 	mov  %o0, %i0
                                 
    close(fd);
                                                       
4000e3d0:	7f ff db a0 	call  40005250 <close>
                        
4000e3d4:	90 10 00 10 	mov  %l0, %o0
                                 
}
                                                                    
4000e3d8:	81 c7 e0 08 	ret 
                                          
4000e3dc:	81 e8 00 00 	restore 
                                      
    memset(tmp_sec,0,sizeof(tmp_sec));
                               
4000e3e0:	92 10 20 00 	clr  %o1
                                      
4000e3e4:	40 00 36 83 	call  4001bdf0 <memset>
                       
4000e3e8:	90 07 be 00 	add  %fp, -512, %o0
                           
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);

4000e3ec:	c2 0f bd 92 	ldub  [ %fp + -622 ], %g1
                     
4000e3f0:	c6 07 bd 8c 	ld  [ %fp + -628 ], %g3
                       
4000e3f4:	c4 17 bd 90 	lduh  [ %fp + -624 ], %g2
                     
4000e3f8:	c8 07 bd 88 	ld  [ %fp + -632 ], %g4
                       
4000e3fc:	c2 2f be 0a 	stb  %g1, [ %fp + -502 ]
                      
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;
                 
4000e400:	82 10 20 08 	mov  8, %g1
                                   
    ret_val = msdos_format_write_sec
                                 
4000e404:	d4 07 bd 4c 	ld  [ %fp + -692 ], %o2
                       
4000e408:	d2 07 bd 6c 	ld  [ %fp + -660 ], %o1
                       
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);

4000e40c:	c8 27 be 00 	st  %g4, [ %fp + -512 ]
                       
    ret_val = msdos_format_write_sec
                                 
4000e410:	96 07 be 00 	add  %fp, -512, %o3
                           
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);

4000e414:	c6 27 be 04 	st  %g3, [ %fp + -508 ]
                       
    ret_val = msdos_format_write_sec
                                 
4000e418:	90 10 00 10 	mov  %l0, %o0
                                 
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);

4000e41c:	c4 37 be 08 	sth  %g2, [ %fp + -504 ]
                      
    ret_val = msdos_format_write_sec
                                 
4000e420:	7f ff fc c7 	call  4000d73c <msdos_format_write_sec>
       
4000e424:	c2 2f be 0b 	stb  %g1, [ %fp + -501 ]
                      
  if (ret_val == 0) {
                                                
4000e428:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e42c:	02 bf ff ab 	be  4000e2d8 <msdos_format+0x908>
             <== ALWAYS TAKEN
4000e430:	94 10 22 00 	mov  0x200, %o2
                               
4000e434:	10 bf ff e7 	b  4000e3d0 <msdos_format+0xa00>
              <== NOT EXECUTED
4000e438:	b0 10 00 08 	mov  %o0, %i0
                                 <== NOT EXECUTED
4000e43c:	d8 27 bd 3c 	st  %o4, [ %fp + -708 ]
                       
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);
                            
4000e440:	94 10 22 00 	mov  0x200, %o2
                               
4000e444:	92 10 20 00 	clr  %o1
                                      
4000e448:	40 00 36 6a 	call  4001bdf0 <memset>
                       
4000e44c:	90 07 be 00 	add  %fp, -512, %o0
                           
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );

4000e450:	03 14 94 98 	sethi  %hi(0x52526000), %g1
                   
4000e454:	82 10 61 41 	or  %g1, 0x141, %g1	! 52526141 <RAM_END+0x12126141>

4000e458:	c2 27 be 00 	st  %g1, [ %fp + -512 ]
                       
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);

4000e45c:	03 00 00 15 	sethi  %hi(0x5400), %g1
                       
4000e460:	82 10 61 aa 	or  %g1, 0x1aa, %g1	! 55aa <_Configuration_Interrupt_stack_size+0x45aa>

  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);

4000e464:	84 10 3f ff 	mov  -1, %g2
                                  
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);

4000e468:	c2 37 bf fe 	sth  %g1, [ %fp + -2 ]
                        
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);

4000e46c:	03 1c 9c 90 	sethi  %hi(0x72724000), %g1
                   
    ret_val = msdos_format_write_sec(fd,
                             
4000e470:	d8 07 bd 3c 	ld  [ %fp + -708 ], %o4
                       
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);

4000e474:	82 10 61 61 	or  %g1, 0x161, %g1
                           
    ret_val = msdos_format_write_sec(fd,
                             
4000e478:	96 07 be 00 	add  %fp, -512, %o3
                           
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);

4000e47c:	c4 27 bf e8 	st  %g2, [ %fp + -24 ]
                        
    ret_val = msdos_format_write_sec(fd,
                             
4000e480:	94 10 00 0c 	mov  %o4, %o2
                                 
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);

4000e484:	c2 27 bf e4 	st  %g1, [ %fp + -28 ]
                        
    ret_val = msdos_format_write_sec(fd,
                             
4000e488:	92 10 00 1d 	mov  %i5, %o1
                                 
  FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO, 0xffffffff);

4000e48c:	c4 27 bf ec 	st  %g2, [ %fp + -20 ]
                        
    ret_val = msdos_format_write_sec(fd,
                             
4000e490:	7f ff fc ab 	call  4000d73c <msdos_format_write_sec>
       
4000e494:	90 10 00 10 	mov  %l0, %o0
                                 
  if (ret_val == 0) {
                                                
4000e498:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000e49c:	12 bf fe 55 	bne  4000ddf0 <msdos_format+0x420>
            <== NEVER TAKEN
4000e4a0:	d8 07 bd 4c 	ld  [ %fp + -692 ], %o4
                       
       fmt_params.fat_num*fmt_params.sectors_per_fat,/* sector count */

4000e4a4:	10 bf ff 77 	b  4000e280 <msdos_format+0x8b0>
              
4000e4a8:	d6 0f bd 7c 	ldub  [ %fp + -644 ], %o3
                     
    ret_val = msdos_format_fill_sectors
                              
4000e4ac:	d6 07 bd 50 	ld  [ %fp + -688 ], %o3
                       <== NOT EXECUTED
4000e4b0:	9a 10 3f e5 	mov  -27, %o5
                                 <== NOT EXECUTED
4000e4b4:	94 10 20 00 	clr  %o2
                                      <== NOT EXECUTED
4000e4b8:	92 10 00 10 	mov  %l0, %o1
                                 <== NOT EXECUTED
4000e4bc:	7f ff fc b3 	call  4000d788 <msdos_format_fill_sectors>
    <== NOT EXECUTED
4000e4c0:	90 10 00 19 	mov  %i1, %o0
                                 <== NOT EXECUTED
  if (ret_val == 0) {
                                                
4000e4c4:	b0 92 20 00 	orcc  %o0, 0, %i0
                             <== NOT EXECUTED
4000e4c8:	12 bf fe 4a 	bne  4000ddf0 <msdos_format+0x420>
            <== NOT EXECUTED
4000e4cc:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000e4d0:	10 bf fd c6 	b  4000dbe8 <msdos_format+0x218>
              <== NOT EXECUTED
4000e4d4:	b6 10 20 01 	mov  1, %i3	! 1 <_TLS_Alignment>
              <== NOT EXECUTED
4000e4d8:	b9 30 60 10 	srl  %g1, 0x10, %i4
                           
4000e4dc:	a4 10 00 01 	mov  %g1, %l2
                                 
4000e4e0:	b1 30 60 18 	srl  %g1, 0x18, %i0
                           
  if (fmt_params->totl_sector_cnt < 0x10000) {
                       
4000e4e4:	b4 10 20 00 	clr  %i2
                                      
4000e4e8:	10 bf fd e4 	b  4000dc78 <msdos_format+0x2a8>
              
4000e4ec:	ba 10 20 00 	clr  %i5
                                      
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);
     
4000e4f0:	82 10 3f ff 	mov  -1, %g1
                                  
4000e4f4:	c4 0f bd 7d 	ldub  [ %fp + -643 ], %g2
                     
4000e4f8:	c4 2f be 00 	stb  %g2, [ %fp + -512 ]
                      
      FAT_SET_VAL32(tmp_sec,4,0xc0000000|FAT_FAT32_EOC);
             
4000e4fc:	84 10 3f f8 	mov  -8, %g2
                                  
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);
     
4000e500:	c2 2f be 01 	stb  %g1, [ %fp + -511 ]
                      
      FAT_SET_VAL32(tmp_sec,4,0xc0000000|FAT_FAT32_EOC);
             
4000e504:	ba 10 20 00 	clr  %i5
                                      
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);
     
4000e508:	c2 2f be 02 	stb  %g1, [ %fp + -510 ]
                      
4000e50c:	c2 2f be 03 	stb  %g1, [ %fp + -509 ]
                      
      FAT_SET_VAL32(tmp_sec,4,0xc0000000|FAT_FAT32_EOC);
             
4000e510:	c2 2f be 05 	stb  %g1, [ %fp + -507 ]
                      
4000e514:	c2 2f be 06 	stb  %g1, [ %fp + -506 ]
                      
4000e518:	82 10 3f cf 	mov  -49, %g1
                                 
4000e51c:	c4 2f be 04 	stb  %g2, [ %fp + -508 ]
                      
4000e520:	c2 2f be 07 	stb  %g1, [ %fp + -505 ]
                      
      FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);
                        
4000e524:	03 3e 3f ff 	sethi  %hi(0xf8fffc00), %g1
                   
4000e528:	82 10 63 0f 	or  %g1, 0x30f, %g1	! f8ffff0f <RAM_END+0xb8bfff0f>

4000e52c:	10 bf ff 7e 	b  4000e324 <msdos_format+0x954>
              
4000e530:	c2 27 be 08 	st  %g1, [ %fp + -504 ]
                       
      FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));
               
4000e534:	c2 2f be 00 	stb  %g1, [ %fp + -512 ]
                      
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));
         
4000e538:	82 10 3f 8f 	mov  -113, %g1
                                
      ret_val = -1;
                                                  
4000e53c:	ba 10 20 00 	clr  %i5
                                      
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));
         
4000e540:	c2 2f be 01 	stb  %g1, [ %fp + -511 ]
                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));
                  
4000e544:	82 10 3f ff 	mov  -1, %g1
                                  
4000e548:	10 bf ff 77 	b  4000e324 <msdos_format+0x954>
              
4000e54c:	c2 2f be 02 	stb  %g1, [ %fp + -510 ]
                      
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);
                 
4000e550:	c4 0f bd 7d 	ldub  [ %fp + -643 ], %g2
                     
      FAT_SET_VAL8(tmp_sec,1,0xff);
                                  
4000e554:	82 10 3f ff 	mov  -1, %g1
                                  
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);
                 
4000e558:	c4 2f be 00 	stb  %g2, [ %fp + -512 ]
                      
      ret_val = -1;
                                                  
4000e55c:	ba 10 20 00 	clr  %i5
                                      
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);
                        
4000e560:	84 10 3f f8 	mov  -8, %g2
                                  
      FAT_SET_VAL8(tmp_sec,1,0xff);
                                  
4000e564:	c2 2f be 01 	stb  %g1, [ %fp + -511 ]
                      
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);
                        
4000e568:	c4 2f be 02 	stb  %g2, [ %fp + -510 ]
                      
4000e56c:	10 bf ff 6e 	b  4000e324 <msdos_format+0x954>
              
4000e570:	c2 2f be 03 	stb  %g1, [ %fp + -509 ]
                      
      from = ""; /* default: make "from" point to empty string */
    
4000e574:	39 10 00 a7 	sethi  %hi(0x40029c00), %i4
                   
4000e578:	10 bf fd 7a 	b  4000db60 <msdos_format+0x190>
              
4000e57c:	b8 17 22 e8 	or  %i4, 0x2e8, %i4	! 40029ee8 <_Thread_queue_Operations_default+0x10c>

      from = "RTEMS"; /* default: make "from" point to OS Name */
    
4000e580:	10 bf fd 5c 	b  4000daf0 <msdos_format+0x120>
              
4000e584:	b8 17 22 20 	or  %i4, 0x220, %i4
                           
4000e588:	10 bf fd 44 	b  4000da98 <msdos_format+0xc8>
               <== NOT EXECUTED
4000e58c:	d8 07 bd 50 	ld  [ %fp + -688 ], %o4
                       <== NOT EXECUTED
      fmt_params->fat_num = 2;
                                       
4000e590:	10 bf fe 50 	b  4000ded0 <msdos_format+0x500>
              
4000e594:	c2 2f bd 7c 	stb  %g1, [ %fp + -644 ]
                      
    if (fattype == FAT_FAT12) {
                                      
4000e598:	02 80 00 3b 	be  4000e684 <msdos_format+0xcb4>
             
4000e59c:	86 10 00 0a 	mov  %o2, %g3
                                 
    else if (fattype == FAT_FAT16) {
                                 
4000e5a0:	80 a7 60 02 	cmp  %i5, 2
                                   
4000e5a4:	12 bf fe c7 	bne  4000e0c0 <msdos_format+0x6f0>
            <== NEVER TAKEN
4000e5a8:	84 10 00 09 	mov  %o1, %g2
                                 
      fatdata_sect_cnt    = fatdata_sect_cnt
                         
4000e5ac:	86 20 c0 02 	sub  %g3, %g2, %g3
                            
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
    
4000e5b0:	81 80 20 00 	wr  %g0, %y
                                   
4000e5b4:	01 00 00 00 	nop 
                                          
4000e5b8:	01 00 00 00 	nop 
                                          
4000e5bc:	01 00 00 00 	nop 
                                          
4000e5c0:	84 70 c0 01 	udiv  %g3, %g1, %g2
                           
      fat_capacity        = fatdata_cluster_cnt * 2;
                 
4000e5c4:	10 bf fe c5 	b  4000e0d8 <msdos_format+0x708>
              
4000e5c8:	89 28 a0 01 	sll  %g2, 1, %g4
                              
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||

4000e5cc:	80 a0 af f5 	cmp  %g2, 0xff5
                               
4000e5d0:	38 80 00 1c 	bgu,a   4000e640 <msdos_format+0xc70>
         
4000e5d4:	83 28 60 01 	sll  %g1, 1, %g1
                              
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;
              
4000e5d8:	81 80 20 00 	wr  %g0, %y
                                   
4000e5dc:	01 00 00 00 	nop 
                                          
4000e5e0:	01 00 00 00 	nop 
                                          
4000e5e4:	01 00 00 00 	nop 
                                          
4000e5e8:	88 70 c0 0f 	udiv  %g3, %o7, %g4
                           
        fmt_params->sectors_per_cluster = sectors_per_cluster_adj;
   
4000e5ec:	c2 27 bd 58 	st  %g1, [ %fp + -680 ]
                       
  uint32_t ms_sectors_per_cluster_limit_FAT12 =
                      
4000e5f0:	81 80 20 00 	wr  %g0, %y
                                   
4000e5f4:	01 00 00 00 	nop 
                                          
4000e5f8:	01 00 00 00 	nop 
                                          
4000e5fc:	01 00 00 00 	nop 
                                          
4000e600:	86 75 80 1c 	udiv  %l6, %i4, %g3
                           
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;
              
4000e604:	c8 27 bd 5c 	st  %g4, [ %fp + -676 ]
                       
  if (   number_of_clusters < FAT_FAT12_MAX_CLN
                      
4000e608:	80 a0 c0 01 	cmp  %g3, %g1
                                 
  uint32_t ms_sectors_per_cluster_limit_FAT16 =
                      
4000e60c:	81 80 20 00 	wr  %g0, %y
                                   
4000e610:	01 00 00 00 	nop 
                                          
4000e614:	01 00 00 00 	nop 
                                          
4000e618:	01 00 00 00 	nop 
                                          
4000e61c:	88 75 40 1c 	udiv  %l5, %i4, %g4
                           
  if (   number_of_clusters < FAT_FAT12_MAX_CLN
                      
4000e620:	0a 80 01 32 	bcs  4000eae8 <msdos_format+0x1118>
           
4000e624:	80 a0 af f4 	cmp  %g2, 0xff4
                               
4000e628:	38 80 01 31 	bgu,a   4000eaec <msdos_format+0x111c>
        <== NEVER TAKEN
4000e62c:	07 00 00 3f 	sethi  %hi(0xfc00), %g3
                       <== NOT EXECUTED
          fmt_params->fattype = msdos_get_fat_type(
                  
4000e630:	82 10 20 01 	mov  1, %g1
                                   
4000e634:	ae 10 20 01 	mov  1, %l7
                                   
4000e638:	10 bf fe e2 	b  4000e1c0 <msdos_format+0x7f0>
              
4000e63c:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {

4000e640:	88 5f 00 01 	smul  %i4, %g1, %g4
                           
4000e644:	80 a1 00 11 	cmp  %g4, %l1
                                 
4000e648:	08 bf fe 94 	bleu  4000e098 <msdos_format+0x6c8>
           <== ALWAYS TAKEN
4000e64c:	80 a6 20 00 	cmp  %i0, 0
                                   
4000e650:	30 bf ff e2 	b,a   4000e5d8 <msdos_format+0xc08>
           <== NOT EXECUTED
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e654:	88 02 00 01 	add  %o0, %g1, %g4
                            
4000e658:	84 09 00 02 	and  %g4, %g2, %g2
                            
      fatdata_sect_cnt    = fatdata_sect_cnt
                         
4000e65c:	86 20 c0 02 	sub  %g3, %g2, %g3
                            
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;
    
4000e660:	81 80 20 00 	wr  %g0, %y
                                   
4000e664:	01 00 00 00 	nop 
                                          
4000e668:	01 00 00 00 	nop 
                                          
4000e66c:	01 00 00 00 	nop 
                                          
4000e670:	84 70 c0 01 	udiv  %g3, %g1, %g2
                           
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;
             
4000e674:	89 28 a0 01 	sll  %g2, 1, %g4
                              
4000e678:	88 01 00 02 	add  %g4, %g2, %g4
                            
4000e67c:	10 bf fe 97 	b  4000e0d8 <msdos_format+0x708>
              
4000e680:	89 31 20 01 	srl  %g4, 1, %g4
                              
    return sectors;
                                                  
4000e684:	10 bf ff f6 	b  4000e65c <msdos_format+0xc8c>
              
4000e688:	84 10 00 09 	mov  %o1, %g2
                                 
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;
              
4000e68c:	81 80 20 00 	wr  %g0, %y
                                   
4000e690:	01 00 00 00 	nop 
                                          
4000e694:	01 00 00 00 	nop 
                                          
4000e698:	01 00 00 00 	nop 
                                          
4000e69c:	88 70 c0 0f 	udiv  %g3, %o7, %g4
                           
  uint32_t ms_sectors_per_cluster_limit_FAT12 =
                      
4000e6a0:	81 80 20 00 	wr  %g0, %y
                                   
4000e6a4:	01 00 00 00 	nop 
                                          
4000e6a8:	01 00 00 00 	nop 
                                          
4000e6ac:	01 00 00 00 	nop 
                                          
4000e6b0:	86 75 80 1c 	udiv  %l6, %i4, %g3
                           
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;
              
4000e6b4:	c8 27 bd 5c 	st  %g4, [ %fp + -676 ]
                       
  if (   number_of_clusters < FAT_FAT12_MAX_CLN
                      
4000e6b8:	80 a0 c0 01 	cmp  %g3, %g1
                                 
  uint32_t ms_sectors_per_cluster_limit_FAT16 =
                      
4000e6bc:	81 80 20 00 	wr  %g0, %y
                                   
4000e6c0:	01 00 00 00 	nop 
                                          
4000e6c4:	01 00 00 00 	nop 
                                          
4000e6c8:	01 00 00 00 	nop 
                                          
4000e6cc:	88 75 40 1c 	udiv  %l5, %i4, %g4
                           
  if (   number_of_clusters < FAT_FAT12_MAX_CLN
                      
4000e6d0:	0a 80 00 04 	bcs  4000e6e0 <msdos_format+0xd10>
            
4000e6d4:	80 a0 af f4 	cmp  %g2, 0xff4
                               
4000e6d8:	28 80 00 58 	bleu,a   4000e838 <msdos_format+0xe68>
        <== NEVER TAKEN
4000e6dc:	82 10 20 01 	mov  1, %g1
                                   <== NOT EXECUTED
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN
                 
4000e6e0:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000e6e4:	1a 80 00 45 	bcc  4000e7f8 <msdos_format+0xe28>
            
4000e6e8:	03 00 00 3f 	sethi  %hi(0xfc00), %g1
                       
          fmt_params->fattype = msdos_get_fat_type(
                  
4000e6ec:	82 10 20 04 	mov  4, %g1
                                   
4000e6f0:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      
      if ( (gigs & ( 1 << b) ) != 0 )
                                
4000e6f4:	86 10 20 01 	mov  1, %g3
                                   
    for ( b = 31; b > 0; b-- ) {
                                     
4000e6f8:	82 10 20 1f 	mov  0x1f, %g1
                                
          if (fat_type != fmt_params->fattype) {
                     
4000e6fc:	80 a7 60 04 	cmp  %i5, 4
                                   
4000e700:	12 80 00 06 	bne  4000e718 <msdos_format+0xd48>
            
4000e704:	ae 0d e0 ff 	and  %l7, 0xff, %l7
                           
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {
  
4000e708:	10 bf fe af 	b  4000e1c4 <msdos_format+0x7f4>
              
4000e70c:	ae 1f 40 17 	xor  %i5, %l7, %l7
                            
    for ( b = 31; b > 0; b-- ) {
                                     
4000e710:	02 80 00 06 	be  4000e728 <msdos_format+0xd58>
             <== NEVER TAKEN
4000e714:	84 10 20 01 	mov  1, %g2
                                   
      if ( (gigs & ( 1 << b) ) != 0 )
                                
4000e718:	85 28 c0 01 	sll  %g3, %g1, %g2
                            
4000e71c:	80 8e c0 02 	btst  %i3, %g2
                                
4000e720:	22 bf ff fc 	be,a   4000e710 <msdos_format+0xd40>
          
4000e724:	82 80 7f ff 	addcc  %g1, -1, %g1
                           
    fmt_params->sectors_per_cluster = 1 << b;
                        
4000e728:	c4 27 bd 58 	st  %g2, [ %fp + -680 ]
                       
            ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,

4000e72c:	94 07 bd 58 	add  %fp, -680, %o2
                           
4000e730:	92 07 bd 4c 	add  %fp, -692, %o1
                           
4000e734:	7f ff fc 83 	call  4000d940 <msdos_set_sectors_per_cluster_from_request.isra.1>

4000e738:	90 10 00 19 	mov  %i1, %o0
                                 
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {
  
4000e73c:	c2 0f bd 7e 	ldub  [ %fp + -642 ], %g1
                     
4000e740:	ba 18 40 1d 	xor  %g1, %i5, %i5
                            
4000e744:	80 a0 00 1d 	cmp  %g0, %i5
                                 
4000e748:	84 0c a0 ff 	and  %l2, 0xff, %g2
                           
4000e74c:	86 40 20 00 	addx  %g0, 0, %g3
                             
4000e750:	88 10 20 01 	mov  1, %g4
                                   
4000e754:	80 a0 a0 01 	cmp  %g2, 1
                                   
4000e758:	18 80 00 03 	bgu  4000e764 <msdos_format+0xd94>
            
4000e75c:	82 10 00 03 	mov  %g3, %g1
                                 
4000e760:	88 10 20 00 	clr  %g4
                                      
4000e764:	80 89 20 ff 	btst  0xff, %g4
                               
4000e768:	02 80 00 38 	be  4000e848 <msdos_format+0xe78>
             
4000e76c:	d8 07 bd 50 	ld  [ %fp + -688 ], %o4
                       
4000e770:	80 a0 e0 00 	cmp  %g3, 0
                                   
4000e774:	02 80 00 35 	be  4000e848 <msdos_format+0xe78>
             <== NEVER TAKEN
4000e778:	80 a2 20 00 	cmp  %o0, 0
                                   
          --fmt_params->totl_sector_cnt;
                             
4000e77c:	98 03 3f ff 	add  %o4, -1, %o4
                             
4000e780:	d8 27 bd 50 	st  %o4, [ %fp + -688 ]
                       
4000e784:	84 10 00 0c 	mov  %o4, %g2
                                 
    while(   ret_val == 0
                                            
4000e788:	02 bf fe 96 	be  4000e1e0 <msdos_format+0x810>
             <== ALWAYS TAKEN
4000e78c:	a4 04 a0 01 	inc  %l2
                                      
4000e790:	10 bf fc c2 	b  4000da98 <msdos_format+0xc8>
               <== NOT EXECUTED
4000e794:	b0 10 00 08 	mov  %o0, %i0
                                 <== NOT EXECUTED
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e798:	10 bf ff 85 	b  4000e5ac <msdos_format+0xbdc>
              
4000e79c:	84 09 00 02 	and  %g4, %g2, %g2
                            
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
    
4000e7a0:	d4 07 bd 3c 	ld  [ %fp + -708 ], %o2
                       
4000e7a4:	92 10 20 02 	mov  2, %o1
                                   
4000e7a8:	7f ff fb cb 	call  4000d6d4 <msdos_format_printf>
          
4000e7ac:	90 10 20 00 	clr  %o0
                                      
        if (fmt_params->fattype == FAT_FAT32) {
                      
4000e7b0:	c2 0f bd 7e 	ldub  [ %fp + -642 ], %g1
                     
4000e7b4:	ba 08 60 ff 	and  %g1, 0xff, %i5
                           
4000e7b8:	80 a7 60 04 	cmp  %i5, 4
                                   
4000e7bc:	12 80 00 17 	bne  4000e818 <msdos_format+0xe48>
            
4000e7c0:	84 10 20 01 	mov  1, %g2
                                   
          fmt_params->rsvd_sector_cnt = 32;
                          
4000e7c4:	82 10 20 20 	mov  0x20, %g1
                                
4000e7c8:	c2 27 bd 54 	st  %g1, [ %fp + -684 ]
                       
          fmt_params->mbr_copy_sec = 6;
                              
4000e7cc:	82 10 20 06 	mov  6, %g1
                                   
          fmt_params->fsinfo_sec = 1;
                                
4000e7d0:	84 10 20 01 	mov  1, %g2
                                   
          fmt_params->mbr_copy_sec = 6;
                              
4000e7d4:	c2 27 bd 74 	st  %g1, [ %fp + -652 ]
                       
          fmt_params->fsinfo_sec = 1;
                                
4000e7d8:	ae 10 20 04 	mov  4, %l7
                                   
          fmt_params->files_per_root_dir = 0;
                        
4000e7dc:	c0 27 bd 64 	clr  [ %fp + -668 ]
                           
          fmt_params->fsinfo_sec = 1;
                                
4000e7e0:	96 10 20 20 	mov  0x20, %o3
                                
4000e7e4:	82 10 20 00 	clr  %g1
                                      
4000e7e8:	c4 27 bd 78 	st  %g2, [ %fp + -648 ]
                       
4000e7ec:	ba 10 20 04 	mov  4, %i5
                                   
4000e7f0:	10 bf fe 0d 	b  4000e024 <msdos_format+0x654>
              
4000e7f4:	f8 07 bd 4c 	ld  [ %fp + -692 ], %i4
                       
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN
                 
4000e7f8:	82 10 63 f4 	or  %g1, 0x3f4, %g1
                           
4000e7fc:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000e800:	0a bf ff bc 	bcs  4000e6f0 <msdos_format+0xd20>
            
4000e804:	82 10 20 04 	mov  4, %g1
                                   
          fmt_params->fattype = msdos_get_fat_type(
                  
4000e808:	82 10 20 02 	mov  2, %g1
                                   
4000e80c:	ae 10 20 02 	mov  2, %l7
                                   
4000e810:	10 bf fe 6c 	b  4000e1c0 <msdos_format+0x7f0>
              
4000e814:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      
          fmt_params->rsvd_sector_cnt = 1;
                           
4000e818:	c4 27 bd 54 	st  %g2, [ %fp + -684 ]
                       
            if (fmt_params->fattype == FAT_FAT16) {
                  
4000e81c:	80 a7 60 02 	cmp  %i5, 2
                                   
4000e820:	02 80 00 10 	be  4000e860 <msdos_format+0xe90>
             
4000e824:	ae 10 00 01 	mov  %g1, %l7
                                 
4000e828:	d6 07 bd 54 	ld  [ %fp + -684 ], %o3
                       
4000e82c:	86 10 20 3f 	mov  0x3f, %g3
                                
4000e830:	10 bf fd f1 	b  4000dff4 <msdos_format+0x624>
              
4000e834:	ba 08 60 ff 	and  %g1, 0xff, %i5
                           
          fmt_params->fattype = msdos_get_fat_type(
                  
4000e838:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      <== NOT EXECUTED
    fmt_params->sectors_per_cluster = 2;
                             
4000e83c:	82 10 20 02 	mov  2, %g1
                                   
4000e840:	10 bf ff bb 	b  4000e72c <msdos_format+0xd5c>
              
4000e844:	c2 27 bd 58 	st  %g1, [ %fp + -680 ]
                       
4000e848:	84 10 00 0c 	mov  %o4, %g2
                                 
    while(   ret_val == 0
                                            
4000e84c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e850:	02 bf fe 61 	be  4000e1d4 <msdos_format+0x804>
             <== ALWAYS TAKEN
4000e854:	a4 04 a0 01 	inc  %l2
                                      
4000e858:	10 bf fc 90 	b  4000da98 <msdos_format+0xc8>
               <== NOT EXECUTED
4000e85c:	b0 10 00 08 	mov  %o0, %i0
                                 <== NOT EXECUTED
4000e860:	d6 07 bd 54 	ld  [ %fp + -684 ], %o3
                       
            if (fmt_params->fattype == FAT_FAT16) {
                  
4000e864:	86 10 21 ff 	mov  0x1ff, %g3
                               
4000e868:	10 bf fd e3 	b  4000dff4 <msdos_format+0x624>
              
4000e86c:	ba 08 60 ff 	and  %g1, 0xff, %i5
                           
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
        
4000e870:	15 10 00 a7 	sethi  %hi(0x40029c00), %o2
                   
      fmt_params->fat_num = 2;
                                       
4000e874:	c2 2f bd 7c 	stb  %g1, [ %fp + -644 ]
                      
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,
        
4000e878:	96 10 20 02 	mov  2, %o3
                                   
4000e87c:	94 12 a2 b8 	or  %o2, 0x2b8, %o2
                           
4000e880:	92 10 20 02 	mov  2, %o1
                                   
4000e884:	7f ff fb 94 	call  4000d6d4 <msdos_format_printf>
          
4000e888:	90 10 20 00 	clr  %o0
                                      
{
                                                                    
4000e88c:	05 00 00 1f 	sethi  %hi(0x7c00), %g2
                       
    uint32_t fat16_sect_per_clust = 32;
                              
4000e890:	82 10 20 20 	mov  0x20, %g1
                                
{
                                                                    
4000e894:	10 bf fd 99 	b  4000def8 <msdos_format+0x528>
              
4000e898:	84 10 a3 a8 	or  %g2, 0x3a8, %g2
                           
    else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {

4000e89c:	84 10 a3 f5 	or  %g2, 0x3f5, %g2
                           
4000e8a0:	82 58 40 02 	smul  %g1, %g2, %g1
                           
4000e8a4:	80 a0 c0 01 	cmp  %g3, %g1
                                 
4000e8a8:	1a 80 00 68 	bcc  4000ea48 <msdos_format+0x1078>
           
4000e8ac:	82 10 20 04 	mov  4, %g1
                                   
      fmt_params->fattype = FAT_FAT16;
                               
4000e8b0:	82 10 20 02 	mov  2, %g1
                                   
4000e8b4:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      
      fmt_params->sectors_per_cluster = 2;
                           
4000e8b8:	82 10 20 02 	mov  2, %g1
                                   
4000e8bc:	10 bf fd 97 	b  4000df18 <msdos_format+0x548>
              
4000e8c0:	c2 27 bd 58 	st  %g1, [ %fp + -680 ]
                       
  if ( fmt_params->totl_sector_cnt == 0 )
                            
4000e8c4:	02 bf fe 4a 	be  4000e1ec <msdos_format+0x81c>
             <== NEVER TAKEN
4000e8c8:	f0 07 bd 38 	ld  [ %fp + -712 ], %i0
                       
4000e8cc:	c2 0f bd 9c 	ldub  [ %fp + -612 ], %g1
                     
    if (FAT_FAT32 != fmt_params->fattype)
                            
4000e8d0:	c4 0f bd 7e 	ldub  [ %fp + -642 ], %g2
                     
4000e8d4:	c6 07 bd 58 	ld  [ %fp + -680 ], %g3
                       
4000e8d8:	80 a0 a0 04 	cmp  %g2, 4
                                   
4000e8dc:	02 80 00 0d 	be  4000e910 <msdos_format+0xf40>
             
4000e8e0:	88 08 60 ff 	and  %g1, 0xff, %g4
                           
  if (! skip_alignment)
                                              
4000e8e4:	88 88 60 ff 	andcc  %g1, 0xff, %g4
                         
4000e8e8:	12 80 00 06 	bne  4000e900 <msdos_format+0xf30>
            
4000e8ec:	c4 07 bd 68 	ld  [ %fp + -664 ], %g2
                       
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e8f0:	82 00 bf ff 	add  %g2, -1, %g1
                             
4000e8f4:	84 20 00 03 	neg  %g3, %g2
                                 
4000e8f8:	82 00 40 03 	add  %g1, %g3, %g1
                            
4000e8fc:	84 08 40 02 	and  %g1, %g2, %g2
                            
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);

4000e900:	c2 07 bd 4c 	ld  [ %fp + -692 ], %g1
                       
4000e904:	83 30 60 05 	srl  %g1, 5, %g1
                              
4000e908:	82 58 40 02 	smul  %g1, %g2, %g1
                           
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,

4000e90c:	c2 27 bd 64 	st  %g1, [ %fp + -668 ]
                       
  if (! skip_alignment)
                                              
4000e910:	80 a1 20 00 	cmp  %g4, 0
                                   
4000e914:	12 80 00 06 	bne  4000e92c <msdos_format+0xf5c>
            
4000e918:	fa 07 bd 54 	ld  [ %fp + -684 ], %i5
                       
    return (sectors + clustersize - 1) & ~(clustersize - 1);
         
4000e91c:	82 07 7f ff 	add  %i5, -1, %g1
                             
4000e920:	ba 20 00 03 	neg  %g3, %i5
                                 
4000e924:	82 00 40 03 	add  %g1, %g3, %g1
                            
4000e928:	ba 08 40 1d 	and  %g1, %i5, %i5
                            
    if ((rqdata != NULL) && (rqdata->media != 0)) {
                  
4000e92c:	80 a6 60 00 	cmp  %i1, 0
                                   
4000e930:	02 80 00 14 	be  4000e980 <msdos_format+0xfb0>
             
4000e934:	fa 27 bd 54 	st  %i5, [ %fp + -684 ]
                       
4000e938:	f8 0e 60 14 	ldub  [ %i1 + 0x14 ], %i4
                     
4000e93c:	92 8f 20 ff 	andcc  %i4, 0xff, %o1
                         
4000e940:	02 80 00 11 	be  4000e984 <msdos_format+0xfb4>
             
4000e944:	82 10 3f f8 	mov  -8, %g1
                                  
      const char valid_media_codes[] =
                               
4000e948:	03 10 00 a7 	sethi  %hi(0x40029c00), %g1
                   
4000e94c:	c4 18 63 58 	ldd  [ %g1 + 0x358 ], %g2	! 40029f58 <_Thread_queue_Operations_default+0x17c>

4000e950:	88 10 63 58 	or  %g1, 0x358, %g4
                           
4000e954:	c2 09 20 08 	ldub  [ %g4 + 8 ], %g1
                        
4000e958:	c4 3f be 00 	std  %g2, [ %fp + -512 ]
                      
      if (NULL==memchr(valid_media_codes,
                            
4000e95c:	94 10 20 09 	mov  9, %o2
                                   
      const char valid_media_codes[] =
                               
4000e960:	c2 2f be 08 	stb  %g1, [ %fp + -504 ]
                      
      if (NULL==memchr(valid_media_codes,
                            
4000e964:	40 00 34 76 	call  4001bb3c <memchr>
                       
4000e968:	90 07 be 00 	add  %fp, -512, %o0
                           
4000e96c:	80 a2 20 00 	cmp  %o0, 0
                                   
4000e970:	02 bf fe 1f 	be  4000e1ec <msdos_format+0x81c>
             <== ALWAYS TAKEN
4000e974:	01 00 00 00 	nop 
                                          
        fmt_params->media_code = rqdata->media;
                      
4000e978:	10 bf fc 4b 	b  4000daa4 <msdos_format+0xd4>
               <== NOT EXECUTED
4000e97c:	f8 2f bd 7d 	stb  %i4, [ %fp + -643 ]
                      <== NOT EXECUTED
      fmt_params->media_code = FAT_BR_MEDIA_FIXED;
                   
4000e980:	82 10 3f f8 	mov  -8, %g1
                                  
4000e984:	10 bf fc 48 	b  4000daa4 <msdos_format+0xd4>
               
4000e988:	c2 2f bd 7d 	stb  %g1, [ %fp + -643 ]
                      
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat);

4000e98c:	b9 30 60 10 	srl  %g1, 0x10, %i4
                           
4000e990:	bb 30 60 18 	srl  %g1, 0x18, %i5
                           
4000e994:	c2 2f be 24 	stb  %g1, [ %fp + -476 ]
                      
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);
     
4000e998:	82 10 20 29 	mov  0x29, %g1
                                
4000e99c:	c2 2f be 42 	stb  %g1, [ %fp + -446 ]
                      
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
                    
4000e9a0:	03 00 00 11 	sethi  %hi(0x4400), %g1
                       
4000e9a4:	82 10 62 41 	or  %g1, 0x241, %g1	! 4641 <_Configuration_Interrupt_stack_size+0x3641>

4000e9a8:	c2 37 be 52 	sth  %g1, [ %fp + -430 ]
                      
4000e9ac:	03 00 00 15 	sethi  %hi(0x5400), %g1
                       
4000e9b0:	82 10 60 33 	or  %g1, 0x33, %g1	! 5433 <_Configuration_Interrupt_stack_size+0x4433>

    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */

4000e9b4:	c4 07 bd 74 	ld  [ %fp + -652 ], %g2
                       
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
                    
4000e9b8:	c2 37 be 54 	sth  %g1, [ %fp + -428 ]
                      
4000e9bc:	03 00 00 0c 	sethi  %hi(0x3000), %g1
                       
4000e9c0:	82 10 62 20 	or  %g1, 0x220, %g1	! 3220 <_Configuration_Interrupt_stack_size+0x2220>

    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */

4000e9c4:	89 30 a0 08 	srl  %g2, 8, %g4
                              
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
                    
4000e9c8:	c2 37 be 56 	sth  %g1, [ %fp + -426 ]
                      
4000e9cc:	03 00 00 08 	sethi  %hi(0x2000), %g1
                       
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat);

4000e9d0:	c6 2f be 25 	stb  %g3, [ %fp + -475 ]
                      
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
                    
4000e9d4:	82 10 60 20 	or  %g1, 0x20, %g1
                            
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat);

4000e9d8:	f8 2f be 26 	stb  %i4, [ %fp + -474 ]
                      
4000e9dc:	fa 2f be 27 	stb  %i5, [ %fp + -473 ]
                      
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */

4000e9e0:	da 2f be 2c 	stb  %o5, [ %fp + -468 ]
                      
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/

4000e9e4:	de 2f be 30 	stb  %o7, [ %fp + -464 ]
                      
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */

4000e9e8:	c4 2f be 32 	stb  %g2, [ %fp + -462 ]
                      
4000e9ec:	c8 2f be 33 	stb  %g4, [ %fp + -461 ]
                      
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);

4000e9f0:	c0 27 be 34 	clr  [ %fp + -460 ]
                           
4000e9f4:	c0 27 be 38 	clr  [ %fp + -456 ]
                           
4000e9f8:	c0 27 be 3c 	clr  [ %fp + -452 ]
                           
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);

4000e9fc:	c0 2f be 47 	clrb  [ %fp + -441 ]
                          
4000ea00:	c0 2f be 48 	clrb  [ %fp + -440 ]
                          
4000ea04:	c0 2f be 49 	clrb  [ %fp + -439 ]
                          
4000ea08:	c0 2f be 4a 	clrb  [ %fp + -438 ]
                          
4000ea0c:	c0 2f be 4b 	clrb  [ %fp + -437 ]
                          
4000ea10:	c0 2f be 4c 	clrb  [ %fp + -436 ]
                          
4000ea14:	c0 2f be 4d 	clrb  [ %fp + -435 ]
                          
4000ea18:	c0 2f be 4e 	clrb  [ %fp + -434 ]
                          
4000ea1c:	c0 2f be 4f 	clrb  [ %fp + -433 ]
                          
4000ea20:	c0 2f be 50 	clrb  [ %fp + -432 ]
                          
4000ea24:	c0 2f be 51 	clrb  [ %fp + -431 ]
                          
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),
                    
4000ea28:	10 bf fc dd 	b  4000dd9c <msdos_format+0x3cc>
              
4000ea2c:	c2 37 be 58 	sth  %g1, [ %fp + -424 ]
                      
    *volid_ptr = rand();
                                             
4000ea30:	40 00 37 81 	call  4001c834 <rand>
                         
4000ea34:	01 00 00 00 	nop 
                                          
4000ea38:	10 bf fc 65 	b  4000dbcc <msdos_format+0x1fc>
              
4000ea3c:	d0 27 bd 98 	st  %o0, [ %fp + -616 ]
                       
    ret_val = -1;
                                                    
4000ea40:	10 bf fc ec 	b  4000ddf0 <msdos_format+0x420>
              <== NOT EXECUTED
4000ea44:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
                
4000ea48:	84 10 20 00 	clr  %g2
                                      
4000ea4c:	07 10 00 00 	sethi  %hi(0x40000000), %g3
                   
      fmt_params->fattype = FAT_FAT32;
                               
4000ea50:	c2 2f bd 7e 	stb  %g1, [ %fp + -642 ]
                      
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
                
4000ea54:	b6 87 40 03 	addcc  %i5, %g3, %i3
                          
      for (b = 31; b > 0; b--)
                                       
4000ea58:	82 10 20 1f 	mov  0x1f, %g1
                                
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
                
4000ea5c:	b4 47 00 02 	addx  %i4, %g2, %i2
                           
        if ((gigs & (1 << b)) != 0)
                                  
4000ea60:	88 10 20 01 	mov  1, %g4
                                   
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;
                
4000ea64:	87 2e a0 02 	sll  %i2, 2, %g3
                              
4000ea68:	85 36 e0 1e 	srl  %i3, 0x1e, %g2
                           
4000ea6c:	10 80 00 04 	b  4000ea7c <msdos_format+0x10ac>
             
4000ea70:	86 10 c0 02 	or  %g3, %g2, %g3
                             
      for (b = 31; b > 0; b--)
                                       
4000ea74:	02 80 00 16 	be  4000eacc <msdos_format+0x10fc>
            
4000ea78:	84 10 20 01 	mov  1, %g2
                                   
        if ((gigs & (1 << b)) != 0)
                                  
4000ea7c:	85 29 00 01 	sll  %g4, %g1, %g2
                            
4000ea80:	80 88 c0 02 	btst  %g3, %g2
                                
4000ea84:	02 bf ff fc 	be  4000ea74 <msdos_format+0x10a4>
            
4000ea88:	82 80 7f ff 	addcc  %g1, -1, %g1
                           
      fmt_params->sectors_per_cluster = 1 << b;
                      
4000ea8c:	10 bf fd 23 	b  4000df18 <msdos_format+0x548>
              
4000ea90:	c4 27 bd 58 	st  %g2, [ %fp + -680 ]
                       
    for (i = 0;
                                                      
4000ea94:	10 bf fe 42 	b  4000e39c <msdos_format+0x9cc>
              <== NOT EXECUTED
4000ea98:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
    memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),
                          
4000ea9c:	10 bf fc b8 	b  4000dd7c <msdos_format+0x3ac>
              
4000eaa0:	82 10 62 28 	or  %g1, 0x228, %g1
                           
      errno = EINVAL;
                                                
4000eaa4:	40 00 31 a6 	call  4001b13c <__errno>
                      
4000eaa8:	01 00 00 00 	nop 
                                          
4000eaac:	82 10 20 16 	mov  0x16, %g1	! 16 <_TLS_Alignment+0x15>
     
4000eab0:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
  if ( fmt_params->totl_sector_cnt == 0 )
                            
4000eab4:	c2 07 bd 50 	ld  [ %fp + -688 ], %g1
                       
4000eab8:	80 a0 60 00 	cmp  %g1, 0
                                   
4000eabc:	02 bf fd cc 	be  4000e1ec <msdos_format+0x81c>
             <== NEVER TAKEN
4000eac0:	fa 07 bd 54 	ld  [ %fp + -684 ], %i5
                       
      ret_val = -1;
                                                  
4000eac4:	10 bf fb f8 	b  4000daa4 <msdos_format+0xd4>
               
4000eac8:	b0 10 3f ff 	mov  -1, %i0
                                  
      fmt_params->sectors_per_cluster = 1 << b;
                      
4000eacc:	10 bf fd 13 	b  4000df18 <msdos_format+0x548>
              
4000ead0:	c4 27 bd 58 	st  %g2, [ %fp + -680 ]
                       
  if ( fmt_params->totl_sector_cnt == 0 )
                            
4000ead4:	80 a0 60 00 	cmp  %g1, 0
                                   <== NOT EXECUTED
4000ead8:	02 bf fd c5 	be  4000e1ec <msdos_format+0x81c>
             <== NOT EXECUTED
4000eadc:	c6 07 bd 58 	ld  [ %fp + -680 ], %g3
                       <== NOT EXECUTED
4000eae0:	10 bf ff 81 	b  4000e8e4 <msdos_format+0xf14>
              <== NOT EXECUTED
4000eae4:	c2 0f bd 9c 	ldub  [ %fp + -612 ], %g1
                     <== NOT EXECUTED
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN
                 
4000eae8:	07 00 00 3f 	sethi  %hi(0xfc00), %g3
                       
4000eaec:	86 10 e3 f4 	or  %g3, 0x3f4, %g3	! fff4 <_Configuration_Interrupt_stack_size+0xeff4>

4000eaf0:	80 a0 c0 02 	cmp  %g3, %g2
                                 
4000eaf4:	0a bf fe fe 	bcs  4000e6ec <msdos_format+0xd1c>
            
4000eaf8:	80 a1 00 01 	cmp  %g4, %g1
                                 
4000eafc:	1a bf fd ad 	bcc  4000e1b0 <msdos_format+0x7e0>
            <== ALWAYS TAKEN
4000eb00:	86 10 20 02 	mov  2, %g3
                                   
          fmt_params->fattype = msdos_get_fat_type(
                  
4000eb04:	10 bf fe fb 	b  4000e6f0 <msdos_format+0xd20>
              <== NOT EXECUTED
4000eb08:	82 10 20 04 	mov  4, %g1
                                   <== NOT EXECUTED

                                                                     

40018a48 <msdos_format_dirent_with_dot>: {
40018a48:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  for (i = MSDOS_SHORT_BASE_LEN, src_tmp = src + MSDOS_SHORT_BASE_LEN - 1;

40018a4c:	b6 10 20 08 	mov  8, %i3
                                   
40018a50:	82 06 60 07 	add  %i1, 7, %g1
                              
       i > 0 && *src_tmp == ' ';
                                     
40018a54:	c6 48 40 00 	ldsb  [ %g1 ], %g3
                            
40018a58:	80 a0 e0 20 	cmp  %g3, 0x20
                                
40018a5c:	12 80 00 15 	bne  40018ab0 <msdos_format_dirent_with_dot+0x68>

40018a60:	84 06 ff ff 	add  %i3, -1, %g2
                             
40018a64:	b6 10 00 02 	mov  %g2, %i3
                                 
  for (i = MSDOS_SHORT_BASE_LEN, src_tmp = src + MSDOS_SHORT_BASE_LEN - 1;

40018a68:	80 a0 a0 00 	cmp  %g2, 0
                                   
40018a6c:	12 bf ff fa 	bne  40018a54 <msdos_format_dirent_with_dot+0xc>
<== ALWAYS TAKEN
40018a70:	82 00 7f ff 	add  %g1, -1, %g1
                             
       i > 0 && *src_tmp == ' ';
                                     
40018a74:	c2 4e 60 0a 	ldsb  [ %i1 + 0xa ], %g1
                      
40018a78:	80 a0 60 20 	cmp  %g1, 0x20
                                
40018a7c:	12 80 00 3e 	bne  40018b74 <msdos_format_dirent_with_dot+0x12c>

40018a80:	a0 06 20 01 	add  %i0, 1, %l0
                              
40018a84:	c2 4e 60 09 	ldsb  [ %i1 + 9 ], %g1
                        
40018a88:	80 a0 60 20 	cmp  %g1, 0x20
                                
40018a8c:	32 80 00 1c 	bne,a   40018afc <msdos_format_dirent_with_dot+0xb4>

40018a90:	b4 10 20 01 	mov  1, %i2
                                   
40018a94:	c2 4e 60 08 	ldsb  [ %i1 + 8 ], %g1
                        
40018a98:	80 a0 60 20 	cmp  %g1, 0x20
                                
40018a9c:	12 80 00 19 	bne  40018b00 <msdos_format_dirent_with_dot+0xb8>

40018aa0:	b4 10 20 00 	clr  %i2
                                      
  *dst = '\0'; /* terminate string */
                                
40018aa4:	c0 2e 00 00 	clrb  [ %i0 ]
                                 
}
                                                                    
40018aa8:	81 c7 e0 08 	ret 
                                          
40018aac:	91 e8 00 02 	restore  %g0, %g2, %o0
                        
40018ab0:	b8 10 20 00 	clr  %i4
                                      
40018ab4:	b4 10 00 1b 	mov  %i3, %i2
                                 
    *dst++ = tolower((unsigned char)(*src_tmp++));
                   
40018ab8:	40 00 0b eb 	call  4001ba64 <__locale_ctype_ptr>
           
40018abc:	fa 0e 40 1c 	ldub  [ %i1 + %i4 ], %i5
                      
40018ac0:	82 0f 60 ff 	and  %i5, 0xff, %g1
                           
40018ac4:	90 02 00 01 	add  %o0, %g1, %o0
                            
40018ac8:	c4 0a 20 01 	ldub  [ %o0 + 1 ], %g2
                        
40018acc:	84 08 a0 03 	and  %g2, 3, %g2
                              
40018ad0:	80 a0 a0 01 	cmp  %g2, 1
                                   
40018ad4:	22 80 00 02 	be,a   40018adc <msdos_format_dirent_with_dot+0x94>

40018ad8:	82 00 60 20 	add  %g1, 0x20, %g1
                           
40018adc:	c2 2e 00 1c 	stb  %g1, [ %i0 + %i4 ]
                       
40018ae0:	b8 07 20 01 	inc  %i4
                                      
  while (i-- > 0) {
                                                  
40018ae4:	82 26 80 1c 	sub  %i2, %i4, %g1
                            
40018ae8:	80 a0 60 00 	cmp  %g1, 0
                                   
40018aec:	14 bf ff f3 	bg  40018ab8 <msdos_format_dirent_with_dot+0x70>

40018af0:	84 10 00 1b 	mov  %i3, %g2
                                 
40018af4:	10 bf ff e0 	b  40018a74 <msdos_format_dirent_with_dot+0x2c>

40018af8:	b0 06 00 1a 	add  %i0, %i2, %i0
                            
    *dst++ = '.'; /* append dot */
                                   
40018afc:	a0 06 20 01 	add  %i0, 1, %l0
                              
40018b00:	82 10 20 2e 	mov  0x2e, %g1
                                
    src_tmp = src + MSDOS_SHORT_BASE_LEN;
                            
40018b04:	b2 06 60 08 	add  %i1, 8, %i1
                              
    *dst++ = '.'; /* append dot */
                                   
40018b08:	c2 2e 00 00 	stb  %g1, [ %i0 ]
                             
    ++len;        /* dot */
                                          
40018b0c:	b0 00 a0 01 	add  %g2, 1, %i0
                              
    src_tmp = src + MSDOS_SHORT_BASE_LEN;
                            
40018b10:	b6 10 00 1a 	mov  %i2, %i3
                                 
40018b14:	b8 10 00 10 	mov  %l0, %i4
                                 
      *dst++ = tolower((unsigned char)(*src_tmp++));
                 
40018b18:	40 00 0b d3 	call  4001ba64 <__locale_ctype_ptr>
           
40018b1c:	fa 0e 40 00 	ldub  [ %i1 ], %i5
                            
40018b20:	82 0f 60 ff 	and  %i5, 0xff, %g1
                           
40018b24:	90 02 00 01 	add  %o0, %g1, %o0
                            
40018b28:	c4 0a 20 01 	ldub  [ %o0 + 1 ], %g2
                        
40018b2c:	84 08 a0 03 	and  %g2, 3, %g2
                              
40018b30:	b2 06 60 01 	inc  %i1
                                      
40018b34:	80 a0 a0 01 	cmp  %g2, 1
                                   
40018b38:	12 80 00 03 	bne  40018b44 <msdos_format_dirent_with_dot+0xfc>

40018b3c:	b8 07 20 01 	inc  %i4
                                      
40018b40:	82 00 60 20 	add  %g1, 0x20, %g1
                           
40018b44:	c2 2f 3f ff 	stb  %g1, [ %i4 + -1 ]
                        
    while (i-- > 0) {
                                                
40018b48:	b6 06 ff ff 	add  %i3, -1, %i3
                             
40018b4c:	82 06 e0 01 	add  %i3, 1, %g1
                              
40018b50:	80 a0 60 00 	cmp  %g1, 0
                                   
40018b54:	14 bf ff f1 	bg  40018b18 <msdos_format_dirent_with_dot+0xd0>

40018b58:	82 06 a0 01 	add  %i2, 1, %g1
                              
40018b5c:	84 06 20 01 	add  %i0, 1, %g2
                              
40018b60:	b0 04 00 01 	add  %l0, %g1, %i0
                            
40018b64:	84 00 80 1a 	add  %g2, %i2, %g2
                            
  *dst = '\0'; /* terminate string */
                                
40018b68:	c0 2e 00 00 	clrb  [ %i0 ]
                                 
}
                                                                    
40018b6c:	81 c7 e0 08 	ret 
                                          
40018b70:	91 e8 00 02 	restore  %g0, %g2, %o0
                        
    *dst++ = '.'; /* append dot */
                                   
40018b74:	82 10 20 2e 	mov  0x2e, %g1
                                
    src_tmp = src + MSDOS_SHORT_BASE_LEN;
                            
40018b78:	b2 06 60 08 	add  %i1, 8, %i1
                              
    *dst++ = '.'; /* append dot */
                                   
40018b7c:	c2 2e 00 00 	stb  %g1, [ %i0 ]
                             
    src_tmp = src + MSDOS_SHORT_BASE_LEN;
                            
40018b80:	b4 10 20 02 	mov  2, %i2
                                   
    ++len;        /* dot */
                                          
40018b84:	10 bf ff e3 	b  40018b10 <msdos_format_dirent_with_dot+0xc8>

40018b88:	b0 00 a0 01 	add  %g2, 1, %i0
                              

                                                                     

400196fc <msdos_get_dotdot_dir_info_cluster_num_and_offset>: {
400196fc:	9d e3 bf 50 	save  %sp, -176, %sp
                          
    msdos_fs_info_t *fs_info = mt_entry->fs_info;
                    
40019700:	f8 06 20 08 	ld  [ %i0 + 8 ], %i4
                          
    fat_file_fd_t   *fat_fd = NULL;
                                  
40019704:	c0 27 bf bc 	clr  [ %fp + -68 ]
                            
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
             
40019708:	94 07 bf bc 	add  %fp, -68, %o2
                            
    rtems_dosfs_convert_control *converter = fs_info->converter;
     
4001970c:	e0 07 20 c0 	ld  [ %i4 + 0xc0 ], %l0
                       
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
             
40019710:	92 10 00 1a 	mov  %i2, %o1
                                 
40019714:	7f ff e7 b6 	call  400135ec <fat_file_open>
                
40019718:	90 10 00 1c 	mov  %i4, %o0
                                 
    if (rc != RC_OK)
                                                 
4001971c:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019720:	02 80 00 04 	be  40019730 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x34>
<== ALWAYS TAKEN
40019724:	c2 07 bf bc 	ld  [ %fp + -68 ], %g1
                        
}
                                                                    
40019728:	81 c7 e0 08 	ret 
                                          
4001972c:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
40019730:	05 00 08 00 	sethi  %hi(0x200000), %g2
                     
    fat_fd->cln = cln;
                                               
40019734:	f2 20 60 1c 	st  %i1, [ %g1 + 0x1c ]
                       
    rc = fat_file_size(&fs_info->fat, fat_fd);
                       
40019738:	92 10 00 01 	mov  %g1, %o1
                                 
    fat_fd->fat_file_type = FAT_DIRECTORY;
                           
4001973c:	c0 20 60 10 	clr  [ %g1 + 0x10 ]
                           
    rc = fat_file_size(&fs_info->fat, fat_fd);
                       
40019740:	90 10 00 1c 	mov  %i4, %o0
                                 
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
40019744:	c4 20 60 14 	st  %g2, [ %g1 + 0x14 ]
                       
    fat_fd->map.file_cln = 0;
                                        
40019748:	c0 20 60 34 	clr  [ %g1 + 0x34 ]
                           
    rc = fat_file_size(&fs_info->fat, fat_fd);
                       
4001974c:	7f ff ea f2 	call  40014314 <fat_file_size>
                
40019750:	f2 20 60 38 	st  %i1, [ %g1 + 0x38 ]
                       
    if (rc != RC_OK)
                                                 
40019754:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019758:	12 80 00 8a 	bne  40019980 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x284>
<== NEVER TAKEN
4001975c:	98 10 20 0b 	mov  0xb, %o4
                                 
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
          
40019760:	ba 07 bf c0 	add  %fp, -64, %i5
                            
    msdos_long_to_short(
                                             
40019764:	96 10 00 1d 	mov  %i5, %o3
                                 
40019768:	94 10 20 01 	mov  1, %o2
                                   
4001976c:	33 10 00 a7 	sethi  %hi(0x40029c00), %i1
                   
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
          
40019770:	c0 27 bf c0 	clr  [ %fp + -64 ]
                            
    msdos_long_to_short(
                                             
40019774:	92 16 60 a8 	or  %i1, 0xa8, %o1
                            
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
          
40019778:	c0 27 bf c4 	clr  [ %fp + -60 ]
                            
    msdos_long_to_short(
                                             
4001977c:	90 10 00 10 	mov  %l0, %o0
                                 
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
          
40019780:	c0 27 bf c8 	clr  [ %fp + -56 ]
                            
40019784:	c0 27 bf cc 	clr  [ %fp + -52 ]
                            
40019788:	c0 27 bf d0 	clr  [ %fp + -48 ]
                            
4001978c:	c0 27 bf d4 	clr  [ %fp + -44 ]
                            
40019790:	c0 27 bf d8 	clr  [ %fp + -40 ]
                            
    msdos_long_to_short(
                                             
40019794:	7f ff fa 97 	call  400181f0 <msdos_long_to_short>
          
40019798:	c0 27 bf dc 	clr  [ %fp + -36 ]
                            
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, (const uint8_t*)".", 1,

4001979c:	fa 23 a0 60 	st  %i5, [ %sp + 0x60 ]
                       
400197a0:	9a 10 20 01 	mov  1, %o5
                                   
400197a4:	f4 23 a0 5c 	st  %i2, [ %sp + 0x5c ]
                       
400197a8:	98 10 20 01 	mov  1, %o4
                                   
400197ac:	d2 07 bf bc 	ld  [ %fp + -68 ], %o1
                        
400197b0:	96 16 60 a8 	or  %i1, 0xa8, %o3
                            
400197b4:	94 10 20 00 	clr  %o2
                                      
400197b8:	7f ff fc f5 	call  40018b8c <msdos_find_name_in_fat_file>
  
400197bc:	90 10 00 18 	mov  %i0, %o0
                                 
    if (rc != RC_OK)
                                                 
400197c0:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
400197c4:	12 80 00 6f 	bne  40019980 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x284>
<== NEVER TAKEN
400197c8:	98 10 20 0b 	mov  0xb, %o4
                                 
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
       
400197cc:	ba 07 bf e0 	add  %fp, -32, %i5
                            
    msdos_long_to_short(
                                             
400197d0:	96 10 00 1d 	mov  %i5, %o3
                                 
400197d4:	94 10 20 02 	mov  2, %o2
                                   
400197d8:	33 10 00 a7 	sethi  %hi(0x40029c00), %i1
                   
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
       
400197dc:	c0 27 bf e0 	clr  [ %fp + -32 ]
                            
    msdos_long_to_short(
                                             
400197e0:	92 16 60 b0 	or  %i1, 0xb0, %o1
                            
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
       
400197e4:	c0 27 bf e4 	clr  [ %fp + -28 ]
                            
    msdos_long_to_short(
                                             
400197e8:	90 10 00 10 	mov  %l0, %o0
                                 
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
       
400197ec:	c0 27 bf e8 	clr  [ %fp + -24 ]
                            
400197f0:	c0 27 bf ec 	clr  [ %fp + -20 ]
                            
400197f4:	c0 27 bf f0 	clr  [ %fp + -16 ]
                            
400197f8:	c0 27 bf f4 	clr  [ %fp + -12 ]
                            
400197fc:	c0 27 bf f8 	clr  [ %fp + -8 ]
                             
    msdos_long_to_short(
                                             
40019800:	7f ff fa 7c 	call  400181f0 <msdos_long_to_short>
          
40019804:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, (const uint8_t*)"..", 2,

40019808:	fa 23 a0 60 	st  %i5, [ %sp + 0x60 ]
                       
4001980c:	9a 10 20 01 	mov  1, %o5
                                   
40019810:	f4 23 a0 5c 	st  %i2, [ %sp + 0x5c ]
                       
40019814:	98 10 20 02 	mov  2, %o4
                                   
40019818:	d2 07 bf bc 	ld  [ %fp + -68 ], %o1
                        
4001981c:	96 16 60 b0 	or  %i1, 0xb0, %o3
                            
40019820:	94 10 20 00 	clr  %o2
                                      
40019824:	7f ff fc da 	call  40018b8c <msdos_find_name_in_fat_file>
  
40019828:	90 10 00 18 	mov  %i0, %o0
                                 
    if (rc != RC_OK)
                                                 
4001982c:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019830:	12 80 00 54 	bne  40019980 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x284>
<== NEVER TAKEN
40019834:	c4 17 bf da 	lduh  [ %fp + -38 ], %g2
                      
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
                   
40019838:	c2 17 bf d4 	lduh  [ %fp + -44 ], %g1
                      
4001983c:	b3 28 a0 08 	sll  %g2, 8, %i1
                              
40019840:	a1 28 60 08 	sll  %g1, 8, %l0
                              
40019844:	85 30 a0 08 	srl  %g2, 8, %g2
                              
40019848:	83 30 60 08 	srl  %g1, 8, %g1
                              
    rc = fat_file_close(&fs_info->fat, fat_fd);
                      
4001984c:	d2 07 bf bc 	ld  [ %fp + -68 ], %o1
                        
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
                   
40019850:	b2 16 40 02 	or  %i1, %g2, %i1
                             
40019854:	a0 14 00 01 	or  %l0, %g1, %l0
                             
    rc = fat_file_close(&fs_info->fat, fat_fd);
                      
40019858:	7f ff e9 0d 	call  40013c8c <fat_file_close>
               
4001985c:	90 10 00 1c 	mov  %i4, %o0
                                 
    if ( rc != RC_OK )
                                               
40019860:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
40019864:	12 bf ff b1 	bne  40019728 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x2c>
<== NEVER TAKEN
40019868:	c4 17 bf fa 	lduh  [ %fp + -6 ], %g2
                       
    if ( (MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)
              
4001986c:	c6 17 bf f4 	lduh  [ %fp + -12 ], %g3
                      
40019870:	83 28 a0 08 	sll  %g2, 8, %g1
                              
40019874:	89 30 a0 08 	srl  %g2, 8, %g4
                              
40019878:	85 28 e0 08 	sll  %g3, 8, %g2
                              
4001987c:	82 10 40 04 	or  %g1, %g4, %g1
                             
40019880:	87 30 e0 08 	srl  %g3, 8, %g3
                              
40019884:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
40019888:	84 10 80 03 	or  %g2, %g3, %g2
                             
4001988c:	83 30 60 10 	srl  %g1, 0x10, %g1
                           
40019890:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
40019894:	80 90 80 01 	orcc  %g2, %g1, %g0
                           
40019898:	12 80 00 08 	bne  400198b8 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x1bc>

4001989c:	94 07 bf bc 	add  %fp, -68, %o2
                            
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
400198a0:	82 10 3f ff 	mov  -1, %g1
                                  
  dir_pos->sname.ofs = 0;
                                            
400198a4:	c0 26 a0 04 	clr  [ %i2 + 4 ]
                              
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
400198a8:	c2 26 a0 08 	st  %g1, [ %i2 + 8 ]
                          
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                          
400198ac:	c2 26 a0 0c 	st  %g1, [ %i2 + 0xc ]
                        
        dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
                
400198b0:	82 10 20 01 	mov  1, %g1
                                   
400198b4:	c2 26 80 00 	st  %g1, [ %i2 ]
                              
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);
             
400198b8:	92 10 00 1a 	mov  %i2, %o1
                                 
400198bc:	7f ff e7 4c 	call  400135ec <fat_file_open>
                
400198c0:	90 10 00 1c 	mov  %i4, %o0
                                 
    if (rc != RC_OK)
                                                 
400198c4:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
400198c8:	12 bf ff 98 	bne  40019728 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x2c>
<== NEVER TAKEN
400198cc:	c2 17 bf fa 	lduh  [ %fp + -6 ], %g1
                       
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)
               
400198d0:	c6 17 bf f4 	lduh  [ %fp + -12 ], %g3
                      
400198d4:	85 28 60 08 	sll  %g1, 8, %g2
                              
400198d8:	89 30 60 08 	srl  %g1, 8, %g4
                              
400198dc:	83 28 e0 08 	sll  %g3, 8, %g1
                              
400198e0:	87 30 e0 08 	srl  %g3, 8, %g3
                              
400198e4:	84 10 80 04 	or  %g2, %g4, %g2
                             
400198e8:	82 10 40 03 	or  %g1, %g3, %g1
                             
400198ec:	85 28 a0 10 	sll  %g2, 0x10, %g2
                           
400198f0:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
400198f4:	85 30 a0 10 	srl  %g2, 0x10, %g2
                           
400198f8:	82 90 40 02 	orcc  %g1, %g2, %g1
                           
400198fc:	12 80 00 27 	bne  40019998 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x29c>

40019900:	c6 07 bf bc 	ld  [ %fp + -68 ], %g3
                        
        fat_fd->cln = fs_info->fat.vol.rdir_cl;
                      
40019904:	c2 07 20 44 	ld  [ %i4 + 0x44 ], %g1
                       
40019908:	c2 20 e0 1c 	st  %g1, [ %g3 + 0x1c ]
                       
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
4001990c:	05 00 08 00 	sethi  %hi(0x200000), %g2
                     
    fat_fd->fat_file_type = FAT_DIRECTORY;
                           
40019910:	c0 20 e0 10 	clr  [ %g3 + 0x10 ]
                           
    rc = fat_file_size(&fs_info->fat, fat_fd);
                       
40019914:	92 10 00 03 	mov  %g3, %o1
                                 
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
40019918:	c4 20 e0 14 	st  %g2, [ %g3 + 0x14 ]
                       
    rc = fat_file_size(&fs_info->fat, fat_fd);
                       
4001991c:	90 10 00 1c 	mov  %i4, %o0
                                 
    fat_fd->map.file_cln = 0;
                                        
40019920:	c0 20 e0 34 	clr  [ %g3 + 0x34 ]
                           
    rc = fat_file_size(&fs_info->fat, fat_fd);
                       
40019924:	7f ff ea 7c 	call  40014314 <fat_file_size>
                
40019928:	c2 20 e0 38 	st  %g1, [ %g3 + 0x38 ]
                       
        fat_file_close(&fs_info->fat, fat_fd);
                       
4001992c:	d2 07 bf bc 	ld  [ %fp + -68 ], %o1
                        
    if (rc != RC_OK)
                                                 
40019930:	80 a2 20 00 	cmp  %o0, 0
                                   
40019934:	12 80 00 1b 	bne  400199a0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x2a4>
<== NEVER TAKEN
40019938:	ba 10 00 08 	mov  %o0, %i5
                                 
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);
                   
4001993c:	85 2e 60 10 	sll  %i1, 0x10, %g2
                           
40019940:	85 30 a0 10 	srl  %g2, 0x10, %g2
                           
40019944:	95 2c 20 10 	sll  %l0, 0x10, %o2
                           
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,

40019948:	98 10 00 1b 	mov  %i3, %o4
                                 
4001994c:	96 10 00 1a 	mov  %i2, %o3
                                 
40019950:	94 12 80 02 	or  %o2, %g2, %o2
                             
40019954:	7f ff ff 0b 	call  40019580 <msdos_find_node_by_cluster_num_in_fat_file>

40019958:	90 10 00 18 	mov  %i0, %o0
                                 
        fat_file_close(&fs_info->fat, fat_fd);
                       
4001995c:	d2 07 bf bc 	ld  [ %fp + -68 ], %o1
                        
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,

40019960:	ba 10 00 08 	mov  %o0, %i5
                                 
    if (rc != RC_OK)
                                                 
40019964:	80 a7 60 00 	cmp  %i5, 0
                                   
40019968:	12 80 00 12 	bne  400199b0 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x2b4>
<== NEVER TAKEN
4001996c:	90 10 00 1c 	mov  %i4, %o0
                                 
    rc = fat_file_close(&fs_info->fat, fat_fd);
                      
40019970:	7f ff e8 c7 	call  40013c8c <fat_file_close>
               
40019974:	01 00 00 00 	nop 
                                          
    return rc;
                                                       
40019978:	10 bf ff 6c 	b  40019728 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x2c>

4001997c:	ba 10 00 08 	mov  %o0, %i5
                                 
        fat_file_close(&fs_info->fat, fat_fd);
                       
40019980:	d2 07 bf bc 	ld  [ %fp + -68 ], %o1
                        <== NOT EXECUTED
40019984:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
40019988:	7f ff e8 c1 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
4001998c:	b0 10 00 1d 	mov  %i5, %i0
                                 <== NOT EXECUTED
}
                                                                    
40019990:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40019994:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);
        
40019998:	10 bf ff dd 	b  4001990c <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x210>

4001999c:	c2 20 e0 1c 	st  %g1, [ %g3 + 0x1c ]
                       
        fat_file_close(&fs_info->fat, fat_fd);
                       
400199a0:	7f ff e8 bb 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
400199a4:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
        return rc;
                                                   
400199a8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
400199ac:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED
        fat_file_close(&fs_info->fat, fat_fd);
                       
400199b0:	7f ff e8 b7 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
400199b4:	b0 10 00 1d 	mov  %i5, %i0
                                 <== NOT EXECUTED
        return rc;
                                                   
400199b8:	30 bf ff f6 	b,a   40019990 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x294>
<== NOT EXECUTED

                                                                     

400199bc <msdos_get_name_node>: {
400199bc:	9d e3 bf 98 	save  %sp, -104, %sp
                          
400199c0:	e0 07 a0 5c 	ld  [ %fp + 0x5c ], %l0
                       
    rc = msdos_find_name_in_fat_file(parent_loc->mt_entry, fat_fd,
   
400199c4:	e0 23 a0 60 	st  %l0, [ %sp + 0x60 ]
                       
400199c8:	9a 10 00 1c 	mov  %i4, %o5
                                 
400199cc:	fa 23 a0 5c 	st  %i5, [ %sp + 0x5c ]
                       
400199d0:	98 10 00 1b 	mov  %i3, %o4
                                 
400199d4:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
400199d8:	d0 06 20 14 	ld  [ %i0 + 0x14 ], %o0
                       
400199dc:	96 10 00 1a 	mov  %i2, %o3
                                 
400199e0:	7f ff fc 6b 	call  40018b8c <msdos_find_name_in_fat_file>
  
400199e4:	94 10 00 19 	mov  %i1, %o2
                                 
    if ((rc != RC_OK) && (rc != MSDOS_NAME_NOT_FOUND_ERR))
           
400199e8:	80 a0 00 08 	cmp  %g0, %o0
                                 
400199ec:	03 00 00 1f 	sethi  %hi(0x7c00), %g1
                       
400199f0:	86 40 20 00 	addx  %g0, 0, %g3
                             
400199f4:	82 10 61 01 	or  %g1, 0x101, %g1
                           
400199f8:	84 1a 00 01 	xor  %o0, %g1, %g2
                            
400199fc:	80 a0 00 02 	cmp  %g0, %g2
                                 
40019a00:	84 40 20 00 	addx  %g0, 0, %g2
                             
    if (!create_node)
                                                
40019a04:	80 88 c0 02 	btst  %g3, %g2
                                
40019a08:	12 80 00 05 	bne  40019a1c <msdos_get_name_node+0x60>
      
40019a0c:	b8 10 00 08 	mov  %o0, %i4
                                 
40019a10:	80 a6 60 00 	cmp  %i1, 0
                                   
40019a14:	02 80 00 04 	be  40019a24 <msdos_get_name_node+0x68>
       
40019a18:	80 a2 00 01 	cmp  %o0, %g1
                                 
}
                                                                    
40019a1c:	81 c7 e0 08 	ret 
                                          
40019a20:	91 e8 00 1c 	restore  %g0, %i4, %o0
                        
        if (rc == MSDOS_NAME_NOT_FOUND_ERR)
                          
40019a24:	02 bf ff fe 	be  40019a1c <msdos_get_name_node+0x60>
       
40019a28:	80 a2 20 00 	cmp  %o0, 0
                                   
        if (rc == RC_OK)
                                             
40019a2c:	12 bf ff fc 	bne  40019a1c <msdos_get_name_node+0x60>
      <== NEVER TAKEN
40019a30:	94 10 20 02 	mov  2, %o2
                                   
            if (strncmp(name, "..", 2) == 0)
                         
40019a34:	90 10 00 1a 	mov  %i2, %o0
                                 
40019a38:	13 10 00 a7 	sethi  %hi(0x40029c00), %o1
                   
40019a3c:	40 00 0d 88 	call  4001d05c <strncmp>
                      
40019a40:	92 12 60 b0 	or  %o1, 0xb0, %o1	! 40029cb0 <rtems_filesystem_default_pathconf+0x38>

40019a44:	80 a2 20 00 	cmp  %o0, 0
                                   
40019a48:	12 bf ff f5 	bne  40019a1c <msdos_get_name_node+0x60>
      
40019a4c:	01 00 00 00 	nop 
                                          
                dotdot_cln = MSDOS_EXTRACT_CLUSTER_NUM((name_dir_entry));

40019a50:	c2 14 20 1a 	lduh  [ %l0 + 0x1a ], %g1
                     
40019a54:	c4 14 20 14 	lduh  [ %l0 + 0x14 ], %g2
                     
40019a58:	b3 28 60 08 	sll  %g1, 8, %i1
                              
40019a5c:	87 30 60 08 	srl  %g1, 8, %g3
                              
40019a60:	83 28 a0 08 	sll  %g2, 8, %g1
                              
40019a64:	b2 16 40 03 	or  %i1, %g3, %i1
                             
40019a68:	85 30 a0 08 	srl  %g2, 8, %g2
                              
40019a6c:	b3 2e 60 10 	sll  %i1, 0x10, %i1
                           
40019a70:	82 10 40 02 	or  %g1, %g2, %g1
                             
40019a74:	b3 36 60 10 	srl  %i1, 0x10, %i1
                           
40019a78:	83 28 60 10 	sll  %g1, 0x10, %g1
                           
                if (dotdot_cln == 0)
                                 
40019a7c:	b2 90 40 19 	orcc  %g1, %i1, %i1
                           
40019a80:	12 80 00 08 	bne  40019aa0 <msdos_get_name_node+0xe4>
      
40019a84:	82 10 3f ff 	mov  -1, %g1
                                  
  dir_pos->sname.ofs = 0;
                                            
40019a88:	c0 27 60 04 	clr  [ %i5 + 4 ]
                              
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
40019a8c:	c2 27 60 08 	st  %g1, [ %i5 + 8 ]
                          
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                          
40019a90:	c2 27 60 0c 	st  %g1, [ %i5 + 0xc ]
                        
                    dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
    
40019a94:	82 10 20 01 	mov  1, %g1
                                   
40019a98:	10 bf ff e1 	b  40019a1c <msdos_get_name_node+0x60>
        
40019a9c:	c2 27 40 00 	st  %g1, [ %i5 ]
                              
                    rc =
                                             
40019aa0:	f0 06 20 14 	ld  [ %i0 + 0x14 ], %i0
                       <== NOT EXECUTED
40019aa4:	b6 10 00 10 	mov  %l0, %i3
                                 <== NOT EXECUTED
40019aa8:	7f ff ff 15 	call  400196fc <msdos_get_dotdot_dir_info_cluster_num_and_offset>
<== NOT EXECUTED
40019aac:	95 e8 00 1d 	restore  %g0, %i5, %o2
                        

                                                                     

40018a28 <msdos_get_utf16_string_from_long_entry>: if (buf_size >= MSDOS_LFN_ENTRY_SIZE) {
40018a28:	80 a2 a0 19 	cmp  %o2, 0x19
                                
40018a2c:	08 80 00 05 	bleu  40018a40 <msdos_get_utf16_string_from_long_entry+0x18>
<== NEVER TAKEN
40018a30:	94 10 00 0b 	mov  %o3, %o2
                                 
40018a34:	82 13 c0 00 	mov  %o7, %g1
                                 
40018a38:	7f ff fd c1 	call  4001813c <msdos_get_utf16_string_from_long_entry.part.2>

40018a3c:	9e 10 40 00 	mov  %g1, %o7
                                 
}
                                                                    
40018a40:	81 c3 e0 08 	retl 
                                         <== NOT EXECUTED
40018a44:	90 10 20 0c 	mov  0xc, %o0
                                 <== NOT EXECUTED

                                                                     

4000ebf8 <msdos_initialize_support>: const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *file_handlers, const rtems_filesystem_file_handlers_r *directory_handlers, rtems_dosfs_convert_control *converter ) {
4000ebf8:	9d e3 bf 88 	save  %sp, -120, %sp
                          
    msdos_fs_info_t   *fs_info = NULL;
                               
    fat_file_fd_t     *fat_fd = NULL;
                                
    fat_dir_pos_t      root_pos;
                                     
    uint32_t           cl_buf_size;
                                  

                                                                     
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
 
4000ebfc:	92 10 20 c4 	mov  0xc4, %o1
                                
    fat_file_fd_t     *fat_fd = NULL;
                                
4000ec00:	c0 27 bf ec 	clr  [ %fp + -20 ]
                            
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));
 
4000ec04:	7f ff d9 6e 	call  400051bc <calloc>
                       
4000ec08:	90 10 20 01 	mov  1, %o0
                                   
    if (!fs_info)
                                                    
4000ec0c:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4000ec10:	02 80 00 52 	be  4000ed58 <msdos_initialize_support+0x160>
 <== NEVER TAKEN
4000ec14:	01 00 00 00 	nop 
                                          
        rtems_set_errno_and_return_minus_one(ENOMEM);
                

                                                                     
    temp_mt_entry->fs_info = fs_info;
                                

                                                                     
    fs_info->converter = converter;
                                  
4000ec18:	f8 27 60 c0 	st  %i4, [ %i5 + 0xc0 ]
                       
    temp_mt_entry->fs_info = fs_info;
                                
4000ec1c:	fa 26 20 08 	st  %i5, [ %i0 + 8 ]
                          

                                                                     
    rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);
    
4000ec20:	40 00 17 9f 	call  40014a9c <fat_init_volume_info>
         
4000ec24:	d2 06 20 38 	ld  [ %i0 + 0x38 ], %o1
                       
    if (rc != RC_OK)
                                                 
4000ec28:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
4000ec2c:	12 80 00 38 	bne  4000ed0c <msdos_initialize_support+0x114>
<== NEVER TAKEN
4000ec30:	82 10 3f ff 	mov  -1, %g1
                                  
    {
                                                                
        free(fs_info);
                                               
        return rc;
                                                   
    }
                                                                

                                                                     
    fs_info->file_handlers      = file_handlers;
                     
4000ec34:	f4 27 60 a0 	st  %i2, [ %i5 + 0xa0 ]
                       
     * open fat-file which correspondes to  root directory
           
     * (so inode number 0x00000010 is always used for root directory)

     */
                                                              
    fat_dir_pos_init(&root_pos);
                                     
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
                    
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
           
4000ec38:	94 07 bf ec 	add  %fp, -20, %o2
                            
    fs_info->directory_handlers = directory_handlers;
                
4000ec3c:	f6 27 60 9c 	st  %i3, [ %i5 + 0x9c ]
                       
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
           
4000ec40:	92 07 bf f0 	add  %fp, -16, %o1
                            
    fat_dir_pos_t *dir_pos
                                           
    )
                                                                
{
                                                                    
  dir_pos->sname.cln = 0;
                                            
  dir_pos->sname.ofs = 0;
                                            
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;
                          
4000ec44:	c2 27 bf f8 	st  %g1, [ %fp + -8 ]
                         
4000ec48:	90 10 00 1d 	mov  %i5, %o0
                                 
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;
                          
4000ec4c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;
                    
4000ec50:	82 10 20 01 	mov  1, %g1
                                   
  dir_pos->sname.ofs = 0;
                                            
4000ec54:	c0 27 bf f4 	clr  [ %fp + -12 ]
                            
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);
           
4000ec58:	40 00 12 65 	call  400135ec <fat_file_open>
                
4000ec5c:	c2 27 bf f0 	st  %g1, [ %fp + -16 ]
                        
    if (rc != RC_OK)
                                                 
4000ec60:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
4000ec64:	12 80 00 28 	bne  4000ed04 <msdos_initialize_support+0x10c>
<== NEVER TAKEN
4000ec68:	f4 07 bf ec 	ld  [ %fp + -20 ], %i2
                        
    }
                                                                

                                                                     
    /* again: unfortunately "fat-file" is just almost fat file :( */
 
    fat_fd->fat_file_type = FAT_DIRECTORY;
                           
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
    fat_fd->cln = fs_info->fat.vol.rdir_cl;
                          
4000ec6c:	c2 07 60 44 	ld  [ %i5 + 0x44 ], %g1
                       
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
4000ec70:	05 00 08 00 	sethi  %hi(0x200000), %g2
                     
    fat_fd->fat_file_type = FAT_DIRECTORY;
                           
4000ec74:	c0 26 a0 10 	clr  [ %i2 + 0x10 ]
                           

                                                                     
    fat_fd->map.file_cln = 0;
                                        
    fat_fd->map.disk_cln = fat_fd->cln;
                              

                                                                     
    /* if we have FAT12/16 */
                                        
    if ( fat_fd->cln == 0 )
                                          
4000ec78:	80 a0 60 00 	cmp  %g1, 0
                                   
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGTH;
                       
4000ec7c:	c4 26 a0 14 	st  %g2, [ %i2 + 0x14 ]
                       
    fat_fd->cln = fs_info->fat.vol.rdir_cl;
                          
4000ec80:	c2 26 a0 1c 	st  %g1, [ %i2 + 0x1c ]
                       
    fat_fd->map.file_cln = 0;
                                        
4000ec84:	c0 26 a0 34 	clr  [ %i2 + 0x34 ]
                           
    if ( fat_fd->cln == 0 )
                                          
4000ec88:	12 80 00 25 	bne  4000ed1c <msdos_initialize_support+0x124>

4000ec8c:	c2 26 a0 38 	st  %g1, [ %i2 + 0x38 ]
                       
    {
                                                                
        fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;
          
4000ec90:	c2 07 60 34 	ld  [ %i5 + 0x34 ], %g1
                       
4000ec94:	c2 26 a0 18 	st  %g1, [ %i2 + 0x18 ]
                       
        cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?

4000ec98:	d0 07 60 08 	ld  [ %i5 + 8 ], %o0
                          
4000ec9c:	80 a2 00 01 	cmp  %o0, %g1
                                 
4000eca0:	2a 80 00 02 	bcs,a   4000eca8 <msdos_initialize_support+0xb0>

4000eca4:	90 10 00 01 	mov  %g1, %o0
                                 
            return rc;
                                               
        }
                                                            
        cl_buf_size = fs_info->fat.vol.bpc;
                          
    }
                                                                

                                                                     
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));
  
4000eca8:	7f ff d9 45 	call  400051bc <calloc>
                       
4000ecac:	92 10 20 01 	mov  1, %o1
                                   
    if (fs_info->cl_buf == NULL)
                                     
4000ecb0:	80 a2 20 00 	cmp  %o0, 0
                                   
4000ecb4:	02 80 00 22 	be  4000ed3c <msdos_initialize_support+0x144>
 <== NEVER TAKEN
4000ecb8:	d0 27 60 bc 	st  %o0, [ %i5 + 0xbc ]
                       
    const char *_name)
                                               
{
                                                                    
	struct _Mutex_recursive_Control _init =
                             
	    _MUTEX_RECURSIVE_NAMED_INITIALIZER(_name);
                      

                                                                     
	*_mutex = _init;
                                                    
4000ecbc:	03 10 00 a4 	sethi  %hi(0x40029000), %g1
                   
4000ecc0:	82 10 63 70 	or  %g1, 0x370, %g1	! 40029370 <_rodata_start+0x10>

4000ecc4:	c0 27 60 a4 	clr  [ %i5 + 0xa4 ]
                           
4000ecc8:	c2 27 60 b4 	st  %g1, [ %i5 + 0xb4 ]
                       
4000eccc:	c0 27 60 a8 	clr  [ %i5 + 0xa8 ]
                           
    }
                                                                

                                                                     
    rtems_recursive_mutex_init(&fs_info->vol_mutex,
                  
                               RTEMS_FILESYSTEM_TYPE_DOSFS);
         

                                                                     
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;
        
4000ecd0:	c2 06 20 24 	ld  [ %i0 + 0x24 ], %g1
                       
4000ecd4:	c0 27 60 ac 	clr  [ %i5 + 0xac ]
                           
4000ecd8:	c0 27 60 b0 	clr  [ %i5 + 0xb0 ]
                           
4000ecdc:	c0 27 60 b8 	clr  [ %i5 + 0xb8 ]
                           
4000ece0:	f4 20 60 08 	st  %i2, [ %g1 + 8 ]
                          
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;

4000ece4:	f6 20 60 10 	st  %i3, [ %g1 + 0x10 ]
                       
    temp_mt_entry->ops = op_table;
                                   
4000ece8:	f2 26 20 0c 	st  %i1, [ %i0 + 0xc ]
                        

                                                                     
    return rc;
                                                       
}
                                                                    
4000ecec:	81 c7 e0 08 	ret 
                                          
4000ecf0:	91 e8 00 1c 	restore  %g0, %i4, %o0
                        
            fat_file_close(&fs_info->fat, fat_fd);
                   
4000ecf4:	d2 07 bf ec 	ld  [ %fp + -20 ], %o1
                        <== NOT EXECUTED
4000ecf8:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
4000ecfc:	40 00 13 e4 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
4000ed00:	b8 10 00 01 	mov  %g1, %i4
                                 <== NOT EXECUTED
            fat_shutdown_drive(&fs_info->fat);
                       
4000ed04:	40 00 19 b4 	call  400153d4 <fat_shutdown_drive>
           <== NOT EXECUTED
4000ed08:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
            free(fs_info);
                                           
4000ed0c:	7f ff d9 b1 	call  400053d0 <free>
                         <== NOT EXECUTED
4000ed10:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
}
                                                                    
4000ed14:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ed18:	91 e8 00 1c 	restore  %g0, %i4, %o0
                        <== NOT EXECUTED
        rc = fat_file_size(&fs_info->fat, fat_fd);
                   
4000ed1c:	92 10 00 1a 	mov  %i2, %o1
                                 
4000ed20:	40 00 15 7d 	call  40014314 <fat_file_size>
                
4000ed24:	90 10 00 1d 	mov  %i5, %o0
                                 
        if ( rc != RC_OK )
                                           
4000ed28:	82 92 20 00 	orcc  %o0, 0, %g1
                             
4000ed2c:	12 bf ff f2 	bne  4000ecf4 <msdos_initialize_support+0xfc>
 <== NEVER TAKEN
4000ed30:	f4 07 bf ec 	ld  [ %fp + -20 ], %i2
                        
        cl_buf_size = fs_info->fat.vol.bpc;
                          
4000ed34:	10 bf ff dd 	b  4000eca8 <msdos_initialize_support+0xb0>
   
4000ed38:	d0 07 60 08 	ld  [ %i5 + 8 ], %o0
                          
        fat_file_close(&fs_info->fat, fat_fd);
                       
4000ed3c:	92 10 00 1a 	mov  %i2, %o1
                                 <== NOT EXECUTED
4000ed40:	40 00 13 d3 	call  40013c8c <fat_file_close>
               <== NOT EXECUTED
4000ed44:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);
                           
4000ed48:	40 00 19 a3 	call  400153d4 <fat_shutdown_drive>
           <== NOT EXECUTED
4000ed4c:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
        free(fs_info);
                                               
4000ed50:	7f ff d9 a0 	call  400053d0 <free>
                         <== NOT EXECUTED
4000ed54:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENOMEM);
                
4000ed58:	40 00 30 f9 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4000ed5c:	b8 10 3f ff 	mov  -1, %i4
                                  <== NOT EXECUTED
4000ed60:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
4000ed64:	10 bf ff ec 	b  4000ed14 <msdos_initialize_support+0x11c>
  <== NOT EXECUTED
4000ed68:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED

                                                                     

400181f0 <msdos_long_to_short>: {
400181f0:	9d e3 bf 90 	save  %sp, -112, %sp
                          
    size_t            codepage_name_len = converter->buffer.size;
    
400181f4:	c2 06 20 08 	ld  [ %i0 + 8 ], %g1
                          
400181f8:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
    memset (sfn, ' ', sfn_len);
                                      
400181fc:	94 10 00 1c 	mov  %i4, %o2
                                 
    void             *buffer = converter->buffer.data;
               
40018200:	e0 06 20 04 	ld  [ %i0 + 4 ], %l0
                          
    memset (sfn, ' ', sfn_len);
                                      
40018204:	92 10 20 20 	mov  0x20, %o1
                                
40018208:	40 00 0e fa 	call  4001bdf0 <memset>
                       
4001820c:	90 10 00 1b 	mov  %i3, %o0
                                 
    if ((lfn[0] == '.') && (lfn_len == 1))
                           
40018210:	c2 4e 40 00 	ldsb  [ %i1 ], %g1
                            
40018214:	80 a0 60 2e 	cmp  %g1, 0x2e
                                
40018218:	02 80 00 81 	be  4001841c <msdos_long_to_short+0x22c>
      
4001821c:	80 a6 a0 00 	cmp  %i2, 0
                                   
    for (i = 0; i < lfn_len; i++)
                                    
40018220:	04 80 00 78 	ble  40018400 <msdos_long_to_short+0x210>
     <== NEVER TAKEN
40018224:	80 a0 60 20 	cmp  %g1, 0x20
                                
        if ((lfn[i] != ' ') && (lfn[i] != '.'))
                      
40018228:	12 80 00 0c 	bne  40018258 <msdos_long_to_short+0x68>
      
4001822c:	82 10 20 00 	clr  %g1
                                      
    for (i = 0; i < lfn_len; i++)
                                    
40018230:	82 00 60 01 	inc  %g1
                                      
40018234:	80 a6 80 01 	cmp  %i2, %g1
                                 
40018238:	04 80 00 74 	ble  40018408 <msdos_long_to_short+0x218>
     
4001823c:	01 00 00 00 	nop 
                                          
        if ((lfn[i] != ' ') && (lfn[i] != '.'))
                      
40018240:	c4 4e 40 01 	ldsb  [ %i1 + %g1 ], %g2
                      
40018244:	80 a0 a0 20 	cmp  %g2, 0x20
                                
40018248:	02 bf ff fa 	be  40018230 <msdos_long_to_short+0x40>
       
4001824c:	80 a0 a0 2e 	cmp  %g2, 0x2e
                                
40018250:	02 bf ff f9 	be  40018234 <msdos_long_to_short+0x44>
       
40018254:	82 00 60 01 	inc  %g1
                                      
    eno = (*converter->handler->utf8_to_codepage) (
                  
40018258:	c2 06 00 00 	ld  [ %i0 ], %g1
                              
4001825c:	c2 00 40 00 	ld  [ %g1 ], %g1
                              
40018260:	98 07 bf fc 	add  %fp, -4, %o4
                             
40018264:	96 10 00 10 	mov  %l0, %o3
                                 
40018268:	94 10 00 1a 	mov  %i2, %o2
                                 
4001826c:	92 10 00 19 	mov  %i1, %o1
                                 
40018270:	9f c0 40 00 	call  %g1
                                     
40018274:	90 10 00 18 	mov  %i0, %o0
                                 
    if (eno == EINVAL)
                                               
40018278:	80 a2 20 16 	cmp  %o0, 0x16
                                
4001827c:	02 80 00 52 	be  400183c4 <msdos_long_to_short+0x1d4>
      
40018280:	ba 10 20 02 	mov  2, %i5
                                   
    while (*name && (count < name_len))
                              
40018284:	fa 0c 00 00 	ldub  [ %l0 ], %i5
                            
        type = msdos_name_type (
                                     
40018288:	e6 07 bf fc 	ld  [ %fp + -4 ], %l3
                         
    while (*name && (count < name_len))
                              
4001828c:	93 2f 60 18 	sll  %i5, 0x18, %o1
                           
40018290:	80 a0 00 09 	cmp  %g0, %o1
                                 
40018294:	83 3c e0 1f 	sra  %l3, 0x1f, %g1
                           
40018298:	84 40 20 00 	addx  %g0, 0, %g2
                             
4001829c:	82 20 40 13 	sub  %g1, %l3, %g1
                            
400182a0:	83 30 60 1f 	srl  %g1, 0x1f, %g1
                           
400182a4:	82 08 80 01 	and  %g2, %g1, %g1
                            
400182a8:	80 a0 60 00 	cmp  %g1, 0
                                   
400182ac:	02 80 00 6a 	be  40018454 <msdos_long_to_short+0x264>
      <== NEVER TAKEN
400182b0:	a8 10 00 01 	mov  %g1, %l4
                                 
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL) || (unsigned char) ch > 127)

400182b4:	2b 10 00 a9 	sethi  %hi(0x4002a400), %l5
                   
    bool lowercase = false;
                                          
400182b8:	c0 2f bf f7 	clrb  [ %fp + -9 ]
                            
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL) || (unsigned char) ch > 127)

400182bc:	82 15 60 60 	or  %l5, 0x60, %g1
                            
400182c0:	c2 27 bf f0 	st  %g1, [ %fp + -16 ]
                        
    if (strchr(" +,;=[]", ch) != NULL)
                               
400182c4:	25 10 00 a9 	sethi  %hi(0x4002a400), %l2
                   
    bool uppercase = false;
                                          
400182c8:	ac 10 20 00 	clr  %l6
                                      
    int  count = 0;
                                                  
400182cc:	ae 10 20 00 	clr  %l7
                                      
    int  dot_at = -1;
                                                
400182d0:	a2 10 3f ff 	mov  -1, %l1
                                  
    if (strchr(" +,;=[]", ch) != NULL)
                               
400182d4:	a4 14 a0 58 	or  %l2, 0x58, %l2
                            
400182d8:	ab 3a 60 18 	sra  %o1, 0x18, %l5
                           
400182dc:	90 10 00 12 	mov  %l2, %o0
                                 
400182e0:	40 00 12 62 	call  4001cc68 <strchr>
                       
400182e4:	92 10 00 15 	mov  %l5, %o1
                                 
400182e8:	80 a2 20 00 	cmp  %o0, 0
                                   
400182ec:	32 80 00 36 	bne,a   400183c4 <msdos_long_to_short+0x1d4>
  
400182f0:	ba 10 20 02 	mov  2, %i5
                                   
    if ((ch == '.') || isalnum((unsigned char)ch) ||
                 
400182f4:	80 a5 60 2e 	cmp  %l5, 0x2e
                                
400182f8:	02 80 00 3e 	be  400183f0 <msdos_long_to_short+0x200>
      
400182fc:	80 a4 7f ff 	cmp  %l1, -1
                                  
40018300:	40 00 0d d9 	call  4001ba64 <__locale_ctype_ptr>
           
40018304:	ba 0f 60 ff 	and  %i5, 0xff, %i5
                           
40018308:	90 02 00 1d 	add  %o0, %i5, %o0
                            
4001830c:	c6 0a 20 01 	ldub  [ %o0 + 1 ], %g3
                        
40018310:	80 88 e0 07 	btst  7, %g3
                                  
40018314:	12 80 00 0a 	bne  4001833c <msdos_long_to_short+0x14c>
     
40018318:	d0 07 bf f0 	ld  [ %fp + -16 ], %o0
                        
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL) || (unsigned char) ch > 127)

4001831c:	40 00 12 53 	call  4001cc68 <strchr>
                       
40018320:	92 10 00 15 	mov  %l5, %o1
                                 
40018324:	80 a2 20 00 	cmp  %o0, 0
                                   
40018328:	12 80 00 05 	bne  4001833c <msdos_long_to_short+0x14c>
     
4001832c:	bb 37 60 07 	srl  %i5, 7, %i5
                              
40018330:	80 a7 60 00 	cmp  %i5, 0
                                   
40018334:	02 80 00 38 	be  40018414 <msdos_long_to_short+0x224>
      
40018338:	ba 10 20 00 	clr  %i5
                                      
        if (dot_at >= 0)
                                             
4001833c:	80 a4 7f ff 	cmp  %l1, -1
                                  
40018340:	02 80 00 4d 	be  40018474 <msdos_long_to_short+0x284>
      
40018344:	82 25 c0 11 	sub  %l7, %l1, %g1
                            
            if (is_dot || ((count - dot_at) > 3))
                    
40018348:	80 a0 60 03 	cmp  %g1, 3
                                   
4001834c:	14 80 00 1e 	bg  400183c4 <msdos_long_to_short+0x1d4>
      
40018350:	ba 10 20 02 	mov  2, %i5
                                   
        else if ((*name >= 'A') && (*name <= 'Z'))
                   
40018354:	c2 0c 00 17 	ldub  [ %l0 + %l7 ], %g1
                      
40018358:	86 00 7f bf 	add  %g1, -65, %g3
                            
4001835c:	80 a0 e0 19 	cmp  %g3, 0x19
                                
40018360:	28 80 00 06 	bleu,a   40018378 <msdos_long_to_short+0x188>
 
40018364:	ac 10 00 14 	mov  %l4, %l6
                                 
        else if ((*name >= 'a') && (*name <= 'z'))
                   
40018368:	82 00 7f 9f 	add  %g1, -97, %g1
                            
4001836c:	80 a0 60 19 	cmp  %g1, 0x19
                                
40018370:	28 80 00 02 	bleu,a   40018378 <msdos_long_to_short+0x188>
 
40018374:	e8 2f bf f7 	stb  %l4, [ %fp + -9 ]
                        
        count++;
                                                     
40018378:	ae 05 e0 01 	inc  %l7
                                      
    while (*name && (count < name_len))
                              
4001837c:	fa 0c 00 17 	ldub  [ %l0 + %l7 ], %i5
                      
40018380:	93 2f 60 18 	sll  %i5, 0x18, %o1
                           
40018384:	80 a2 60 00 	cmp  %o1, 0
                                   
40018388:	02 80 00 08 	be  400183a8 <msdos_long_to_short+0x1b8>
      
4001838c:	80 a4 c0 17 	cmp  %l3, %l7
                                 
40018390:	14 80 00 03 	bg  4001839c <msdos_long_to_short+0x1ac>
      
40018394:	82 10 20 01 	mov  1, %g1
                                   
40018398:	82 10 20 00 	clr  %g1
                                      
4001839c:	80 88 60 ff 	btst  0xff, %g1
                               
400183a0:	32 bf ff cf 	bne,a   400182dc <msdos_long_to_short+0xec>
   
400183a4:	ab 3a 60 18 	sra  %o1, 0x18, %l5
                           
    if (lowercase && uppercase)
                                      
400183a8:	c2 0f bf f7 	ldub  [ %fp + -9 ], %g1
                       
400183ac:	80 88 60 ff 	btst  0xff, %g1
                               
400183b0:	02 80 00 29 	be  40018454 <msdos_long_to_short+0x264>
      
400183b4:	80 8d a0 ff 	btst  0xff, %l6
                               
400183b8:	02 80 00 03 	be  400183c4 <msdos_long_to_short+0x1d4>
      
400183bc:	ba 10 20 01 	mov  1, %i5
                                   
        type = MSDOS_NAME_LONG;
                                      
400183c0:	ba 10 20 02 	mov  2, %i5
                                   
        short_filename_length = msdos_filename_utf8_to_short_name_for_save (

400183c4:	98 10 00 1c 	mov  %i4, %o4
                                 
400183c8:	96 10 00 1b 	mov  %i3, %o3
                                 
400183cc:	94 10 00 1a 	mov  %i2, %o2
                                 
400183d0:	92 10 00 19 	mov  %i1, %o1
                                 
400183d4:	40 00 08 6c 	call  4001a584 <msdos_filename_utf8_to_short_name_for_save>

400183d8:	90 10 00 18 	mov  %i0, %o0
                                 
        if (short_filename_length < 0 ) {
                            
400183dc:	80 a2 20 00 	cmp  %o0, 0
                                   
400183e0:	26 80 00 0d 	bl,a   40018414 <msdos_long_to_short+0x224>
   <== NEVER TAKEN
400183e4:	ba 10 20 00 	clr  %i5
                                      <== NOT EXECUTED
}
                                                                    
400183e8:	81 c7 e0 08 	ret 
                                          
400183ec:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
        if (dot_at >= 0)
                                             
400183f0:	12 bf ff f5 	bne  400183c4 <msdos_long_to_short+0x1d4>
     
400183f4:	ba 10 20 02 	mov  2, %i5
                                   
400183f8:	10 bf ff e0 	b  40018378 <msdos_long_to_short+0x188>
       
400183fc:	a2 10 00 17 	mov  %l7, %l1
                                 
    for (i = 0; i < lfn_len; i++)
                                    
40018400:	82 10 20 00 	clr  %g1
                                      <== NOT EXECUTED
    if (i == lfn_len)
                                                
40018404:	80 a6 80 01 	cmp  %i2, %g1
                                 <== NOT EXECUTED
40018408:	32 bf ff 95 	bne,a   4001825c <msdos_long_to_short+0x6c>
   <== NEVER TAKEN
4001840c:	c2 06 00 00 	ld  [ %i0 ], %g1
                              <== NOT EXECUTED
            type = MSDOS_NAME_INVALID;
                               
40018410:	ba 10 20 00 	clr  %i5
                                      
}
                                                                    
40018414:	81 c7 e0 08 	ret 
                                          
40018418:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
    if ((lfn[0] == '.') && (lfn_len == 1))
                           
4001841c:	80 a6 a0 01 	cmp  %i2, 1
                                   
40018420:	02 80 00 0f 	be  4001845c <msdos_long_to_short+0x26c>
      
40018424:	ba 10 20 01 	mov  1, %i5
                                   
    if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))
        
40018428:	c4 4e 60 01 	ldsb  [ %i1 + 1 ], %g2
                        
4001842c:	80 a0 a0 2e 	cmp  %g2, 0x2e
                                
40018430:	12 80 00 04 	bne  40018440 <msdos_long_to_short+0x250>
     <== NEVER TAKEN
40018434:	80 a6 a0 02 	cmp  %i2, 2
                                   
40018438:	22 80 00 0c 	be,a   40018468 <msdos_long_to_short+0x278>
   
4001843c:	c2 2e e0 01 	stb  %g1, [ %i3 + 1 ]
                         
    for (i = 0; i < lfn_len; i++)
                                    
40018440:	80 a6 a0 00 	cmp  %i2, 0
                                   
40018444:	14 bf ff 7b 	bg  40018230 <msdos_long_to_short+0x40>
       <== ALWAYS TAKEN
40018448:	82 10 20 00 	clr  %g1
                                      
    if (i == lfn_len)
                                                
4001844c:	10 bf ff ef 	b  40018408 <msdos_long_to_short+0x218>
       <== NOT EXECUTED
40018450:	80 a6 80 01 	cmp  %i2, %g1
                                 <== NOT EXECUTED
    return MSDOS_NAME_SHORT;
                                         
40018454:	10 bf ff dc 	b  400183c4 <msdos_long_to_short+0x1d4>
       
40018458:	ba 10 20 01 	mov  1, %i5
                                   
        sfn[0] = '.';
                                                
4001845c:	c2 2e c0 00 	stb  %g1, [ %i3 ]
                             
}
                                                                    
40018460:	81 c7 e0 08 	ret 
                                          
40018464:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
        return MSDOS_NAME_SHORT;
                                     
40018468:	ba 10 20 01 	mov  1, %i5
                                   
4001846c:	10 bf ff df 	b  400183e8 <msdos_long_to_short+0x1f8>
       
40018470:	c2 2e c0 00 	stb  %g1, [ %i3 ]
                             
            if (count == 8 && !is_dot)
                               
40018474:	80 a5 e0 08 	cmp  %l7, 8
                                   
40018478:	32 bf ff b8 	bne,a   40018358 <msdos_long_to_short+0x168>
  
4001847c:	c2 0c 00 17 	ldub  [ %l0 + %l7 ], %g1
                      
        type = MSDOS_NAME_LONG;
                                      
40018480:	10 bf ff d1 	b  400183c4 <msdos_long_to_short+0x1d4>
       
40018484:	ba 10 20 02 	mov  2, %i5
                                   

                                                                     

4000ed6c <msdos_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
4000ed6c:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    fat_file_type_t      type = 0;
                                   

                                                                     
    /*
                                                               
     *  Figure out what type of msdos node this is.
                  
     */
                                                              
    if (S_ISDIR(mode))
                                               
4000ed70:	03 00 00 3c 	sethi  %hi(0xf000), %g1
                       
4000ed74:	05 00 00 10 	sethi  %hi(0x4000), %g2
                       
4000ed78:	82 0e c0 01 	and  %i3, %g1, %g1
                            
4000ed7c:	80 a0 40 02 	cmp  %g1, %g2
                                 
4000ed80:	02 80 00 0b 	be  4000edac <msdos_mknod+0x40>
               
4000ed84:	07 00 00 20 	sethi  %hi(0x8000), %g3
                       
    {
                                                                
       type = FAT_DIRECTORY;
                                         
    }
                                                                
    else if (S_ISREG(mode))
                                          
4000ed88:	80 a0 40 03 	cmp  %g1, %g3
                                 
4000ed8c:	12 80 00 0f 	bne  4000edc8 <msdos_mknod+0x5c>
              <== NEVER TAKEN
4000ed90:	84 10 20 04 	mov  4, %g2
                                   
    }
                                                                
    else
                                                             
        rtems_set_errno_and_return_minus_one(EINVAL);
                

                                                                     
    /* Create an MSDOS node */
                                       
    rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);

4000ed94:	b8 10 00 1b 	mov  %i3, %i4
                                 
4000ed98:	ba 10 20 00 	clr  %i5
                                      
4000ed9c:	b6 10 00 1a 	mov  %i2, %i3
                                 
4000eda0:	b4 10 00 19 	mov  %i1, %i2
                                 
4000eda4:	40 00 23 2a 	call  40017a4c <msdos_creat_node>
             
4000eda8:	93 e8 00 02 	restore  %g0, %g2, %o1
                        
       type = FAT_DIRECTORY;
                                         
4000edac:	84 10 20 00 	clr  %g2
                                      
    rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);

4000edb0:	b8 10 00 1b 	mov  %i3, %i4
                                 
4000edb4:	ba 10 20 00 	clr  %i5
                                      
4000edb8:	b6 10 00 1a 	mov  %i2, %i3
                                 
4000edbc:	b4 10 00 19 	mov  %i1, %i2
                                 
4000edc0:	40 00 23 23 	call  40017a4c <msdos_creat_node>
             
4000edc4:	93 e8 00 02 	restore  %g0, %g2, %o1
                        
        rtems_set_errno_and_return_minus_one(EINVAL);
                
4000edc8:	40 00 30 dd 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4000edcc:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4000edd0:	82 10 20 16 	mov  0x16, %g1
                                <== NOT EXECUTED
4000edd4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED

                                                                     
    return rc;
                                                       
}
                                                                    
4000edd8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000eddc:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40029f64 <msdos_ops>: 40029f64: 40 00 eb 1c 40 00 eb 30 40 01 7f 9c 40 01 2a 00 @...@..0@...@.*. 40029f74: 40 00 39 44 40 00 ed 6c 40 00 ee 28 40 01 29 54 @.9D@..l@..(@.)T 40029f84: 40 01 29 1c 40 00 eb 0c 40 01 7f b4 40 01 2b b4 @.).@...@...@.+. 40029f94: 40 01 2c b0 40 01 7f cc 40 00 eb 44 40 01 2c 94 @.,.@...@..D@.,. 40029fa4: 40 01 2b e0 40 00 ed e0 40 00 ee d8 53 70 61 72 @.+.@...@...Spar 40029fb4: 73 65 20 44 69 73 6b 00 00 00 00 00 0a 0a 2a 2a se Disk.......** 40029fc4: 2a 20 42 45 47 49 4e 20 4f 46 20 54 45 53 54 20 * BEGIN OF TEST 40029fd4: 25 73 20 2a 2a 2a 0a 2a 2a 2a 20 54 45 53 54 20 %s ***.*** TEST 40029fe4: 56 45 52 53 49 4f 4e 3a 20 25 73 0a 2a 2a 2a 20 VERSION: %s.*** 40029ff4: 54 45 53 54 20 53 54 41 54 45 3a 20 25 73 0a 2a TEST STATE: %s.* 4002a004: 2a 2a 20 54 45 53 54 20 42 55 49 4c 44 3a 20 52 ** TEST BUILD: R 4002a014: 54 45 4d 53 5f 4e 45 54 57 4f 52 4b 49 4e 47 20 TEMS_NETWORKING 4002a024: 52 54 45 4d 53 5f 50 4f 53 49 58 5f 41 50 49 0a RTEMS_POSIX_API. 4002a034: 2a 2a 2a 20 54 45 53 54 20 54 4f 4f 4c 53 3a 20 *** TEST TOOLS: 4002a044: 37 2e 33 2e 30 20 32 30 31 38 30 31 32 35 20 28 7.3.0 20180125 ( 4002a054: 52 54 45 4d 53 20 35 2c 20 52 53 42 20 32 35 66 RTEMS 5, RSB 25f 4002a064: 34 64 62 30 39 63 38 35 61 35 32 66 62 31 36 34 4db09c85a52fb164 4002a074: 30 61 32 39 66 39 62 64 63 32 64 65 38 63 32 37 0a29f9bdc2de8c27 4002a084: 36 38 39 38 38 2c 20 4e 65 77 6c 69 62 20 33 2e 68988, Newlib 3. 4002a094: 30 2e 30 29 0a 00 00 00 00 00 00 00 0a 2a 2a 2a 0.0).........*** 4002a0a4: 20 45 4e 44 20 4f 46 20 54 45 53 54 20 25 73 20 END OF TEST %s 4002a0b4: 2a 2a 2a 0a 0a 00 00 00 00 00 00 00 45 58 50 45 ***.........EXPE 4002a0c4: 43 54 45 44 2d 50 41 53 53 00 00 00 45 58 50 45 CTED-PASS...EXPE 4002a0d4: 43 54 45 44 2d 46 41 49 4c 00 00 00 55 53 45 52 CTED-FAIL...USER 4002a0e4: 5f 49 4e 50 55 54 00 00 00 00 00 00 49 4e 44 45 _INPUT......INDE 4002a0f4: 54 45 52 4d 49 4e 41 54 45 00 00 00 42 45 4e 43 TERMINATE...BENC 4002a104: 48 4d 41 52 4b 00 00 00 HMARK...
4000ede0 <msdos_rename>: const rtems_filesystem_location_info_t *old_loc, const rtems_filesystem_location_info_t *new_parent_loc, const char *new_name, size_t new_namelen ) {
4000ede0:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
    int                rc = RC_OK;
                                   
    fat_file_fd_t     *old_fat_fd  = old_loc->node_access;
           
4000ede4:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          <== NOT EXECUTED

                                                                     
    /*
                                                               
     * create new directory entry as "hard link", copying relevant info from

     * existing file
                                                 
     */
                                                              
    rc = msdos_creat_node(new_parent_loc,
                            
4000ede8:	9a 10 00 1d 	mov  %i5, %o5
                                 <== NOT EXECUTED
4000edec:	19 00 00 20 	sethi  %hi(0x8000), %o4
                       <== NOT EXECUTED
4000edf0:	96 10 00 1c 	mov  %i4, %o3
                                 <== NOT EXECUTED
4000edf4:	94 10 00 1b 	mov  %i3, %o2
                                 <== NOT EXECUTED
4000edf8:	92 10 20 02 	mov  2, %o1
                                   <== NOT EXECUTED
4000edfc:	40 00 23 14 	call  40017a4c <msdos_creat_node>
             <== NOT EXECUTED
4000ee00:	90 10 00 1a 	mov  %i2, %o0
                                 <== NOT EXECUTED
                          FAT_HARD_LINK,new_name,new_namelen,S_IFREG,

                          old_fat_fd);
                               
    if (rc != RC_OK)
                                                 
4000ee04:	80 a2 20 00 	cmp  %o0, 0
                                   <== NOT EXECUTED
4000ee08:	02 80 00 04 	be  4000ee18 <msdos_rename+0x38>
              <== NOT EXECUTED
4000ee0c:	b0 10 00 08 	mov  %o0, %i0
                                 <== NOT EXECUTED
    rc = msdos_set_first_char4file_name(old_loc->mt_entry,
           
                                        &old_fat_fd->dir_pos,
        
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);
 

                                                                     
    return rc;
                                                       
}
                                                                    
4000ee10:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ee14:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
    rc = msdos_set_first_char4file_name(old_loc->mt_entry,
           
4000ee18:	f0 06 60 14 	ld  [ %i1 + 0x14 ], %i0
                       <== NOT EXECUTED
4000ee1c:	b4 10 20 e5 	mov  0xe5, %i2
                                <== NOT EXECUTED
4000ee20:	40 00 26 52 	call  40018768 <msdos_set_first_char4file_name>
<== NOT EXECUTED
4000ee24:	93 ef 60 20 	restore  %i5, 0x20, %o1
                       <== NOT EXECUTED

                                                                     

4000ee28 <msdos_rmnod>: #include "msdos.h" int msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc, const rtems_filesystem_location_info_t *pathloc) {
4000ee28:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    int                rc = RC_OK;
                                   
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;
         
    fat_file_fd_t     *fat_fd = pathloc->node_access;
                
4000ee2c:	fa 06 60 08 	ld  [ %i1 + 8 ], %i5
                          
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;
         
4000ee30:	d0 06 60 14 	ld  [ %i1 + 0x14 ], %o0
                       

                                                                     
    if (fat_fd->fat_file_type == FAT_DIRECTORY)
                      
4000ee34:	c2 07 60 10 	ld  [ %i5 + 0x10 ], %g1
                       
4000ee38:	80 a0 60 00 	cmp  %g1, 0
                                   
4000ee3c:	12 80 00 11 	bne  4000ee80 <msdos_rmnod+0x58>
              
4000ee40:	f8 02 20 08 	ld  [ %o0 + 8 ], %i4
                          
    {
                                                                
        bool is_empty = false;
                                       
4000ee44:	c0 2f bf ff 	clrb  [ %fp + -1 ]
                            

                                                                     
        /*
                                                           
         * You cannot remove a node that still has children
          
         */
                                                          
        rc = msdos_dir_is_empty(pathloc->mt_entry, fat_fd, &is_empty);

4000ee48:	94 07 bf ff 	add  %fp, -1, %o2
                             
4000ee4c:	40 00 26 ab 	call  400188f8 <msdos_dir_is_empty>
           
4000ee50:	92 10 00 1d 	mov  %i5, %o1
                                 
        if (rc != RC_OK)
                                             
4000ee54:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000ee58:	12 80 00 12 	bne  4000eea0 <msdos_rmnod+0x78>
              <== NEVER TAKEN
4000ee5c:	c2 0f bf ff 	ldub  [ %fp + -1 ], %g1
                       
        {
                                                            
            return rc;
                                               
        }
                                                            

                                                                     
        if (!is_empty)
                                               
4000ee60:	80 a0 60 00 	cmp  %g1, 0
                                   
4000ee64:	02 80 00 11 	be  4000eea8 <msdos_rmnod+0x80>
               
4000ee68:	01 00 00 00 	nop 
                                          

                                                                     
        /*
                                                           
         * We deny attempts to delete open directory (if directory is current

         * directory we assume it is open one)
                       
         */
                                                          
        if (fat_fd->links_num > 1)
                                   
4000ee6c:	c2 07 60 08 	ld  [ %i5 + 8 ], %g1
                          
4000ee70:	80 a0 60 01 	cmp  %g1, 1
                                   
4000ee74:	18 80 00 13 	bgu  4000eec0 <msdos_rmnod+0x98>
              <== NEVER TAKEN
4000ee78:	01 00 00 00 	nop 
                                          
4000ee7c:	d0 06 60 14 	ld  [ %i1 + 0x14 ], %o0
                       
         * not used - mount() not implemenetd yet.
                   
         */
                                                          
    }
                                                                

                                                                     
    /* mark file removed */
                                          
    rc = msdos_set_first_char4file_name(pathloc->mt_entry, &fat_fd->dir_pos,

4000ee80:	94 10 20 e5 	mov  0xe5, %o2
                                
4000ee84:	40 00 26 39 	call  40018768 <msdos_set_first_char4file_name>

4000ee88:	92 07 60 20 	add  %i5, 0x20, %o1
                           
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);
 
    if (rc != RC_OK)
                                                 
4000ee8c:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000ee90:	12 80 00 04 	bne  4000eea0 <msdos_rmnod+0x78>
              <== NEVER TAKEN
4000ee94:	92 10 00 1d 	mov  %i5, %o1
                                 
    {
                                                                
        return rc;
                                                   
    }
                                                                

                                                                     
    fat_file_mark_removed(&fs_info->fat, fat_fd);
                    
4000ee98:	40 00 15 07 	call  400142b4 <fat_file_mark_removed>
        
4000ee9c:	90 10 00 1c 	mov  %i4, %o0
                                 

                                                                     
    return rc;
                                                       
}
                                                                    
4000eea0:	81 c7 e0 08 	ret 
                                          
4000eea4:	81 e8 00 00 	restore 
                                      
            rtems_set_errno_and_return_minus_one(ENOTEMPTY);
         
4000eea8:	40 00 30 a5 	call  4001b13c <__errno>
                      
4000eeac:	b0 10 3f ff 	mov  -1, %i0
                                  
4000eeb0:	82 10 20 5a 	mov  0x5a, %g1
                                
4000eeb4:	c2 22 00 00 	st  %g1, [ %o0 ]
                              
4000eeb8:	81 c7 e0 08 	ret 
                                          
4000eebc:	81 e8 00 00 	restore 
                                      
            rtems_set_errno_and_return_minus_one(EBUSY);
             
4000eec0:	40 00 30 9f 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4000eec4:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4000eec8:	82 10 20 10 	mov  0x10, %g1
                                <== NOT EXECUTED
4000eecc:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
4000eed0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000eed4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40018768 <msdos_set_first_char4file_name>: {
40018768:	9d e3 bf 98 	save  %sp, -104, %sp
                          
    fat_pos_t        start = dir_pos->lname;
                         
4001876c:	c2 06 60 0c 	ld  [ %i1 + 0xc ], %g1
                        
40018770:	c4 06 60 08 	ld  [ %i1 + 8 ], %g2
                          
    msdos_fs_info_t *fs_info = mt_entry->fs_info;
                    
40018774:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          
{
                                                                    
40018778:	f4 2f a0 4c 	stb  %i2, [ %fp + 0x4c ]
                      
    fat_pos_t        start = dir_pos->lname;
                         
4001877c:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
40018780:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
    fat_pos_t        end = dir_pos->sname;
                           
40018784:	f8 06 40 00 	ld  [ %i1 ], %i4
                              
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&
                     
40018788:	c2 07 60 44 	ld  [ %i5 + 0x44 ], %g1
                       
4001878c:	80 a0 40 1c 	cmp  %g1, %i4
                                 
40018790:	02 80 00 54 	be  400188e0 <msdos_set_first_char4file_name+0x178>

40018794:	f4 06 60 04 	ld  [ %i1 + 4 ], %i2
                          
      dir_block_size = fs_info->fat.vol.bpc;
                         
40018798:	f6 07 60 08 	ld  [ %i5 + 8 ], %i3
                          
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)
                   
4001879c:	c2 06 60 08 	ld  [ %i1 + 8 ], %g1
                          
400187a0:	80 a0 7f ff 	cmp  %g1, -1
                                  
400187a4:	22 80 00 4a 	be,a   400188cc <msdos_set_first_char4file_name+0x164>

400187a8:	c2 06 60 04 	ld  [ %i1 + 4 ], %g1
                          
400187ac:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
400187b0:	10 80 00 1b 	b  4001881c <msdos_set_first_char4file_name+0xb4>

400187b4:	d2 07 bf f8 	ld  [ %fp + -8 ], %o1
                         
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

400187b8:	80 88 60 03 	btst  3, %g1
                                  
400187bc:	22 80 00 1c 	be,a   4001882c <msdos_set_first_char4file_name+0xc4>
<== NEVER TAKEN
400187c0:	c2 0f 60 05 	ldub  [ %i5 + 5 ], %g1
                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;
                                
400187c4:	c2 07 60 28 	ld  [ %i5 + 0x28 ], %g1
                       
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
      
400187c8:	d4 17 40 00 	lduh  [ %i5 ], %o2
                            
                      (start.ofs >> fs_info->fat.vol.sec_log2));
     
400187cc:	d2 0f 60 02 	ldub  [ %i5 + 2 ], %o1
                        
400187d0:	93 30 80 09 	srl  %g2, %o1, %o1
                            
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
      
400187d4:	94 02 bf ff 	add  %o2, -1, %o2
                             
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,

400187d8:	98 07 a0 4c 	add  %fp, 0x4c, %o4
                           
400187dc:	94 0a 80 02 	and  %o2, %g2, %o2
                            
400187e0:	96 10 20 01 	mov  1, %o3
                                   
400187e4:	92 02 40 01 	add  %o1, %g1, %o1
                            
400187e8:	7f ff ef cc 	call  40014718 <fat_sector_write>
             
400187ec:	90 10 00 1d 	mov  %i5, %o0
                                 
      if (ret < 0)
                                                   
400187f0:	80 a2 20 00 	cmp  %o0, 0
                                   
400187f4:	06 80 00 20 	bl  40018874 <msdos_set_first_char4file_name+0x10c>
<== NEVER TAKEN
400187f8:	b0 10 3f ff 	mov  -1, %i0
                                  
      if ((start.cln == end.cln) && (start.ofs == end.ofs))
          
400187fc:	d2 07 bf f8 	ld  [ %fp + -8 ], %o1
                         
40018800:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
40018804:	80 a7 00 09 	cmp  %i4, %o1
                                 
40018808:	02 80 00 1d 	be  4001887c <msdos_set_first_char4file_name+0x114>

4001880c:	84 00 60 20 	add  %g1, 0x20, %g2
                           
      if (start.ofs >= dir_block_size)
                               
40018810:	80 a0 80 1b 	cmp  %g2, %i3
                                 
40018814:	1a 80 00 1f 	bcc  40018890 <msdos_set_first_char4file_name+0x128>

40018818:	c4 27 bf fc 	st  %g2, [ %fp + -4 ]
                         
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )

4001881c:	80 a2 60 00 	cmp  %o1, 0
                                   
40018820:	22 bf ff e6 	be,a   400187b8 <msdos_set_first_char4file_name+0x50>

40018824:	c2 0f 60 16 	ldub  [ %i5 + 0x16 ], %g1
                     
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +
       
40018828:	c2 0f 60 05 	ldub  [ %i5 + 5 ], %g1
                        
4001882c:	c6 07 60 3c 	ld  [ %i5 + 0x3c ], %g3
                       
40018830:	92 02 7f fe 	add  %o1, -2, %o1
                             
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
      
40018834:	d4 17 40 00 	lduh  [ %i5 ], %o2
                            
40018838:	83 2a 40 01 	sll  %o1, %g1, %g1
                            
                      (start.ofs >> fs_info->fat.vol.sec_log2));
     
4001883c:	d2 0f 60 02 	ldub  [ %i5 + 2 ], %o1
                        
40018840:	82 00 40 03 	add  %g1, %g3, %g1
                            
40018844:	93 30 80 09 	srl  %g2, %o1, %o1
                            
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));
      
40018848:	94 02 bf ff 	add  %o2, -1, %o2
                             
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,

4001884c:	98 07 a0 4c 	add  %fp, 0x4c, %o4
                           
40018850:	94 0a 80 02 	and  %o2, %g2, %o2
                            
40018854:	96 10 20 01 	mov  1, %o3
                                   
40018858:	92 02 40 01 	add  %o1, %g1, %o1
                            
4001885c:	7f ff ef af 	call  40014718 <fat_sector_write>
             
40018860:	90 10 00 1d 	mov  %i5, %o0
                                 
      if (ret < 0)
                                                   
40018864:	80 a2 20 00 	cmp  %o0, 0
                                   
40018868:	16 bf ff e6 	bge  40018800 <msdos_set_first_char4file_name+0x98>
<== ALWAYS TAKEN
4001886c:	d2 07 bf f8 	ld  [ %fp + -8 ], %o1
                         
        return -1;
                                                   
40018870:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
}
                                                                    
40018874:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40018878:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED
      if ((start.cln == end.cln) && (start.ofs == end.ofs))
          
4001887c:	80 a6 80 01 	cmp  %i2, %g1
                                 
40018880:	12 bf ff e5 	bne  40018814 <msdos_set_first_char4file_name+0xac>

40018884:	80 a0 80 1b 	cmp  %g2, %i3
                                 
    return  RC_OK;
                                                   
40018888:	81 c7 e0 08 	ret 
                                          
4001888c:	91 e8 20 00 	restore  %g0, 0, %o0
                          
        if ((end.cln == fs_info->fat.vol.rdir_cl) &&
                 
40018890:	c2 07 60 44 	ld  [ %i5 + 0x44 ], %g1
                       
40018894:	80 a7 00 01 	cmp  %i4, %g1
                                 
40018898:	12 80 00 06 	bne  400188b0 <msdos_set_first_char4file_name+0x148>
<== ALWAYS TAKEN
4001889c:	94 07 bf f8 	add  %fp, -8, %o2
                             
400188a0:	c2 0f 60 16 	ldub  [ %i5 + 0x16 ], %g1
                     <== NOT EXECUTED
400188a4:	80 88 60 03 	btst  3, %g1
                                  <== NOT EXECUTED
400188a8:	12 bf ff f8 	bne  40018888 <msdos_set_first_char4file_name+0x120>
<== NOT EXECUTED
400188ac:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
        rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);

400188b0:	7f ff e9 66 	call  40012e48 <fat_get_fat_cluster>
          
400188b4:	90 10 00 1d 	mov  %i5, %o0
                                 
        if ( rc != RC_OK )
                                           
400188b8:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
400188bc:	12 bf ff ee 	bne  40018874 <msdos_set_first_char4file_name+0x10c>
<== NEVER TAKEN
400188c0:	84 10 20 00 	clr  %g2
                                      
        start.ofs = 0;
                                               
400188c4:	10 bf ff bb 	b  400187b0 <msdos_set_first_char4file_name+0x48>

400188c8:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
      start = dir_pos->sname;
                                        
400188cc:	c2 27 bf fc 	st  %g1, [ %fp + -4 ]
                         
400188d0:	c4 06 40 00 	ld  [ %i1 ], %g2
                              
400188d4:	c4 27 bf f8 	st  %g2, [ %fp + -8 ]
                         
400188d8:	10 bf ff b6 	b  400187b0 <msdos_set_first_char4file_name+0x48>

400188dc:	c4 07 bf fc 	ld  [ %fp + -4 ], %g2
                         
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&
                     
400188e0:	c2 0f 60 16 	ldub  [ %i5 + 0x16 ], %g1
                     
400188e4:	80 88 60 03 	btst  3, %g1
                                  
400188e8:	22 bf ff ad 	be,a   4001879c <msdos_set_first_char4file_name+0x34>
<== NEVER TAKEN
400188ec:	f6 07 60 08 	ld  [ %i5 + 8 ], %i3
                          <== NOT EXECUTED
      dir_block_size = fs_info->fat.vol.rdir_size;
                   
400188f0:	10 bf ff ab 	b  4001879c <msdos_set_first_char4file_name+0x34>

400188f4:	f6 07 60 34 	ld  [ %i5 + 0x34 ], %i3
                       

                                                                     

40017fcc <msdos_shut_down>: * temp_mt_entry - mount table entry * */ void msdos_shut_down(rtems_filesystem_mount_table_entry_t *temp_mt_entry) {
40017fcc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    msdos_fs_info_t *fs_info = temp_mt_entry->fs_info;
               
    fat_file_fd_t   *fat_fd = temp_mt_entry->mt_fs_root->location.node_access;

40017fd0:	c2 06 20 24 	ld  [ %i0 + 0x24 ], %g1
                       
    msdos_fs_info_t *fs_info = temp_mt_entry->fs_info;
               
40017fd4:	fa 06 20 08 	ld  [ %i0 + 8 ], %i5
                          
    rtems_dosfs_convert_control *converter = fs_info->converter;
     

                                                                     
    /* close fat-file which corresponds to root directory */
         
    fat_file_close(&fs_info->fat, fat_fd);
                           
40017fd8:	d2 00 60 08 	ld  [ %g1 + 8 ], %o1
                          
    rtems_dosfs_convert_control *converter = fs_info->converter;
     
40017fdc:	f8 07 60 c0 	ld  [ %i5 + 0xc0 ], %i4
                       
    fat_file_close(&fs_info->fat, fat_fd);
                           
40017fe0:	7f ff ef 2b 	call  40013c8c <fat_file_close>
               
40017fe4:	90 10 00 1d 	mov  %i5, %o0
                                 

                                                                     
    fat_shutdown_drive(&fs_info->fat);
                               
40017fe8:	7f ff f4 fb 	call  400153d4 <fat_shutdown_drive>
           
40017fec:	90 10 00 1d 	mov  %i5, %o0
                                 

                                                                     
    rtems_recursive_mutex_destroy(&fs_info->vol_mutex);
              
    (*converter->handler->destroy)( converter );
                     
40017ff0:	c2 07 00 00 	ld  [ %i4 ], %g1
                              
40017ff4:	c2 00 60 14 	ld  [ %g1 + 0x14 ], %g1
                       
40017ff8:	9f c0 40 00 	call  %g1
                                     
40017ffc:	90 10 00 1c 	mov  %i4, %o0
                                 
    free(fs_info->cl_buf);
                                           
40018000:	7f ff b4 f4 	call  400053d0 <free>
                         
40018004:	d0 07 60 bc 	ld  [ %i5 + 0xbc ], %o0
                       
    free(temp_mt_entry->fs_info);
                                    
40018008:	f0 06 20 08 	ld  [ %i0 + 8 ], %i0
                          <== NOT EXECUTED
4001800c:	7f ff b4 f1 	call  400053d0 <free>
                         <== NOT EXECUTED
40018010:	81 e8 00 00 	restore 
                                      

                                                                     

4000eed8 <msdos_statvfs>: #include "msdos.h" int msdos_statvfs( const rtems_filesystem_location_info_t *__restrict root_loc, struct statvfs *__restrict sb) {
4000eed8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
  msdos_fs_info_t *fs_info = root_loc->mt_entry->fs_info;
            
4000eedc:	c2 06 20 14 	ld  [ %i0 + 0x14 ], %g1
                       
4000eee0:	f8 00 60 08 	ld  [ %g1 + 8 ], %i4
                          
    rtems_recursive_mutex_lock(&fs_info->vol_mutex);
                 
4000eee4:	a2 07 20 a4 	add  %i4, 0xa4, %l1
                           
  _Mutex_recursive_Acquire( mutex );
                                 
4000eee8:	7f ff ea b9 	call  400099cc <_Mutex_recursive_Acquire>
     
4000eeec:	90 10 00 11 	mov  %l1, %o0
                                 
  fat_vol_t *vol = &fs_info->fat.vol;
                                

                                                                     
  msdos_fs_lock(fs_info);
                                            

                                                                     
  sb->f_bsize = FAT_SECTOR512_SIZE;
                                  
  sb->f_frsize = vol->bpc;
                                           
4000eef0:	c2 07 20 08 	ld  [ %i4 + 8 ], %g1
                          
  sb->f_blocks = vol->data_cls;
                                      
4000eef4:	e0 07 20 40 	ld  [ %i4 + 0x40 ], %l0
                       
  sb->f_bsize = FAT_SECTOR512_SIZE;
                                  
4000eef8:	84 10 22 00 	mov  0x200, %g2
                               
  sb->f_frsize = vol->bpc;
                                           
4000eefc:	c2 26 60 04 	st  %g1, [ %i1 + 4 ]
                          
  sb->f_bavail = 0;
                                                  
  sb->f_files = 0;    // FAT doesn't store inodes
                    
  sb->f_ffree = 0;
                                                   
  sb->f_favail = 0;
                                                  
  sb->f_flag = 0;
                                                    
  sb->f_namemax = MSDOS_NAME_MAX_LNF_LEN;
                            
4000ef00:	82 10 20 ff 	mov  0xff, %g1
                                
  sb->f_bsize = FAT_SECTOR512_SIZE;
                                  
4000ef04:	c4 26 40 00 	st  %g2, [ %i1 ]
                              
  sb->f_namemax = MSDOS_NAME_MAX_LNF_LEN;
                            
4000ef08:	c2 26 60 34 	st  %g1, [ %i1 + 0x34 ]
                       
  sb->f_bfree = 0;
                                                   
4000ef0c:	c0 26 60 10 	clr  [ %i1 + 0x10 ]
                           
4000ef10:	c0 26 60 14 	clr  [ %i1 + 0x14 ]
                           
  sb->f_bavail = 0;
                                                  
4000ef14:	c0 26 60 18 	clr  [ %i1 + 0x18 ]
                           
4000ef18:	c0 26 60 1c 	clr  [ %i1 + 0x1c ]
                           
  sb->f_blocks = vol->data_cls;
                                      
4000ef1c:	c0 26 60 08 	clr  [ %i1 + 8 ]
                              
4000ef20:	e0 26 60 0c 	st  %l0, [ %i1 + 0xc ]
                        
  sb->f_files = 0;    // FAT doesn't store inodes
                    
4000ef24:	c0 26 60 20 	clr  [ %i1 + 0x20 ]
                           
  sb->f_ffree = 0;
                                                   
4000ef28:	c0 26 60 24 	clr  [ %i1 + 0x24 ]
                           
  sb->f_favail = 0;
                                                  
4000ef2c:	c0 26 60 28 	clr  [ %i1 + 0x28 ]
                           
  sb->f_flag = 0;
                                                    
4000ef30:	c0 26 60 30 	clr  [ %i1 + 0x30 ]
                           

                                                                     
  if (vol->free_cls == FAT_UNDEFINED_VALUE)
                          
4000ef34:	c2 07 20 4c 	ld  [ %i4 + 0x4c ], %g1
                       
4000ef38:	80 a0 7f ff 	cmp  %g1, -1
                                  
4000ef3c:	22 80 00 0b 	be,a   4000ef68 <msdos_statvfs+0x90>
          <== ALWAYS TAKEN
4000ef40:	a0 04 20 02 	add  %l0, 2, %l0
                              
      }
                                                              
    }
                                                                
  }
                                                                  
  else
                                                               
  {
                                                                  
    sb->f_bfree = vol->free_cls;
                                     
4000ef44:	c0 26 60 10 	clr  [ %i1 + 0x10 ]
                           <== NOT EXECUTED
4000ef48:	c2 26 60 14 	st  %g1, [ %i1 + 0x14 ]
                       <== NOT EXECUTED
    sb->f_bavail = vol->free_cls;
                                    
4000ef4c:	c0 26 60 18 	clr  [ %i1 + 0x18 ]
                           <== NOT EXECUTED
4000ef50:	c2 26 60 1c 	st  %g1, [ %i1 + 0x1c ]
                       <== NOT EXECUTED
  }
                                                                  

                                                                     
  msdos_fs_unlock(fs_info);
                                          
  return RC_OK;
                                                      
4000ef54:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
  _Mutex_recursive_Release( mutex );
                                 
4000ef58:	7f ff ea c2 	call  40009a60 <_Mutex_recursive_Release>
     
4000ef5c:	90 10 00 11 	mov  %l1, %o0
                                 
}
                                                                    
4000ef60:	81 c7 e0 08 	ret 
                                          
4000ef64:	81 e8 00 00 	restore 
                                      
    for (; cur_cl < data_cls_val; ++cur_cl)
                          
4000ef68:	80 a4 20 02 	cmp  %l0, 2
                                   
4000ef6c:	08 bf ff fa 	bleu  4000ef54 <msdos_statvfs+0x7c>
           <== NEVER TAKEN
4000ef70:	c0 27 bf fc 	clr  [ %fp + -4 ]
                             
    uint32_t cur_cl = 2;
                                             
4000ef74:	10 80 00 10 	b  4000efb4 <msdos_statvfs+0xdc>
              
4000ef78:	ba 10 20 02 	mov  2, %i5
                                   
      if (value == FAT_GENFAT_FREE)
                                  
4000ef7c:	80 a0 60 00 	cmp  %g1, 0
                                   
4000ef80:	12 80 00 0a 	bne  4000efa8 <msdos_statvfs+0xd0>
            
4000ef84:	ba 07 60 01 	inc  %i5
                                      
        sb->f_bfree++;
                                               
4000ef88:	f4 1e 60 10 	ldd  [ %i1 + 0x10 ], %i2
                      
        sb->f_bavail++;
                                              
4000ef8c:	c4 1e 60 18 	ldd  [ %i1 + 0x18 ], %g2
                      
        sb->f_bfree++;
                                               
4000ef90:	9a 86 e0 01 	addcc  %i3, 1, %o5
                            
4000ef94:	98 46 a0 00 	addx  %i2, 0, %o4
                             
        sb->f_bavail++;
                                              
4000ef98:	b6 80 e0 01 	addcc  %g3, 1, %i3
                            
        sb->f_bfree++;
                                               
4000ef9c:	d8 3e 60 10 	std  %o4, [ %i1 + 0x10 ]
                      
        sb->f_bavail++;
                                              
4000efa0:	b4 40 a0 00 	addx  %g2, 0, %i2
                             
4000efa4:	f4 3e 60 18 	std  %i2, [ %i1 + 0x18 ]
                      
    for (; cur_cl < data_cls_val; ++cur_cl)
                          
4000efa8:	80 a4 00 1d 	cmp  %l0, %i5
                                 
4000efac:	02 bf ff eb 	be  4000ef58 <msdos_statvfs+0x80>
             
4000efb0:	b0 10 20 00 	clr  %i0
                                      
      rc = fat_get_fat_cluster(&fs_info->fat, cur_cl, &value);
       
4000efb4:	92 10 00 1d 	mov  %i5, %o1
                                 
4000efb8:	94 07 bf fc 	add  %fp, -4, %o2
                             
4000efbc:	40 00 0f a3 	call  40012e48 <fat_get_fat_cluster>
          
4000efc0:	90 10 00 1c 	mov  %i4, %o0
                                 
      if (rc != RC_OK)
                                               
4000efc4:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
4000efc8:	02 bf ff ed 	be  4000ef7c <msdos_statvfs+0xa4>
             <== ALWAYS TAKEN
4000efcc:	c2 07 bf fc 	ld  [ %fp + -4 ], %g1
                         
4000efd0:	7f ff ea a4 	call  40009a60 <_Mutex_recursive_Release>
     <== NOT EXECUTED
4000efd4:	90 10 00 11 	mov  %l1, %o0
                                 <== NOT EXECUTED
4000efd8:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000efdc:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED

                                                                     

40017a14 <rtems_dosfs_create_default_converter>: rtems_dosfs_convert_control super; uint8_t buffer[MSDOS_NAME_MAX_LFN_BYTES]; } msdos_default_convert_control; rtems_dosfs_convert_control *rtems_dosfs_create_default_converter(void) {
40017a14:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  msdos_default_convert_control *self = malloc( sizeof( *self ) );
   
40017a18:	7f ff b7 ee 	call  400059d0 <malloc>
                       
40017a1c:	90 10 22 14 	mov  0x214, %o0
                               

                                                                     
  if ( self != NULL ) {
                                              
40017a20:	b0 92 20 00 	orcc  %o0, 0, %i0
                             
40017a24:	02 80 00 08 	be  40017a44 <rtems_dosfs_create_default_converter+0x30>
<== NEVER TAKEN
40017a28:	03 10 00 a8 	sethi  %hi(0x4002a000), %g1
                   
    rtems_dosfs_convert_control *super = &self->super;
               

                                                                     
    super->handler = &msdos_default_convert_handler;
                 
40017a2c:	82 10 63 b8 	or  %g1, 0x3b8, %g1	! 4002a3b8 <msdos_default_convert_handler>

    super->buffer.data = &self->buffer;
                              
40017a30:	84 06 20 0c 	add  %i0, 0xc, %g2
                            
    super->handler = &msdos_default_convert_handler;
                 
40017a34:	c2 26 00 00 	st  %g1, [ %i0 ]
                              
    super->buffer.size = sizeof( self->buffer );
                     
40017a38:	82 10 22 08 	mov  0x208, %g1
                               
    super->buffer.data = &self->buffer;
                              
40017a3c:	c4 26 20 04 	st  %g2, [ %i0 + 4 ]
                          
    super->buffer.size = sizeof( self->buffer );
                     
40017a40:	c2 26 20 08 	st  %g1, [ %i0 + 8 ]
                          
  }
                                                                  

                                                                     
  return &self->super;
                                               
}
                                                                    
40017a44:	81 c7 e0 08 	ret 
                                          
40017a48:	81 e8 00 00 	restore 
                                      

                                                                     

4000eacc <rtems_dosfs_create_utf8_converter>: }; rtems_dosfs_convert_control *rtems_dosfs_create_utf8_converter( const char *codepage ) {
4000eacc:	9d e3 bf a0 	save  %sp, -96, %sp
                           
  msdos_utf8_convert_control *self = malloc( sizeof( *self ) );
      
4000ead0:	7f ff df ad 	call  40006984 <malloc>
                       
4000ead4:	90 10 24 2c 	mov  0x42c, %o0
                               

                                                                     
  if ( self != NULL ) {
                                              
4000ead8:	ba 92 20 00 	orcc  %o0, 0, %i5
                             
4000eadc:	02 80 00 27 	be  4000eb78 <rtems_dosfs_create_utf8_converter+0xac>
<== NEVER TAKEN
4000eae0:	39 10 00 da 	sethi  %hi(0x40036800), %i4
                   
    self->desc_codepage_to_utf8 = iconv_open( "UTF-8", codepage );
   
4000eae4:	92 10 00 18 	mov  %i0, %o1
                                 
4000eae8:	40 00 3e f1 	call  4001e6ac <iconv_open>
                   
4000eaec:	90 17 22 c0 	or  %i4, 0x2c0, %o0
                           
4000eaf0:	d0 27 60 0c 	st  %o0, [ %i5 + 0xc ]
                        
    self->desc_utf8_to_codepage = iconv_open( codepage, "UTF-8" );
   
4000eaf4:	92 17 22 c0 	or  %i4, 0x2c0, %o1
                           
4000eaf8:	40 00 3e ed 	call  4001e6ac <iconv_open>
                   
4000eafc:	90 10 00 18 	mov  %i0, %o0
                                 
4000eb00:	d0 27 60 10 	st  %o0, [ %i5 + 0x10 ]
                       
    self->desc_utf16_to_utf8    = iconv_open( "UTF-8", "UTF-16LE" );
 
4000eb04:	37 10 00 da 	sethi  %hi(0x40036800), %i3
                   
4000eb08:	90 17 22 c0 	or  %i4, 0x2c0, %o0
                           
4000eb0c:	40 00 3e e8 	call  4001e6ac <iconv_open>
                   
4000eb10:	92 16 e2 c8 	or  %i3, 0x2c8, %o1
                           
4000eb14:	d0 27 60 14 	st  %o0, [ %i5 + 0x14 ]
                       
    self->desc_utf8_to_utf16    = iconv_open( "UTF-16LE", "UTF-8" );
 
4000eb18:	92 17 22 c0 	or  %i4, 0x2c0, %o1
                           
4000eb1c:	40 00 3e e4 	call  4001e6ac <iconv_open>
                   
4000eb20:	90 16 e2 c8 	or  %i3, 0x2c8, %o0
                           
4000eb24:	d0 27 60 18 	st  %o0, [ %i5 + 0x18 ]
                       

                                                                     
    if (
                                                             
4000eb28:	c2 07 60 14 	ld  [ %i5 + 0x14 ], %g1
                       
4000eb2c:	80 a0 7f ff 	cmp  %g1, -1
                                  
4000eb30:	22 80 00 15 	be,a   4000eb84 <rtems_dosfs_create_utf8_converter+0xb8>
<== NEVER TAKEN
4000eb34:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
      self->desc_utf16_to_utf8 != INVALID_ICONV_DESC
                 
        && self->desc_utf8_to_codepage != INVALID_ICONV_DESC
         
4000eb38:	c2 07 60 10 	ld  [ %i5 + 0x10 ], %g1
                       
4000eb3c:	80 a0 7f ff 	cmp  %g1, -1
                                  
4000eb40:	22 80 00 11 	be,a   4000eb84 <rtems_dosfs_create_utf8_converter+0xb8>
<== NEVER TAKEN
4000eb44:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
        && self->desc_codepage_to_utf8 != INVALID_ICONV_DESC
         
4000eb48:	c2 07 60 0c 	ld  [ %i5 + 0xc ], %g1
                        
        && self->desc_utf8_to_utf16 != INVALID_ICONV_DESC
            
4000eb4c:	80 a0 7f ff 	cmp  %g1, -1
                                  
4000eb50:	02 80 00 0c 	be  4000eb80 <rtems_dosfs_create_utf8_converter+0xb4>
<== NEVER TAKEN
4000eb54:	80 a2 3f ff 	cmp  %o0, -1
                                  
4000eb58:	02 80 00 0a 	be  4000eb80 <rtems_dosfs_create_utf8_converter+0xb4>
<== NEVER TAKEN
4000eb5c:	03 10 00 da 	sethi  %hi(0x40036800), %g1
                   
    ) {
                                                              
      rtems_dosfs_convert_control *super = &self->super;
             

                                                                     
      super->handler = &msdos_utf8_convert_handler;
                  
4000eb60:	82 10 63 04 	or  %g1, 0x304, %g1	! 40036b04 <msdos_utf8_convert_handler>

      super->buffer.data = &self->buffer;
                            
4000eb64:	84 07 60 1c 	add  %i5, 0x1c, %g2
                           
      super->handler = &msdos_utf8_convert_handler;
                  
4000eb68:	c2 27 40 00 	st  %g1, [ %i5 ]
                              
      super->buffer.size = sizeof( self->buffer );
                   
4000eb6c:	82 10 24 10 	mov  0x410, %g1
                               
      super->buffer.data = &self->buffer;
                            
4000eb70:	c4 27 60 04 	st  %g2, [ %i5 + 4 ]
                          
      super->buffer.size = sizeof( self->buffer );
                   
4000eb74:	c2 27 60 08 	st  %g1, [ %i5 + 8 ]
                          
      self = NULL;
                                                   
    }
                                                                
  }
                                                                  

                                                                     
  return &self->super;
                                               
}
                                                                    
4000eb78:	81 c7 e0 08 	ret 
                                          
4000eb7c:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        
      msdos_utf8_destroy( &self->super );
                            
4000eb80:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
4000eb84:	7f ff ff 8e 	call  4000e9bc <msdos_utf8_destroy>
           <== NOT EXECUTED
4000eb88:	ba 10 20 00 	clr  %i5
                                      <== NOT EXECUTED
}
                                                                    
4000eb8c:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000eb90:	91 e8 00 1d 	restore  %g0, %i5, %o0
                        <== NOT EXECUTED

                                                                     

4000eb94 <rtems_dosfs_initialize>: */ int rtems_dosfs_initialize( rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ) {
4000eb94:	9d e3 bf a0 	save  %sp, -96, %sp
                           
    int                                rc = 0;
                       
    const rtems_dosfs_mount_options   *mount_options = data;
         
    rtems_dosfs_convert_control       *converter;
                    

                                                                     

                                                                     
    if (mount_options == NULL || mount_options->converter == NULL) {
 
4000eb98:	80 a6 60 00 	cmp  %i1, 0
                                   
4000eb9c:	02 80 00 0c 	be  4000ebcc <rtems_dosfs_initialize+0x38>
    
4000eba0:	01 00 00 00 	nop 
                                          
4000eba4:	f8 06 40 00 	ld  [ %i1 ], %i4
                              
4000eba8:	80 a7 20 00 	cmp  %i4, 0
                                   
4000ebac:	02 80 00 08 	be  4000ebcc <rtems_dosfs_initialize+0x38>
    <== NEVER TAKEN
4000ebb0:	37 10 00 a8 	sethi  %hi(0x4002a000), %i3
                   
    } else {
                                                         
        converter = mount_options->converter;
                        
    }
                                                                

                                                                     
    if (converter != NULL) {
                                         
        rc = msdos_initialize_support(mt_entry,
                      
4000ebb4:	35 10 00 a9 	sethi  %hi(0x4002a400), %i2
                   
4000ebb8:	33 10 00 a7 	sethi  %hi(0x40029c00), %i1
                   
4000ebbc:	b6 16 e3 d8 	or  %i3, 0x3d8, %i3
                           
4000ebc0:	b4 16 a0 18 	or  %i2, 0x18, %i2
                            
4000ebc4:	40 00 00 0d 	call  4000ebf8 <msdos_initialize_support>
     
4000ebc8:	93 ee 63 64 	restore  %i1, 0x364, %o1
                      
        converter = rtems_dosfs_create_default_converter();
          
4000ebcc:	40 00 23 92 	call  40017a14 <rtems_dosfs_create_default_converter>

4000ebd0:	01 00 00 00 	nop 
                                          
    if (converter != NULL) {
                                         
4000ebd4:	b8 92 20 00 	orcc  %o0, 0, %i4
                             
4000ebd8:	12 bf ff f7 	bne  4000ebb4 <rtems_dosfs_initialize+0x20>
   <== ALWAYS TAKEN
4000ebdc:	37 10 00 a8 	sethi  %hi(0x4002a000), %i3
                   
                                      &msdos_ops,
                    
                                      &msdos_file_handlers,
          
                                      &msdos_dir_handlers,
           
                                      converter);
                    
    } else {
                                                         
        errno = ENOMEM;
                                              
4000ebe0:	40 00 31 57 	call  4001b13c <__errno>
                      <== NOT EXECUTED
4000ebe4:	b0 10 3f ff 	mov  -1, %i0
                                  <== NOT EXECUTED
4000ebe8:	82 10 20 0c 	mov  0xc, %g1
                                 <== NOT EXECUTED
4000ebec:	c2 22 00 00 	st  %g1, [ %o0 ]
                              <== NOT EXECUTED
        rc = -1;
                                                     
    }
                                                                

                                                                     
    return rc;
                                                       
}
                                                                    
4000ebf0:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
4000ebf4:	81 e8 00 00 	restore 
                                      <== NOT EXECUTED