RTEMS 4.11
Annotated Report
Thu Dec 20 20:57:20 2012

000044dc <IMFS_dump_directory>:                                       
 */                                                                   
static void IMFS_dump_directory(                                      
  IMFS_jnode_t  *the_directory,                                       
  int            level                                                
)                                                                     
{                                                                     
    44dc:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
    44e0:	e5907050 	ldr	r7, [r0, #80]	; 0x50                          
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
    44e4:	e2808054 	add	r8, r0, #84	; 0x54                            
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( IMFS_is_directory( the_directory ) );                  
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
    44e8:	e1570008 	cmp	r7, r8                                        
 */                                                                   
static void IMFS_dump_directory(                                      
  IMFS_jnode_t  *the_directory,                                       
  int            level                                                
)                                                                     
{                                                                     
    44ec:	e1a06001 	mov	r6, r1                                        
    44f0:	159f516c 	ldrne	r5, [pc, #364]	; 4664 <IMFS_dump_directory+0x188>
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( IMFS_is_directory( the_directory ) );                  
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
    44f4:	08bd81f0 	popeq	{r4, r5, r6, r7, r8, pc}                    
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
    44f8:	e3560000 	cmp	r6, #0                                        
    44fc:	a3a04000 	movge	r4, #0                                      
    4500:	ba000008 	blt	4528 <IMFS_dump_directory+0x4c>               
      fprintf(stdout, "...." );                                       
    4504:	e5953000 	ldr	r3, [r5]                                      
    4508:	e3a01001 	mov	r1, #1                                        
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
    450c:	e0844001 	add	r4, r4, r1                                    
      fprintf(stdout, "...." );                                       
    4510:	e59f0150 	ldr	r0, [pc, #336]	; 4668 <IMFS_dump_directory+0x18c>
    4514:	e3a02004 	mov	r2, #4                                        
    4518:	e5933008 	ldr	r3, [r3, #8]                                  
    451c:	eb003827 	bl	125c0 <fwrite>                                 
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
                                                                      
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
    4520:	e1560004 	cmp	r6, r4                                        
    4524:	aafffff6 	bge	4504 <IMFS_dump_directory+0x28>               
  IMFS_jnode_t *the_jnode                                             
)                                                                     
{                                                                     
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
    4528:	e5953000 	ldr	r3, [r5]                                      
    452c:	e287000c 	add	r0, r7, #12                                   
    4530:	e5931008 	ldr	r1, [r3, #8]                                  
    4534:	eb003510 	bl	1197c <fputs>                                  
  rtems_chain_extract_unprotected( &node->Node );                     
}                                                                     
                                                                      
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{                                                                     
  return node->control->imfs_type;                                    
    4538:	e597304c 	ldr	r3, [r7, #76]	; 0x4c                          
    453c:	e5932000 	ldr	r2, [r3]                                      
  switch( IMFS_type( the_jnode ) ) {                                  
    4540:	e3520006 	cmp	r2, #6                                        
    4544:	979ff102 	ldrls	pc, [pc, r2, lsl #2]                        
    4548:	ea000033 	b	461c <IMFS_dump_directory+0x140>                <== NOT EXECUTED
    454c:	00004608 	.word	0x00004608                                  <== NOT EXECUTED
    4550:	000045e4 	.word	0x000045e4                                  <== NOT EXECUTED
    4554:	00004568 	.word	0x00004568                                  <== NOT EXECUTED
    4558:	00004568 	.word	0x00004568                                  <== NOT EXECUTED
    455c:	0000464c 	.word	0x0000464c                                  <== NOT EXECUTED
    4560:	00004630 	.word	0x00004630                                  <== NOT EXECUTED
    4564:	000045a0 	.word	0x000045a0                                  <== NOT EXECUTED
    case IMFS_HARD_LINK:                                              
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
    4568:	e5953000 	ldr	r3, [r5]                                      
    456c:	e3a01001 	mov	r1, #1                                        
    4570:	e3a02013 	mov	r2, #19                                       
    4574:	e5933008 	ldr	r3, [r3, #8]                                  
    4578:	e59f00ec 	ldr	r0, [pc, #236]	; 466c <IMFS_dump_directory+0x190>
    457c:	eb00380f 	bl	125c0 <fwrite>                                 
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
    4580:	e597304c 	ldr	r3, [r7, #76]	; 0x4c                          
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( IMFS_is_directory( the_jnode ) )                             
    4584:	e5933000 	ldr	r3, [r3]                                      
    4588:	e3530000 	cmp	r3, #0                                        
    458c:	0a00000d 	beq	45c8 <IMFS_dump_directory+0xec>               
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
    4590:	e5977000 	ldr	r7, [r7]                                      
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( IMFS_is_directory( the_directory ) );                  
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
    4594:	e1570008 	cmp	r7, r8                                        
    4598:	1affffd6 	bne	44f8 <IMFS_dump_directory+0x1c>               
    459c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    case IMFS_SYM_LINK:                                               
      fprintf(stdout, " links not printed\n" );                       
      return;                                                         
                                                                      
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
    45a0:	e5953000 	ldr	r3, [r5]                                      
    45a4:	e3a01001 	mov	r1, #1                                        
    45a8:	e5933008 	ldr	r3, [r3, #8]                                  
    45ac:	e3a02012 	mov	r2, #18                                       
    45b0:	e59f00b8 	ldr	r0, [pc, #184]	; 4670 <IMFS_dump_directory+0x194>
    45b4:	eb003801 	bl	125c0 <fwrite>                                 
    45b8:	e597304c 	ldr	r3, [r7, #76]	; 0x4c                          
    the_jnode = (IMFS_jnode_t *) the_node;                            
                                                                      
    for ( i=0 ; i<=level ; i++ )                                      
      fprintf(stdout, "...." );                                       
    IMFS_print_jnode( the_jnode );                                    
    if ( IMFS_is_directory( the_jnode ) )                             
    45bc:	e5933000 	ldr	r3, [r3]                                      
    45c0:	e3530000 	cmp	r3, #0                                        
    45c4:	1afffff1 	bne	4590 <IMFS_dump_directory+0xb4>               
      IMFS_dump_directory( the_jnode, level + 1 );                    
    45c8:	e1a00007 	mov	r0, r7                                        
    45cc:	e2861001 	add	r1, r6, #1                                    
    45d0:	ebffffc1 	bl	44dc <IMFS_dump_directory>                     
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
        !rtems_chain_is_tail( the_chain, the_node );                  
        the_node = the_node->next ) {                                 
    45d4:	e5977000 	ldr	r7, [r7]                                      
  IMFS_assert( level >= 0 );                                          
  IMFS_assert( IMFS_is_directory( the_directory ) );                  
                                                                      
  the_chain = &the_directory->info.directory.Entries;                 
                                                                      
  for ( the_node = rtems_chain_first( the_chain );                    
    45d8:	e1570008 	cmp	r7, r8                                        
    45dc:	1affffc5 	bne	44f8 <IMFS_dump_directory+0x1c>               
    45e0:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
      break;                                                          
                                                                      
    case IMFS_DEVICE:                                                 
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
    45e4:	e5953000 	ldr	r3, [r5]                                      
    45e8:	e2872050 	add	r2, r7, #80	; 0x50                            
    45ec:	e5930008 	ldr	r0, [r3, #8]                                  
    45f0:	e59f107c 	ldr	r1, [pc, #124]	; 4674 <IMFS_dump_directory+0x198>
    45f4:	e892000c 	ldm	r2, {r2, r3}                                  
    45f8:	eb00348a 	bl	11828 <fprintf>                                
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
      return;                                                         
  }                                                                   
  puts("");                                                           
    45fc:	e59f0074 	ldr	r0, [pc, #116]	; 4678 <IMFS_dump_directory+0x19c>
    4600:	eb003bdb 	bl	13574 <puts>                                   
    4604:	eaffffdd 	b	4580 <IMFS_dump_directory+0xa4>                 
  IMFS_assert( the_jnode );                                           
                                                                      
  fprintf(stdout, "%s", the_jnode->name );                            
  switch( IMFS_type( the_jnode ) ) {                                  
    case IMFS_DIRECTORY:                                              
      fprintf(stdout, "/" );                                          
    4608:	e5953000 	ldr	r3, [r5]                                      
    460c:	e3a0002f 	mov	r0, #47	; 0x2f                                
    4610:	e5931008 	ldr	r1, [r3, #8]                                  
    4614:	eb0034a3 	bl	118a8 <fputc>                                  
    4618:	eafffff7 	b	45fc <IMFS_dump_directory+0x120>                
    case IMFS_FIFO:                                                   
      fprintf(stdout, " FIFO not printed\n" );                        
      return;                                                         
                                                                      
    default:                                                          
      fprintf(stdout, " bad type %d\n", IMFS_type( the_jnode ) );     
    461c:	e5953000 	ldr	r3, [r5]                                      <== NOT EXECUTED
    4620:	e59f1054 	ldr	r1, [pc, #84]	; 467c <IMFS_dump_directory+0x1a0><== NOT EXECUTED
    4624:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    4628:	eb00347e 	bl	11828 <fprintf>                                <== NOT EXECUTED
    462c:	eaffffd3 	b	4580 <IMFS_dump_directory+0xa4>                 <== NOT EXECUTED
      fprintf(stdout, " (device %" PRId32 ", %" PRId32 ")",           
        the_jnode->info.device.major, the_jnode->info.device.minor ); 
      break;                                                          
                                                                      
    case IMFS_LINEAR_FILE:                                            
      fprintf(stdout, " (file %" PRId32 " %p)",                       
    4630:	e5953000 	ldr	r3, [r5]                                      
    4634:	e59f1044 	ldr	r1, [pc, #68]	; 4680 <IMFS_dump_directory+0x1a4>
    4638:	e5930008 	ldr	r0, [r3, #8]                                  
    463c:	e5972050 	ldr	r2, [r7, #80]	; 0x50                          
    4640:	e5973058 	ldr	r3, [r7, #88]	; 0x58                          
    4644:	eb003477 	bl	11828 <fprintf>                                
    4648:	eaffffeb 	b	45fc <IMFS_dump_directory+0x120>                
        the_jnode->info.file.indirect,                                
        the_jnode->info.file.doubly_indirect,                         
        the_jnode->info.file.triply_indirect                          
      );                                                              
#else                                                                 
      fprintf(stdout, " (file %" PRId32 ")",                          
    464c:	e5953000 	ldr	r3, [r5]                                      
    4650:	e59f102c 	ldr	r1, [pc, #44]	; 4684 <IMFS_dump_directory+0x1a8>
    4654:	e5930008 	ldr	r0, [r3, #8]                                  
    4658:	e5972050 	ldr	r2, [r7, #80]	; 0x50                          
    465c:	eb003471 	bl	11828 <fprintf>                                
    4660:	eaffffe5 	b	45fc <IMFS_dump_directory+0x120>                
                                                                      

0000a75c <IMFS_fsunmount>: ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next)) void IMFS_fsunmount( rtems_filesystem_mount_table_entry_t *temp_mt_entry ) {
    a75c:	e92d4070 	push	{r4, r5, r6, lr}                             
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
    a760:	e5905024 	ldr	r5, [r0, #36]	; 0x24                          
    a764:	e1a04005 	mov	r4, r5                                        
    a768:	e8b4000f 	ldm	r4!, {r0, r1, r2, r3}                         
    ((IMFS_jnode_t *)( rtems_chain_head( jnode_get_control( jnode ) )->next))
                                                                      
void IMFS_fsunmount(                                                  
  rtems_filesystem_mount_table_entry_t *temp_mt_entry                 
)                                                                     
{                                                                     
    a76c:	e24dd018 	sub	sp, sp, #24                                   
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
    a770:	e1a0c00d 	mov	ip, sp                                        
    a774:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
    a778:	e8940003 	ldm	r4, {r0, r1}                                  
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
    a77c:	e592304c 	ldr	r3, [r2, #76]	; 0x4c                          
   /*                                                                 
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
    a780:	e88c0003 	stm	ip, {r0, r1}                                  
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
    a784:	e3a01000 	mov	r1, #0                                        
    * Traverse tree that starts at the mt_fs_root and deallocate memory
    * associated memory space                                         
    */                                                                
                                                                      
   loc = temp_mt_entry->mt_fs_root->location;                         
   jnode = (IMFS_jnode_t *)loc.node_access;                           
    a788:	e1a06002 	mov	r6, r2                                        
                                                                      
   /*                                                                 
    *  Set this to null to indicate that it is being unmounted.       
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
    a78c:	e5932000 	ldr	r2, [r3]                                      
    a790:	e5851008 	str	r1, [r5, #8]                                  
    a794:	e5933004 	ldr	r3, [r3, #4]                                  
   do {                                                               
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
    a798:	e3520000 	cmp	r2, #0                                        
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
    a79c:	e5964008 	ldr	r4, [r6, #8]                                  
     loc.node_access = (void *)jnode;                                 
    a7a0:	e58d6008 	str	r6, [sp, #8]                                  
    a7a4:	e58d3010 	str	r3, [sp, #16]                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
    a7a8:	1a000018 	bne	a810 <IMFS_fsunmount+0xb4>                    
    a7ac:	e5962050 	ldr	r2, [r6, #80]	; 0x50                          
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
    a7b0:	e2863054 	add	r3, r6, #84	; 0x54                            
    a7b4:	e1520003 	cmp	r2, r3                                        
    a7b8:	0a000014 	beq	a810 <IMFS_fsunmount+0xb4>                    
        if ( result != 0 )                                            
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
    a7bc:	e3560000 	cmp	r6, #0                                        
    a7c0:	0a00001c 	beq	a838 <IMFS_fsunmount+0xdc>                    
  return node->control->imfs_type;                                    
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
    a7c4:	e596304c 	ldr	r3, [r6, #76]	; 0x4c                          
    a7c8:	e5932000 	ldr	r2, [r3]                                      
       if ( IMFS_is_directory( jnode ) ) {                            
    a7cc:	e3520000 	cmp	r2, #0                                        
    a7d0:	1affffef 	bne	a794 <IMFS_fsunmount+0x38>                    
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    a7d4:	e5961050 	ldr	r1, [r6, #80]	; 0x50                          
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
    a7d8:	e2860054 	add	r0, r6, #84	; 0x54                            
         if ( jnode_has_children( jnode ) )                           
    a7dc:	e1510000 	cmp	r1, r0                                        
    a7e0:	0affffeb 	beq	a794 <IMFS_fsunmount+0x38>                    
           jnode = jnode_get_first_child( jnode );                    
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
    a7e4:	e3510000 	cmp	r1, #0                                        
    a7e8:	0a000012 	beq	a838 <IMFS_fsunmount+0xdc>                    
    a7ec:	e591304c 	ldr	r3, [r1, #76]	; 0x4c                          
    a7f0:	e5932000 	ldr	r2, [r3]                                      
                                                                      
static inline void IMFS_Set_handlers( rtems_filesystem_location_info_t *loc )
{                                                                     
  IMFS_jnode_t *node = (IMFS_jnode_t *) loc->node_access;             
                                                                      
  loc->handlers = node->control->handlers;                            
    a7f4:	e5933004 	ldr	r3, [r3, #4]                                  
    a7f8:	e1a06001 	mov	r6, r1                                        
   do {                                                               
     next = jnode->Parent;                                            
     loc.node_access = (void *)jnode;                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
    a7fc:	e3520000 	cmp	r2, #0                                        
    */                                                                
                                                                      
   temp_mt_entry->mt_fs_root->location.node_access = NULL;            
                                                                      
   do {                                                               
     next = jnode->Parent;                                            
    a800:	e5964008 	ldr	r4, [r6, #8]                                  
     loc.node_access = (void *)jnode;                                 
    a804:	e58d6008 	str	r6, [sp, #8]                                  
    a808:	e58d3010 	str	r3, [sp, #16]                                 
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
    a80c:	0affffe6 	beq	a7ac <IMFS_fsunmount+0x50>                    
        result = IMFS_rmnod( NULL, &loc );                            
    a810:	e3a00000 	mov	r0, #0                                        
    a814:	e1a0100d 	mov	r1, sp                                        
    a818:	ebffde0b 	bl	204c <IMFS_rmnod>                              
        if ( result != 0 )                                            
    a81c:	e3500000 	cmp	r0, #0                                        
    a820:	1a000006 	bne	a840 <IMFS_fsunmount+0xe4>                    
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
    a824:	e1a00006 	mov	r0, r6                                        
        jnode = next;                                                 
    a828:	e1a06004 	mov	r6, r4                                        
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
        result = IMFS_rmnod( NULL, &loc );                            
        if ( result != 0 )                                            
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
        IMFS_node_destroy( jnode );                                   
    a82c:	ebffdd34 	bl	1d04 <IMFS_node_destroy>                       
        jnode = next;                                                 
     }                                                                
     if ( jnode != NULL ) {                                           
    a830:	e3560000 	cmp	r6, #0                                        
    a834:	1affffe2 	bne	a7c4 <IMFS_fsunmount+0x68>                    
         if ( jnode_has_children( jnode ) )                           
           jnode = jnode_get_first_child( jnode );                    
       }                                                              
     }                                                                
   } while (jnode != NULL);                                           
}                                                                     
    a838:	e28dd018 	add	sp, sp, #24                                   
    a83c:	e8bd8070 	pop	{r4, r5, r6, pc}                              
     IMFS_Set_handlers( &loc );                                       
                                                                      
     if ( !IMFS_is_directory( jnode ) || jnode_has_no_children( jnode ) ) {
        result = IMFS_rmnod( NULL, &loc );                            
        if ( result != 0 )                                            
	  rtems_fatal_error_occurred( 0xdeadbeef );                          
    a840:	e59f0000 	ldr	r0, [pc]	; a848 <IMFS_fsunmount+0xec>         <== NOT EXECUTED
    a844:	ebfff144 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

00003874 <IMFS_make_generic_node>: void *context ) { int rv = 0; mode &= ~rtems_filesystem_umask;
    3874:	e59fc108 	ldr	ip, [pc, #264]	; 3984 <IMFS_make_generic_node+0x110>
    3878:	e59cc000 	ldr	ip, [ip]                                      
  const char *path,                                                   
  mode_t mode,                                                        
  const IMFS_node_control *node_control,                              
  void *context                                                       
)                                                                     
{                                                                     
    387c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
    3880:	e59c4008 	ldr	r4, [ip, #8]                                  
    3884:	e1c14004 	bic	r4, r1, r4                                    
                                                                      
  switch (mode & S_IFMT) {                                            
    3888:	e204ca0f 	and	ip, r4, #61440	; 0xf000                       
    388c:	e35c0a02 	cmp	ip, #8192	; 0x2000                            
  const char *path,                                                   
  mode_t mode,                                                        
  const IMFS_node_control *node_control,                              
  void *context                                                       
)                                                                     
{                                                                     
    3890:	e24dd05c 	sub	sp, sp, #92	; 0x5c                            
    3894:	e1a05002 	mov	r5, r2                                        
    3898:	e1a06003 	mov	r6, r3                                        
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
                                                                      
  switch (mode & S_IFMT) {                                            
    389c:	0a00000d 	beq	38d8 <IMFS_make_generic_node+0x64>            
    38a0:	8a000008 	bhi	38c8 <IMFS_make_generic_node+0x54>            
    38a4:	e35c0a01 	cmp	ip, #4096	; 0x1000                            <== NOT EXECUTED
    38a8:	0a00000a 	beq	38d8 <IMFS_make_generic_node+0x64>            <== NOT EXECUTED
        rv = -1;                                                      
      }                                                               
                                                                      
      rtems_filesystem_eval_path_cleanup( &ctx );                     
    } else {                                                          
      errno = EINVAL;                                                 
    38ac:	eb003a79 	bl	12298 <__errno>                                
    38b0:	e3a03016 	mov	r3, #22                                       
    38b4:	e5803000 	str	r3, [r0]                                      
      rv = -1;                                                        
    38b8:	e3e05000 	mvn	r5, #0                                        
    }                                                                 
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    38bc:	e1a00005 	mov	r0, r5                                        
    38c0:	e28dd05c 	add	sp, sp, #92	; 0x5c                            
    38c4:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
{                                                                     
  int rv = 0;                                                         
                                                                      
  mode &= ~rtems_filesystem_umask;                                    
                                                                      
  switch (mode & S_IFMT) {                                            
    38c8:	e35c0a06 	cmp	ip, #24576	; 0x6000                           
    38cc:	0a000001 	beq	38d8 <IMFS_make_generic_node+0x64>            
    38d0:	e35c0902 	cmp	ip, #32768	; 0x8000                           
    38d4:	1afffff4 	bne	38ac <IMFS_make_generic_node+0x38>            
      rv = -1;                                                        
      break;                                                          
  }                                                                   
                                                                      
  if ( rv == 0 ) {                                                    
    if ( node_control->imfs_type == IMFS_GENERIC ) {                  
    38d8:	e5953000 	ldr	r3, [r5]                                      
    38dc:	e3530007 	cmp	r3, #7                                        
    38e0:	1afffff1 	bne	38ac <IMFS_make_generic_node+0x38>            
      rtems_filesystem_eval_path_context_t ctx;                       
      int eval_flags = RTEMS_FS_FOLLOW_LINK                           
        | RTEMS_FS_MAKE                                               
        | RTEMS_FS_EXCLUSIVE;                                         
      const rtems_filesystem_location_info_t *currentloc =            
    38e4:	e1a01000 	mov	r1, r0                                        
    38e8:	e3a02078 	mov	r2, #120	; 0x78                               
    38ec:	e28d0008 	add	r0, sp, #8                                    
    38f0:	eb0007fb 	bl	58e4 <rtems_filesystem_eval_path_start>        
    38f4:	e1a07000 	mov	r7, r0                                        
        rtems_filesystem_eval_path_start( &ctx, path, eval_flags );   
                                                                      
      if ( IMFS_is_imfs_instance( currentloc ) ) {                    
    38f8:	ebffffcb 	bl	382c <IMFS_is_imfs_instance>                   
    38fc:	e3500000 	cmp	r0, #0                                        
    3900:	0a00001a 	beq	3970 <IMFS_make_generic_node+0xfc>            
        IMFS_types_union info;                                        
        IMFS_jnode_t *new_node;                                       
                                                                      
        info.generic.context = context;                               
        new_node = IMFS_create_node_with_control(                     
    3904:	e28d2010 	add	r2, sp, #16                                   
    3908:	e892000c 	ldm	r2, {r2, r3}                                  
    390c:	e1a01005 	mov	r1, r5                                        
    3910:	e28dc040 	add	ip, sp, #64	; 0x40                            
    3914:	e1a00007 	mov	r0, r7                                        
                                                                      
      if ( IMFS_is_imfs_instance( currentloc ) ) {                    
        IMFS_types_union info;                                        
        IMFS_jnode_t *new_node;                                       
                                                                      
        info.generic.context = context;                               
    3918:	e58d6040 	str	r6, [sp, #64]	; 0x40                          
        new_node = IMFS_create_node_with_control(                     
    391c:	e58d4000 	str	r4, [sp]                                      
    3920:	e58dc004 	str	ip, [sp, #4]                                  
    3924:	eb002d13 	bl	ed78 <IMFS_create_node_with_control>           
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          mode,                                                       
          &info                                                       
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
    3928:	e3500000 	cmp	r0, #0                                        
          IMFS_jnode_t *parent = currentloc->node_access;             
                                                                      
          IMFS_update_ctime( parent );                                
          IMFS_update_mtime( parent );                                
        } else {                                                      
          rv = -1;                                                    
    392c:	03e05000 	mvneq	r5, #0                                      
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          mode,                                                       
          &info                                                       
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
    3930:	0a00000b 	beq	3964 <IMFS_make_generic_node+0xf0>            
          IMFS_jnode_t *parent = currentloc->node_access;             
                                                                      
          IMFS_update_ctime( parent );                                
    3934:	e3a01000 	mov	r1, #0                                        
    3938:	e28d0054 	add	r0, sp, #84	; 0x54                            
          mode,                                                       
          &info                                                       
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
          IMFS_jnode_t *parent = currentloc->node_access;             
    393c:	e5974008 	ldr	r4, [r7, #8]                                  
                                                                      
          IMFS_update_ctime( parent );                                
    3940:	eb000266 	bl	42e0 <gettimeofday>                            
    3944:	e59d3054 	ldr	r3, [sp, #84]	; 0x54                          
          IMFS_update_mtime( parent );                                
    3948:	e28d0054 	add	r0, sp, #84	; 0x54                            
        );                                                            
                                                                      
        if ( new_node != NULL ) {                                     
          IMFS_jnode_t *parent = currentloc->node_access;             
                                                                      
          IMFS_update_ctime( parent );                                
    394c:	e5843048 	str	r3, [r4, #72]	; 0x48                          
          IMFS_update_mtime( parent );                                
    3950:	e3a01000 	mov	r1, #0                                        
    3954:	eb000261 	bl	42e0 <gettimeofday>                            
    3958:	e59d3054 	ldr	r3, [sp, #84]	; 0x54                          
    395c:	e5843044 	str	r3, [r4, #68]	; 0x44                          
    3960:	e3a05000 	mov	r5, #0                                        
      } else {                                                        
        rtems_filesystem_eval_path_error( &ctx, ENOTSUP );            
        rv = -1;                                                      
      }                                                               
                                                                      
      rtems_filesystem_eval_path_cleanup( &ctx );                     
    3964:	e28d0008 	add	r0, sp, #8                                    
    3968:	eb0007e7 	bl	590c <rtems_filesystem_eval_path_cleanup>      
    396c:	eaffffd2 	b	38bc <IMFS_make_generic_node+0x48>              
          IMFS_update_mtime( parent );                                
        } else {                                                      
          rv = -1;                                                    
        }                                                             
      } else {                                                        
        rtems_filesystem_eval_path_error( &ctx, ENOTSUP );            
    3970:	e28d0008 	add	r0, sp, #8                                    
    3974:	e3a01086 	mov	r1, #134	; 0x86                               
    3978:	eb000718 	bl	55e0 <rtems_filesystem_eval_path_error>        
        rv = -1;                                                      
    397c:	e3e05000 	mvn	r5, #0                                        
    3980:	eafffff7 	b	3964 <IMFS_make_generic_node+0xf0>              
                                                                      

0000c3b8 <IMFS_memfile_get_block_pointer>: my_block = block; /* * Is the block number in the simple indirect portion? */ if ( my_block <= LAST_INDIRECT ) {
    c3b8:	e59f31fc 	ldr	r3, [pc, #508]	; c5bc <IMFS_memfile_get_block_pointer+0x204>
#endif                                                                
   IMFS_jnode_t   *the_jnode,                                         
   unsigned int    block,                                             
   int             malloc_it                                          
)                                                                     
{                                                                     
    c3bc:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
    c3c0:	e5934000 	ldr	r4, [r3]                                      
    c3c4:	e1a04124 	lsr	r4, r4, #2                                    
    c3c8:	e2443001 	sub	r3, r4, #1                                    
    c3cc:	e1510003 	cmp	r1, r3                                        
#endif                                                                
   IMFS_jnode_t   *the_jnode,                                         
   unsigned int    block,                                             
   int             malloc_it                                          
)                                                                     
{                                                                     
    c3d0:	e24dd004 	sub	sp, sp, #4                                    
    c3d4:	e1a05000 	mov	r5, r0                                        
    c3d8:	e1a06002 	mov	r6, r2                                        
  my_block = block;                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
    c3dc:	8a000007 	bhi	c400 <IMFS_memfile_get_block_pointer+0x48>    
    p = info->indirect;                                               
                                                                      
    if ( malloc_it ) {                                                
    c3e0:	e3520000 	cmp	r2, #0                                        
                                                                      
  /*                                                                  
   *  Is the block number in the simple indirect portion?             
   */                                                                 
  if ( my_block <= LAST_INDIRECT ) {                                  
    p = info->indirect;                                               
    c3e4:	e5900058 	ldr	r0, [r0, #88]	; 0x58                          
                                                                      
    if ( malloc_it ) {                                                
    c3e8:	0a000040 	beq	c4f0 <IMFS_memfile_get_block_pointer+0x138>   
                                                                      
      if ( !p ) {                                                     
    c3ec:	e3500000 	cmp	r0, #0                                        
    c3f0:	0a000050 	beq	c538 <IMFS_memfile_get_block_pointer+0x180>   
    }                                                                 
                                                                      
    if ( !p )                                                         
      return 0;                                                       
                                                                      
    return &info->indirect[ my_block ];                               
    c3f4:	e0800101 	add	r0, r0, r1, lsl #2                            
                                                                      
  /*                                                                  
   *  This means the requested block number is out of range.          
   */                                                                 
  return 0;                                                           
}                                                                     
    c3f8:	e28dd004 	add	sp, sp, #4                                    
    c3fc:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
                                                                      
  /*                                                                  
   *  Is the block number in the doubly indirect portion?             
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
    c400:	e0274494 	mla	r7, r4, r4, r4                                
    c404:	e2473001 	sub	r3, r7, #1                                    
    c408:	e1510003 	cmp	r1, r3                                        
    c40c:	9a000023 	bls	c4a0 <IMFS_memfile_get_block_pointer+0xe8>    
  }                                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    c410:	e0234497 	mla	r3, r7, r4, r4                                
    c414:	e2433001 	sub	r3, r3, #1                                    
    c418:	e1510003 	cmp	r1, r3                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  This means the requested block number is out of range.          
   */                                                                 
  return 0;                                                           
    c41c:	83a00000 	movhi	r0, #0                                      
  }                                                                   
                                                                      
  /*                                                                  
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    c420:	8afffff4 	bhi	c3f8 <IMFS_memfile_get_block_pointer+0x40>    
    my_block -= FIRST_TRIPLY_INDIRECT;                                
    c424:	e0677001 	rsb	r7, r7, r1                                    
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    c428:	e1a00007 	mov	r0, r7                                        
    c42c:	e1a01004 	mov	r1, r4                                        
    c430:	eb002923 	bl	168c4 <__umodsi3>                              
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    c434:	e1a01004 	mov	r1, r4                                        
   *  Is the block number in the triply indirect portion?             
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    c438:	e1a09000 	mov	r9, r0                                        
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    c43c:	e1a00007 	mov	r0, r7                                        
    c440:	eb0028d9 	bl	167ac <__aeabi_uidiv>                          
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
    c444:	e1a01004 	mov	r1, r4                                        
   */                                                                 
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    c448:	e1a0a000 	mov	sl, r0                                        
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
    c44c:	eb0028d6 	bl	167ac <__aeabi_uidiv>                          
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
    c450:	e1a01004 	mov	r1, r4                                        
  if ( my_block <= LAST_TRIPLY_INDIRECT ) {                           
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
    c454:	e1a07000 	mov	r7, r0                                        
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
    c458:	e1a0000a 	mov	r0, sl                                        
    c45c:	eb002918 	bl	168c4 <__umodsi3>                              
                                                                      
    p = info->triply_indirect;                                        
                                                                      
    if ( malloc_it ) {                                                
    c460:	e3560000 	cmp	r6, #0                                        
    my_block -= FIRST_TRIPLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    triply = doubly / IMFS_MEMFILE_BLOCK_SLOTS;                       
    doubly %= IMFS_MEMFILE_BLOCK_SLOTS;                               
    c464:	e1a04000 	mov	r4, r0                                        
                                                                      
    p = info->triply_indirect;                                        
    c468:	e5950060 	ldr	r0, [r5, #96]	; 0x60                          
                                                                      
    if ( malloc_it ) {                                                
    c46c:	0a000028 	beq	c514 <IMFS_memfile_get_block_pointer+0x15c>   
      if ( !p ) {                                                     
    c470:	e3500000 	cmp	r0, #0                                        
    c474:	0a000045 	beq	c590 <IMFS_memfile_get_block_pointer+0x1d8>   
        if ( !p )                                                     
           return 0;                                                  
        info->triply_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
    c478:	e7903107 	ldr	r3, [r0, r7, lsl #2]                          
      if ( !p1 ) {                                                    
    c47c:	e3530000 	cmp	r3, #0                                        
        if ( !p )                                                     
           return 0;                                                  
        info->triply_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
    c480:	e0807107 	add	r7, r0, r7, lsl #2                            
      if ( !p1 ) {                                                    
    c484:	0a000046 	beq	c5a4 <IMFS_memfile_get_block_pointer+0x1ec>   
        if ( !p1 )                                                    
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
    c488:	e7930104 	ldr	r0, [r3, r4, lsl #2]                          
      if ( !p2 ) {                                                    
    c48c:	e3500000 	cmp	r0, #0                                        
        if ( !p1 )                                                    
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
    c490:	e0834104 	add	r4, r3, r4, lsl #2                            
      if ( !p2 ) {                                                    
    c494:	0a000033 	beq	c568 <IMFS_memfile_get_block_pointer+0x1b0>   
                                                                      
    p2 = (block_p *)p1[ doubly ];                                     
    if ( !p2 )                                                        
      return 0;                                                       
                                                                      
    return (block_p *)&p2[ singly ];                                  
    c498:	e0800109 	add	r0, r0, r9, lsl #2                            
    c49c:	eaffffd5 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      
  /*                                                                  
   *  Is the block number in the doubly indirect portion?             
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
    my_block -= FIRST_DOUBLY_INDIRECT;                                
    c4a0:	e0647001 	rsb	r7, r4, r1                                    
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    c4a4:	e1a00007 	mov	r0, r7                                        
    c4a8:	e1a01004 	mov	r1, r4                                        
    c4ac:	eb002904 	bl	168c4 <__umodsi3>                              
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    c4b0:	e1a01004 	mov	r1, r4                                        
   */                                                                 
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
    my_block -= FIRST_DOUBLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    c4b4:	e1a08000 	mov	r8, r0                                        
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    c4b8:	e1a00007 	mov	r0, r7                                        
    c4bc:	eb0028ba 	bl	167ac <__aeabi_uidiv>                          
                                                                      
    p = info->doubly_indirect;                                        
    if ( malloc_it ) {                                                
    c4c0:	e3560000 	cmp	r6, #0                                        
                                                                      
  if ( my_block <= LAST_DOUBLY_INDIRECT ) {                           
    my_block -= FIRST_DOUBLY_INDIRECT;                                
                                                                      
    singly = my_block % IMFS_MEMFILE_BLOCK_SLOTS;                     
    doubly = my_block / IMFS_MEMFILE_BLOCK_SLOTS;                     
    c4c4:	e1a04000 	mov	r4, r0                                        
                                                                      
    p = info->doubly_indirect;                                        
    c4c8:	e595305c 	ldr	r3, [r5, #92]	; 0x5c                          
    if ( malloc_it ) {                                                
    c4cc:	0a00000a 	beq	c4fc <IMFS_memfile_get_block_pointer+0x144>   
                                                                      
      if ( !p ) {                                                     
    c4d0:	e3530000 	cmp	r3, #0                                        
    c4d4:	0a000028 	beq	c57c <IMFS_memfile_get_block_pointer+0x1c4>   
        if ( !p )                                                     
           return 0;                                                  
        info->doubly_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
    c4d8:	e7930104 	ldr	r0, [r3, r4, lsl #2]                          
      if ( !p1 ) {                                                    
    c4dc:	e3500000 	cmp	r0, #0                                        
        if ( !p )                                                     
           return 0;                                                  
        info->doubly_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
    c4e0:	e0834104 	add	r4, r3, r4, lsl #2                            
      if ( !p1 ) {                                                    
    c4e4:	0a00001a 	beq	c554 <IMFS_memfile_get_block_pointer+0x19c>   
                                                                      
    p = (block_p *)p[ doubly ];                                       
    if ( !p )                                                         
      return 0;                                                       
                                                                      
    return (block_p *)&p[ singly ];                                   
    c4e8:	e0800108 	add	r0, r0, r8, lsl #2                            
    c4ec:	eaffffc1 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      
        info->indirect = p;                                           
      }                                                               
      return &info->indirect[ my_block ];                             
    }                                                                 
                                                                      
    if ( !p )                                                         
    c4f0:	e3500000 	cmp	r0, #0                                        
    c4f4:	1affffbe 	bne	c3f4 <IMFS_memfile_get_block_pointer+0x3c>    
    c4f8:	eaffffbe 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      <== NOT EXECUTED
      }                                                               
                                                                      
      return (block_p *)&p1[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
    c4fc:	e3530000 	cmp	r3, #0                                        
    c500:	0a00002b 	beq	c5b4 <IMFS_memfile_get_block_pointer+0x1fc>   
      return 0;                                                       
                                                                      
    p = (block_p *)p[ doubly ];                                       
    c504:	e7930100 	ldr	r0, [r3, r0, lsl #2]                          
    if ( !p )                                                         
    c508:	e3500000 	cmp	r0, #0                                        
      return 0;                                                       
                                                                      
    return (block_p *)&p[ singly ];                                   
    c50c:	10800108 	addne	r0, r0, r8, lsl #2                          
    c510:	eaffffb8 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      
        p1[ doubly ] = (block_p) p2;                                  
      }                                                               
      return (block_p *)&p2[ singly ];                                
    }                                                                 
                                                                      
    if ( !p )                                                         
    c514:	e3500000 	cmp	r0, #0                                        
    c518:	0affffb6 	beq	c3f8 <IMFS_memfile_get_block_pointer+0x40>    
      return 0;                                                       
                                                                      
    p1 = (block_p *) p[ triply ];                                     
    c51c:	e7900107 	ldr	r0, [r0, r7, lsl #2]                          
    if ( !p1 )                                                        
    c520:	e3500000 	cmp	r0, #0                                        
    c524:	0affffb3 	beq	c3f8 <IMFS_memfile_get_block_pointer+0x40>    
      return 0;                                                       
                                                                      
    p2 = (block_p *)p1[ doubly ];                                     
    c528:	e7900104 	ldr	r0, [r0, r4, lsl #2]                          
    if ( !p2 )                                                        
    c52c:	e3500000 	cmp	r0, #0                                        
      return 0;                                                       
                                                                      
    return (block_p *)&p2[ singly ];                                  
    c530:	10800109 	addne	r0, r0, r9, lsl #2                          
    c534:	eaffffaf 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      
    p = info->indirect;                                               
                                                                      
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
    c538:	e58d1000 	str	r1, [sp]                                      
    c53c:	ebffff90 	bl	c384 <memfile_alloc_block>                     
        if ( !p )                                                     
    c540:	e3500000 	cmp	r0, #0                                        
    c544:	e59d1000 	ldr	r1, [sp]                                      
           return 0;                                                  
        info->indirect = p;                                           
    c548:	15850058 	strne	r0, [r5, #88]	; 0x58                        
                                                                      
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
        if ( !p )                                                     
    c54c:	1affffa8 	bne	c3f4 <IMFS_memfile_get_block_pointer+0x3c>    
    c550:	eaffffa8 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      <== NOT EXECUTED
        info->doubly_indirect = p;                                    
      }                                                               
                                                                      
      p1 = (block_p *)p[ doubly ];                                    
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
    c554:	ebffff8a 	bl	c384 <memfile_alloc_block>                     
        if ( !p1 )                                                    
    c558:	e3500000 	cmp	r0, #0                                        
           return 0;                                                  
        p[ doubly ] = (block_p) p1;                                   
    c55c:	15840000 	strne	r0, [r4]                                    
                                                                      
    p = (block_p *)p[ doubly ];                                       
    if ( !p )                                                         
      return 0;                                                       
                                                                      
    return (block_p *)&p[ singly ];                                   
    c560:	10800108 	addne	r0, r0, r8, lsl #2                          
    c564:	eaffffa3 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      
        p[ triply ] = (block_p) p1;                                   
      }                                                               
                                                                      
      p2 = (block_p *)p1[ doubly ];                                   
      if ( !p2 ) {                                                    
        p2 = memfile_alloc_block();                                   
    c568:	ebffff85 	bl	c384 <memfile_alloc_block>                     
        if ( !p2 )                                                    
    c56c:	e3500000 	cmp	r0, #0                                        
           return 0;                                                  
        p1[ doubly ] = (block_p) p2;                                  
    c570:	15840000 	strne	r0, [r4]                                    
                                                                      
    p2 = (block_p *)p1[ doubly ];                                     
    if ( !p2 )                                                        
      return 0;                                                       
                                                                      
    return (block_p *)&p2[ singly ];                                  
    c574:	10800109 	addne	r0, r0, r9, lsl #2                          
    c578:	eaffff9e 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      
                                                                      
    p = info->doubly_indirect;                                        
    if ( malloc_it ) {                                                
                                                                      
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
    c57c:	ebffff80 	bl	c384 <memfile_alloc_block>                     
        if ( !p )                                                     
    c580:	e2503000 	subs	r3, r0, #0                                   
    c584:	0a00000a 	beq	c5b4 <IMFS_memfile_get_block_pointer+0x1fc>   
           return 0;                                                  
        info->doubly_indirect = p;                                    
    c588:	e585305c 	str	r3, [r5, #92]	; 0x5c                          
    c58c:	eaffffd1 	b	c4d8 <IMFS_memfile_get_block_pointer+0x120>     
                                                                      
    p = info->triply_indirect;                                        
                                                                      
    if ( malloc_it ) {                                                
      if ( !p ) {                                                     
        p = memfile_alloc_block();                                    
    c590:	ebffff7b 	bl	c384 <memfile_alloc_block>                     
        if ( !p )                                                     
    c594:	e3500000 	cmp	r0, #0                                        
    c598:	0affff96 	beq	c3f8 <IMFS_memfile_get_block_pointer+0x40>    
           return 0;                                                  
        info->triply_indirect = p;                                    
    c59c:	e5850060 	str	r0, [r5, #96]	; 0x60                          
    c5a0:	eaffffb4 	b	c478 <IMFS_memfile_get_block_pointer+0xc0>      
      }                                                               
                                                                      
      p1 = (block_p *) p[ triply ];                                   
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
    c5a4:	ebffff76 	bl	c384 <memfile_alloc_block>                     
        if ( !p1 )                                                    
    c5a8:	e2503000 	subs	r3, r0, #0                                   
           return 0;                                                  
        p[ triply ] = (block_p) p1;                                   
    c5ac:	15873000 	strne	r3, [r7]                                    
    c5b0:	1affffb4 	bne	c488 <IMFS_memfile_get_block_pointer+0xd0>    
                                                                      
      p1 = (block_p *) p[ triply ];                                   
      if ( !p1 ) {                                                    
        p1 = memfile_alloc_block();                                   
        if ( !p1 )                                                    
           return 0;                                                  
    c5b4:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
    c5b8:	eaffff8e 	b	c3f8 <IMFS_memfile_get_block_pointer+0x40>      <== NOT EXECUTED
                                                                      

0000c5c0 <IMFS_memfile_read>: IMFS_jnode_t *the_jnode, off_t start, unsigned char *destination, unsigned int length ) {
    c5c0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    c5c4:	e1a09000 	mov	r9, r0                                        
  rtems_chain_extract_unprotected( &node->Node );                     
}                                                                     
                                                                      
static inline IMFS_jnode_types_t IMFS_type( const IMFS_jnode_t *node )
{                                                                     
  return node->control->imfs_type;                                    
    c5c8:	e590004c 	ldr	r0, [r0, #76]	; 0x4c                          
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
    c5cc:	e5900000 	ldr	r0, [r0]                                      
   IMFS_jnode_t    *the_jnode,                                        
   off_t            start,                                            
   unsigned char   *destination,                                      
   unsigned int     length                                            
)                                                                     
{                                                                     
    c5d0:	e24dd014 	sub	sp, sp, #20                                   
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
    c5d4:	e3500005 	cmp	r0, #5                                        
   IMFS_jnode_t    *the_jnode,                                        
   off_t            start,                                            
   unsigned char   *destination,                                      
   unsigned int     length                                            
)                                                                     
{                                                                     
    c5d8:	e88d0006 	stm	sp, {r1, r2}                                  
    c5dc:	e58d3008 	str	r3, [sp, #8]                                  
    c5e0:	e59d7038 	ldr	r7, [sp, #56]	; 0x38                          
   *  Linear files (as created from a tar file are easier to handle   
   *  than block files).                                              
   */                                                                 
  my_length = length;                                                 
                                                                      
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
    c5e4:	0a000059 	beq	c750 <IMFS_memfile_read+0x190>                
                                                                      
  /*                                                                  
   *  If the last byte we are supposed to read is past the end of this
   *  in memory file, then shorten the length to read.                
   */                                                                 
  last_byte = start + length;                                         
    c5e8:	e59dc000 	ldr	ip, [sp]                                      
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    c5ec:	e59f81bc 	ldr	r8, [pc, #444]	; c7b0 <IMFS_memfile_read+0x1f0>
                                                                      
  /*                                                                  
   *  If the last byte we are supposed to read is past the end of this
   *  in memory file, then shorten the length to read.                
   */                                                                 
  last_byte = start + length;                                         
    c5f0:	e087e00c 	add	lr, r7, ip                                    
  if ( last_byte > the_jnode->info.file.size )                        
    c5f4:	e2891050 	add	r1, r9, #80	; 0x50                            
    c5f8:	e8910003 	ldm	r1, {r0, r1}                                  
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    c5fc:	e5986000 	ldr	r6, [r8]                                      
  /*                                                                  
   *  If the last byte we are supposed to read is past the end of this
   *  in memory file, then shorten the length to read.                
   */                                                                 
  last_byte = start + length;                                         
  if ( last_byte > the_jnode->info.file.size )                        
    c600:	e1a0200e 	mov	r2, lr                                        
    c604:	e3a03000 	mov	r3, #0                                        
    c608:	e1500002 	cmp	r0, r2                                        
    c60c:	e0d1e003 	sbcs	lr, r1, r3                                   
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    c610:	e1a05fc6 	asr	r5, r6, #31                                   
   *  If the last byte we are supposed to read is past the end of this
   *  in memory file, then shorten the length to read.                
   */                                                                 
  last_byte = start + length;                                         
  if ( last_byte > the_jnode->info.file.size )                        
    my_length = the_jnode->info.file.size - start;                    
    c614:	b06c7000 	rsblt	r7, ip, r0                                  
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    c618:	e1a03005 	mov	r3, r5                                        
    c61c:	e1a02006 	mov	r2, r6                                        
    c620:	e89d0003 	ldm	sp, {r0, r1}                                  
    c624:	eb002c8e 	bl	17864 <__moddi3>                               
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
    c628:	e1a03005 	mov	r3, r5                                        
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    c62c:	e1a0a000 	mov	sl, r0                                        
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
    c630:	e1a02006 	mov	r2, r6                                        
    c634:	e89d0003 	ldm	sp, {r0, r1}                                  
    c638:	eb002b4e 	bl	17378 <__divdi3>                               
  if ( start_offset )  {                                              
    c63c:	e35a0000 	cmp	sl, #0                                        
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
    c640:	e1a04000 	mov	r4, r0                                        
  unsigned int         last_byte;                                     
  unsigned int         copied;                                        
  unsigned int         start_offset;                                  
  unsigned char       *dest;                                          
                                                                      
  dest = destination;                                                 
    c644:	059d5008 	ldreq	r5, [sp, #8]                                
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    c648:	1a000016 	bne	c6a8 <IMFS_memfile_read+0xe8>                 
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    c64c:	e1570006 	cmp	r7, r6                                        
    c650:	2a000008 	bcs	c678 <IMFS_memfile_read+0xb8>                 
    c654:	ea000029 	b	c700 <IMFS_memfile_read+0x140>                  
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
    c658:	e5931000 	ldr	r1, [r3]                                      
    c65c:	eb00069b 	bl	e0d0 <memcpy>                                  
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    c660:	e5983000 	ldr	r3, [r8]                                      
    c664:	e1530007 	cmp	r3, r7                                        
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
    dest += to_copy;                                                  
    c668:	e0855006 	add	r5, r5, r6                                    
    block++;                                                          
    c66c:	e2844001 	add	r4, r4, #1                                    
    my_length -= to_copy;                                             
    copied += to_copy;                                                
    c670:	e08aa006 	add	sl, sl, r6                                    
                                                                      
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    c674:	8a000021 	bhi	c700 <IMFS_memfile_read+0x140>                
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    c678:	e3a02000 	mov	r2, #0                                        
    c67c:	e1a01004 	mov	r1, r4                                        
    c680:	e1a00009 	mov	r0, r9                                        
    c684:	ebffff4b 	bl	c3b8 <IMFS_memfile_get_block_pointer>          
    if ( !block_ptr )                                                 
    c688:	e2503000 	subs	r3, r0, #0                                   
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
    c68c:	e1a02006 	mov	r2, r6                                        
    dest += to_copy;                                                  
    block++;                                                          
    my_length -= to_copy;                                             
    c690:	e0667007 	rsb	r7, r6, r7                                    
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], to_copy );                      
    c694:	e1a00005 	mov	r0, r5                                        
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
    c698:	1affffee 	bne	c658 <IMFS_memfile_read+0x98>                 
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  if ( my_length ) {                                                  
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    c69c:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  IMFS_update_atime( the_jnode );                                     
                                                                      
  return copied;                                                      
}                                                                     
    c6a0:	e28dd014 	add	sp, sp, #20                                   
    c6a4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    c6a8:	e1a00009 	mov	r0, r9                                        
    c6ac:	e1a01004 	mov	r1, r4                                        
    c6b0:	e3a02000 	mov	r2, #0                                        
    c6b4:	ebffff3f 	bl	c3b8 <IMFS_memfile_get_block_pointer>          
    if ( !block_ptr )                                                 
    c6b8:	e3500000 	cmp	r0, #0                                        
    c6bc:	0afffff7 	beq	c6a0 <IMFS_memfile_read+0xe0>                 
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    c6c0:	e06a6006 	rsb	r6, sl, r6                                    
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );           
    c6c4:	e5901000 	ldr	r1, [r0]                                      
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    c6c8:	e1570006 	cmp	r7, r6                                        
    c6cc:	31a0b007 	movcc	fp, r7                                      
    c6d0:	21a0b006 	movcs	fp, r6                                      
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );           
    c6d4:	e081100a 	add	r1, r1, sl                                    
    c6d8:	e59d0008 	ldr	r0, [sp, #8]                                  
    c6dc:	e1a0200b 	mov	r2, fp                                        
    c6e0:	eb00067a 	bl	e0d0 <memcpy>                                  
    dest += to_copy;                                                  
    c6e4:	e59dc008 	ldr	ip, [sp, #8]                                  
    block++;                                                          
    c6e8:	e2844001 	add	r4, r4, #1                                    
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ start_offset ], to_copy );           
    dest += to_copy;                                                  
    c6ec:	e08c500b 	add	r5, ip, fp                                    
    block++;                                                          
    my_length -= to_copy;                                             
    c6f0:	e06b7007 	rsb	r7, fp, r7                                    
    c6f4:	e5986000 	ldr	r6, [r8]                                      
    copied += to_copy;                                                
    c6f8:	e1a0a00b 	mov	sl, fp                                        
    c6fc:	eaffffd2 	b	c64c <IMFS_memfile_read+0x8c>                   
  /*                                                                  
   *  Phase 3: possibly the first part of one block                   
   */                                                                 
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  if ( my_length ) {                                                  
    c700:	e3570000 	cmp	r7, #0                                        
    c704:	0a00000a 	beq	c734 <IMFS_memfile_read+0x174>                
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    c708:	e1a00009 	mov	r0, r9                                        
    c70c:	e1a01004 	mov	r1, r4                                        
    c710:	e3a02000 	mov	r2, #0                                        
    c714:	ebffff27 	bl	c3b8 <IMFS_memfile_get_block_pointer>          
    if ( !block_ptr )                                                 
    c718:	e2503000 	subs	r3, r0, #0                                   
    c71c:	0affffde 	beq	c69c <IMFS_memfile_read+0xdc>                 
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], my_length );                    
    c720:	e1a00005 	mov	r0, r5                                        
    c724:	e5931000 	ldr	r1, [r3]                                      
    c728:	e1a02007 	mov	r2, r7                                        
    c72c:	eb000667 	bl	e0d0 <memcpy>                                  
    copied += my_length;                                              
    c730:	e08aa007 	add	sl, sl, r7                                    
  }                                                                   
                                                                      
  IMFS_update_atime( the_jnode );                                     
    c734:	e28d000c 	add	r0, sp, #12                                   
    c738:	e3a01000 	mov	r1, #0                                        
    c73c:	ebffd79d 	bl	25b8 <gettimeofday>                            
    c740:	e59d300c 	ldr	r3, [sp, #12]                                 
                                                                      
  return copied;                                                      
    c744:	e1a0000a 	mov	r0, sl                                        
      return copied;                                                  
    memcpy( dest, &(*block_ptr)[ 0 ], my_length );                    
    copied += my_length;                                              
  }                                                                   
                                                                      
  IMFS_update_atime( the_jnode );                                     
    c748:	e5893040 	str	r3, [r9, #64]	; 0x40                          
                                                                      
  return copied;                                                      
    c74c:	eaffffd3 	b	c6a0 <IMFS_memfile_read+0xe0>                   
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
    unsigned char  *file_ptr;                                         
                                                                      
    file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;    
                                                                      
    if (my_length > (the_jnode->info.linearfile.size - start))        
    c750:	e2895050 	add	r5, r9, #80	; 0x50                            
    c754:	e8950030 	ldm	r5, {r4, r5}                                  
    c758:	e89d0003 	ldm	sp, {r0, r1}                                  
    c75c:	e1a02007 	mov	r2, r7                                        
    c760:	e0540000 	subs	r0, r4, r0                                   
    c764:	e0c51001 	sbc	r1, r5, r1                                    
    c768:	e3a03000 	mov	r3, #0                                        
    c76c:	e1500002 	cmp	r0, r2                                        
    c770:	e0d1c003 	sbcs	ip, r1, r3                                   
      my_length = the_jnode->info.linearfile.size - start;            
    c774:	b59de000 	ldrlt	lr, [sp]                                    
                                                                      
    memcpy(dest, &file_ptr[start], my_length);                        
    c778:	e59d3000 	ldr	r3, [sp]                                      
  my_length = length;                                                 
                                                                      
  if ( IMFS_type( the_jnode ) == IMFS_LINEAR_FILE ) {                 
    unsigned char  *file_ptr;                                         
                                                                      
    file_ptr = (unsigned char *)the_jnode->info.linearfile.direct;    
    c77c:	e5991058 	ldr	r1, [r9, #88]	; 0x58                          
                                                                      
    if (my_length > (the_jnode->info.linearfile.size - start))        
      my_length = the_jnode->info.linearfile.size - start;            
    c780:	b06e7004 	rsblt	r7, lr, r4                                  
                                                                      
    memcpy(dest, &file_ptr[start], my_length);                        
    c784:	e0811003 	add	r1, r1, r3                                    
    c788:	e1a02007 	mov	r2, r7                                        
    c78c:	e59d0008 	ldr	r0, [sp, #8]                                  
    c790:	eb00064e 	bl	e0d0 <memcpy>                                  
                                                                      
    IMFS_update_atime( the_jnode );                                   
    c794:	e28d000c 	add	r0, sp, #12                                   
    c798:	e3a01000 	mov	r1, #0                                        
    c79c:	ebffd785 	bl	25b8 <gettimeofday>                            
    c7a0:	e59d300c 	ldr	r3, [sp, #12]                                 
                                                                      
    return my_length;                                                 
    c7a4:	e1a00007 	mov	r0, r7                                        
    if (my_length > (the_jnode->info.linearfile.size - start))        
      my_length = the_jnode->info.linearfile.size - start;            
                                                                      
    memcpy(dest, &file_ptr[start], my_length);                        
                                                                      
    IMFS_update_atime( the_jnode );                                   
    c7a8:	e5893040 	str	r3, [r9, #64]	; 0x40                          
                                                                      
    return my_length;                                                 
    c7ac:	eaffffbb 	b	c6a0 <IMFS_memfile_read+0xe0>                   
                                                                      

0000cbac <IMFS_memfile_write>: IMFS_jnode_t *the_jnode, off_t start, const unsigned char *source, unsigned int length ) {
    cbac:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    cbb0:	e24dd010 	sub	sp, sp, #16                                   
    cbb4:	e59db034 	ldr	fp, [sp, #52]	; 0x34                          
    cbb8:	e88d0006 	stm	sp, {r1, r2}                                  
   *  If the last byte we are supposed to write is past the end of this
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
  if ( last_byte > the_jnode->info.file.size ) {                      
    cbbc:	e2805050 	add	r5, r0, #80	; 0x50                            
    cbc0:	e8950030 	ldm	r5, {r4, r5}                                  
  /*                                                                  
   *  If the last byte we are supposed to write is past the end of this
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
    cbc4:	e08b2001 	add	r2, fp, r1                                    
  if ( last_byte > the_jnode->info.file.size ) {                      
    cbc8:	e1a06002 	mov	r6, r2                                        
    cbcc:	e3a07000 	mov	r7, #0                                        
    cbd0:	e1540006 	cmp	r4, r6                                        
    cbd4:	e0d51007 	sbcs	r1, r5, r7                                   
   IMFS_jnode_t          *the_jnode,                                  
   off_t                  start,                                      
   const unsigned char   *source,                                     
   unsigned int           length                                      
)                                                                     
{                                                                     
    cbd8:	e1a09000 	mov	r9, r0                                        
    cbdc:	e1a08003 	mov	r8, r3                                        
   *  If the last byte we are supposed to write is past the end of this
   *  in memory file, then extend the length.                         
   */                                                                 
                                                                      
  last_byte = start + my_length;                                      
  if ( last_byte > the_jnode->info.file.size ) {                      
    cbe0:	ba000050 	blt	cd28 <IMFS_memfile_write+0x17c>               
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    cbe4:	e59f7168 	ldr	r7, [pc, #360]	; cd54 <IMFS_memfile_write+0x1a8>
    cbe8:	e5976000 	ldr	r6, [r7]                                      
    cbec:	e1a05fc6 	asr	r5, r6, #31                                   
    cbf0:	e1a03005 	mov	r3, r5                                        
    cbf4:	e1a02006 	mov	r2, r6                                        
    cbf8:	e89d0003 	ldm	sp, {r0, r1}                                  
    cbfc:	eb002b18 	bl	17864 <__moddi3>                               
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
    cc00:	e1a03005 	mov	r3, r5                                        
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    cc04:	e1a0a000 	mov	sl, r0                                        
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
    cc08:	e1a02006 	mov	r2, r6                                        
    cc0c:	e89d0003 	ldm	sp, {r0, r1}                                  
    cc10:	eb0029d8 	bl	17378 <__divdi3>                               
  if ( start_offset )  {                                              
    cc14:	e35a0000 	cmp	sl, #0                                        
   */                                                                 
                                                                      
  /*                                                                  
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
    cc18:	e1a04006 	mov	r4, r6                                        
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
    cc1c:	e1a05000 	mov	r5, r0                                        
  if ( start_offset )  {                                              
    cc20:	01a0400b 	moveq	r4, fp                                      
    cc24:	1a000016 	bne	cc84 <IMFS_memfile_write+0xd8>                
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    cc28:	e1540006 	cmp	r4, r6                                        
    cc2c:	2a000008 	bcs	cc54 <IMFS_memfile_write+0xa8>                
    cc30:	ea000027 	b	ccd4 <IMFS_memfile_write+0x128>                 
    if ( !block_ptr )                                                 
      return copied;                                                  
    #if 0                                                             
      fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                       
    cc34:	e5900000 	ldr	r0, [r0]                                      
    cc38:	eb000524 	bl	e0d0 <memcpy>                                  
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    cc3c:	e5973000 	ldr	r3, [r7]                                      
    cc40:	e1530004 	cmp	r3, r4                                        
      return copied;                                                  
    #if 0                                                             
      fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                       
    src += to_copy;                                                   
    cc44:	e0888006 	add	r8, r8, r6                                    
    block++;                                                          
    cc48:	e2855001 	add	r5, r5, #1                                    
 *  IMFS_memfile_write                                                
 *                                                                    
 *  This routine writes the specified data buffer into the in memory  
 *  file pointed to by the_jnode.  The file is extended as needed.    
 */                                                                   
MEMFILE_STATIC ssize_t IMFS_memfile_write(                            
    cc4c:	e08aa006 	add	sl, sl, r6                                    
  /*                                                                  
   *  Phase 2: all of zero of more blocks                             
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    cc50:	8a00001f 	bhi	ccd4 <IMFS_memfile_write+0x128>               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    cc54:	e1a01005 	mov	r1, r5                                        
    cc58:	e3a02000 	mov	r2, #0                                        
    cc5c:	e1a00009 	mov	r0, r9                                        
    cc60:	ebfffdd4 	bl	c3b8 <IMFS_memfile_get_block_pointer>          
    if ( !block_ptr )                                                 
    cc64:	e3500000 	cmp	r0, #0                                        
      return copied;                                                  
    #if 0                                                             
      fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, to_copy );                       
    cc68:	e1a01008 	mov	r1, r8                                        
    cc6c:	e1a02006 	mov	r2, r6                                        
    src += to_copy;                                                   
    block++;                                                          
    my_length -= to_copy;                                             
    cc70:	e0664004 	rsb	r4, r6, r4                                    
   */                                                                 
                                                                      
  to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK;                             
  while ( my_length >= IMFS_MEMFILE_BYTES_PER_BLOCK ) {               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
    cc74:	1affffee 	bne	cc34 <IMFS_memfile_write+0x88>                
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  to_copy = my_length;                                                
  if ( my_length ) {                                                  
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    if ( !block_ptr )                                                 
    cc78:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
                                                                      
  return copied;                                                      
}                                                                     
    cc7c:	e28dd010 	add	sp, sp, #16                                   
    cc80:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    if ( to_copy > my_length )                                        
      to_copy = my_length;                                            
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    cc84:	e1a00009 	mov	r0, r9                                        
    cc88:	e1a01005 	mov	r1, r5                                        
    cc8c:	e3a02000 	mov	r2, #0                                        
    cc90:	ebfffdc8 	bl	c3b8 <IMFS_memfile_get_block_pointer>          
    if ( !block_ptr )                                                 
    cc94:	e3500000 	cmp	r0, #0                                        
    cc98:	0afffff7 	beq	cc7c <IMFS_memfile_write+0xd0>                
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    cc9c:	e06a6006 	rsb	r6, sl, r6                                    
        block,                                                        
        to_copy,                                                      
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
    cca0:	e5900000 	ldr	r0, [r0]                                      
   *  Phase 1: possibly the last part of one block                    
   */                                                                 
  start_offset = start % IMFS_MEMFILE_BYTES_PER_BLOCK;                
  block = start / IMFS_MEMFILE_BYTES_PER_BLOCK;                       
  if ( start_offset )  {                                              
    to_copy = IMFS_MEMFILE_BYTES_PER_BLOCK - start_offset;            
    cca4:	e156000b 	cmp	r6, fp                                        
    cca8:	21a0600b 	movcs	r6, fp                                      
        block,                                                        
        to_copy,                                                      
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
    ccac:	e080000a 	add	r0, r0, sl                                    
    ccb0:	e1a01008 	mov	r1, r8                                        
    ccb4:	e1a02006 	mov	r2, r6                                        
    ccb8:	eb000504 	bl	e0d0 <memcpy>                                  
    src += to_copy;                                                   
    ccbc:	e0888006 	add	r8, r8, r6                                    
    block++;                                                          
    my_length -= to_copy;                                             
    ccc0:	e066400b 	rsb	r4, r6, fp                                    
    copied += to_copy;                                                
    ccc4:	e1a0a006 	mov	sl, r6                                        
        src                                                           
      );                                                              
    #endif                                                            
    memcpy( &(*block_ptr)[ start_offset ], src, to_copy );            
    src += to_copy;                                                   
    block++;                                                          
    ccc8:	e2855001 	add	r5, r5, #1                                    
    my_length -= to_copy;                                             
    copied += to_copy;                                                
    cccc:	e5976000 	ldr	r6, [r7]                                      
    ccd0:	eaffffd4 	b	cc28 <IMFS_memfile_write+0x7c>                  
   *  Phase 3: possibly the first part of one block                   
   */                                                                 
  IMFS_assert( my_length < IMFS_MEMFILE_BYTES_PER_BLOCK );            
                                                                      
  to_copy = my_length;                                                
  if ( my_length ) {                                                  
    ccd4:	e3540000 	cmp	r4, #0                                        
    ccd8:	0a00000a 	beq	cd08 <IMFS_memfile_write+0x15c>               
    block_ptr = IMFS_memfile_get_block_pointer( the_jnode, block, 0 );
    ccdc:	e1a00009 	mov	r0, r9                                        
    cce0:	e1a01005 	mov	r1, r5                                        
    cce4:	e3a02000 	mov	r2, #0                                        
    cce8:	ebfffdb2 	bl	c3b8 <IMFS_memfile_get_block_pointer>          
    if ( !block_ptr )                                                 
    ccec:	e3500000 	cmp	r0, #0                                        
    ccf0:	0affffe0 	beq	cc78 <IMFS_memfile_write+0xcc>                
      return copied;                                                  
    #if 0                                                             
    fprintf(stdout, "write %d in %d: %*s\n", to_copy, block, to_copy, src );
    #endif                                                            
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                     
    ccf4:	e5900000 	ldr	r0, [r0]                                      
    ccf8:	e1a01008 	mov	r1, r8                                        
    ccfc:	e1a02004 	mov	r2, r4                                        
    cd00:	eb0004f2 	bl	e0d0 <memcpy>                                  
    my_length = 0;                                                    
    copied += to_copy;                                                
    cd04:	e08aa004 	add	sl, sl, r4                                    
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
    cd08:	e28d0008 	add	r0, sp, #8                                    
    cd0c:	e3a01000 	mov	r1, #0                                        
    cd10:	ebffd628 	bl	25b8 <gettimeofday>                            
    cd14:	e59d3008 	ldr	r3, [sp, #8]                                  
                                                                      
  return copied;                                                      
    cd18:	e1a0000a 	mov	r0, sl                                        
    memcpy( &(*block_ptr)[ 0 ], src, my_length );                     
    my_length = 0;                                                    
    copied += to_copy;                                                
  }                                                                   
                                                                      
  IMFS_mtime_ctime_update( the_jnode );                               
    cd1c:	e5893044 	str	r3, [r9, #68]	; 0x44                          
    cd20:	e5893048 	str	r3, [r9, #72]	; 0x48                          
                                                                      
  return copied;                                                      
    cd24:	eaffffd4 	b	cc7c <IMFS_memfile_write+0xd0>                  
                                                                      
  last_byte = start + my_length;                                      
  if ( last_byte > the_jnode->info.file.size ) {                      
    bool zero_fill = start > the_jnode->info.file.size;               
                                                                      
    status = IMFS_memfile_extend( the_jnode, zero_fill, last_byte );  
    cd28:	e89d000c 	ldm	sp, {r2, r3}                                  
    cd2c:	e1540002 	cmp	r4, r2                                        
    cd30:	e0d53003 	sbcs	r3, r5, r3                                   
    cd34:	a3a01000 	movge	r1, #0                                      
    cd38:	b3a01001 	movlt	r1, #1                                      
    cd3c:	e1a02006 	mov	r2, r6                                        
    cd40:	e1a03007 	mov	r3, r7                                        
    cd44:	ebffff2f 	bl	ca08 <IMFS_memfile_extend>                     
    if ( status )                                                     
    cd48:	e3500000 	cmp	r0, #0                                        
    cd4c:	0affffa4 	beq	cbe4 <IMFS_memfile_write+0x38>                
    cd50:	eaffffc9 	b	cc7c <IMFS_memfile_write+0xd0>                  
                                                                      

00001eb0 <IMFS_mount>: #include "imfs.h" int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
    1eb0:	e5903020 	ldr	r3, [r0, #32]                                 
    1eb4:	e5933008 	ldr	r3, [r3, #8]                                  
  return node->control->imfs_type;                                    
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
    1eb8:	e593204c 	ldr	r2, [r3, #76]	; 0x4c                          
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    1ebc:	e5922000 	ldr	r2, [r2]                                      
    1ec0:	e3520000 	cmp	r2, #0                                        
#endif                                                                
                                                                      
#include "imfs.h"                                                     
                                                                      
int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry )      
{                                                                     
    1ec4:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  int rv = 0;                                                         
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    1ec8:	1a000009 	bne	1ef4 <IMFS_mount+0x44>                        
    if ( node->info.directory.mt_fs == NULL ) {                       
    1ecc:	e593205c 	ldr	r2, [r3, #92]	; 0x5c                          
    1ed0:	e3520000 	cmp	r2, #0                                        
      node->info.directory.mt_fs = mt_entry;                          
    1ed4:	0583005c 	streq	r0, [r3, #92]	; 0x5c                        
                                                                      
#include "imfs.h"                                                     
                                                                      
int IMFS_mount( rtems_filesystem_mount_table_entry_t *mt_entry )      
{                                                                     
  int rv = 0;                                                         
    1ed8:	01a00002 	moveq	r0, r2                                      
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    if ( node->info.directory.mt_fs == NULL ) {                       
    1edc:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
      node->info.directory.mt_fs = mt_entry;                          
    } else {                                                          
      errno = EBUSY;                                                  
    1ee0:	eb002e40 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    1ee4:	e3a03010 	mov	r3, #16                                       <== NOT EXECUTED
    1ee8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
      rv = -1;                                                        
    1eec:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    1ef0:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    errno = ENOTDIR;                                                  
    1ef4:	eb002e3b 	bl	d7e8 <__errno>                                 
    1ef8:	e3a03014 	mov	r3, #20                                       
    1efc:	e5803000 	str	r3, [r0]                                      
    rv = -1;                                                          
    1f00:	e3e00000 	mvn	r0, #0                                        
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    1f04:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                                                                      

0000a8d8 <IMFS_node_remove_directory>: static IMFS_jnode_t *IMFS_node_remove_directory( IMFS_jnode_t *node ) { if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {
    a8d8:	e5902050 	ldr	r2, [r0, #80]	; 0x50                          
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
    a8dc:	e2803054 	add	r3, r0, #84	; 0x54                            
    a8e0:	e1520003 	cmp	r2, r3                                        
}                                                                     
                                                                      
static IMFS_jnode_t *IMFS_node_remove_directory(                      
  IMFS_jnode_t *node                                                  
)                                                                     
{                                                                     
    a8e4:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {     
    a8e8:	1a000007 	bne	a90c <IMFS_node_remove_directory+0x34>        
    errno = ENOTEMPTY;                                                
    node = NULL;                                                      
  } else if ( IMFS_is_mount_point( node ) ) {                         
    a8ec:	e590305c 	ldr	r3, [r0, #92]	; 0x5c                          
    a8f0:	e3530000 	cmp	r3, #0                                        
    a8f4:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    errno = EBUSY;                                                    
    a8f8:	eb000bba 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    a8fc:	e3a03010 	mov	r3, #16                                       <== NOT EXECUTED
    a900:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    a904:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    node = NULL;                                                      
  }                                                                   
                                                                      
  return node;                                                        
}                                                                     
    a908:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
static IMFS_jnode_t *IMFS_node_remove_directory(                      
  IMFS_jnode_t *node                                                  
)                                                                     
{                                                                     
  if ( !rtems_chain_is_empty( &node->info.directory.Entries ) ) {     
    errno = ENOTEMPTY;                                                
    a90c:	eb000bb5 	bl	d7e8 <__errno>                                 
    a910:	e3a0305a 	mov	r3, #90	; 0x5a                                
    a914:	e5803000 	str	r3, [r0]                                      
    node = NULL;                                                      
    a918:	e3a00000 	mov	r0, #0                                        
    a91c:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                                                                      

00001f98 <IMFS_rename>: const rtems_filesystem_location_info_t *oldloc, const rtems_filesystem_location_info_t *newparentloc, const char *name, size_t namelen ) {
    1f98:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  int rv = 0;                                                         
  IMFS_jnode_t *node = oldloc->node_access;                           
    1f9c:	e5914008 	ldr	r4, [r1, #8]                                  
  /*                                                                  
   * FIXME: Due to insufficient checks we can create inaccessible nodes with
   * this operation.                                                  
   */                                                                 
                                                                      
  if ( node->Parent != NULL ) {                                       
    1fa0:	e5941008 	ldr	r1, [r4, #8]                                  
  const rtems_filesystem_location_info_t *oldloc,                     
  const rtems_filesystem_location_info_t *newparentloc,               
  const char *name,                                                   
  size_t namelen                                                      
)                                                                     
{                                                                     
    1fa4:	e24dd008 	sub	sp, sp, #8                                    
  /*                                                                  
   * FIXME: Due to insufficient checks we can create inaccessible nodes with
   * this operation.                                                  
   */                                                                 
                                                                      
  if ( node->Parent != NULL ) {                                       
    1fa8:	e3510000 	cmp	r1, #0                                        
  const rtems_filesystem_location_info_t *oldloc,                     
  const rtems_filesystem_location_info_t *newparentloc,               
  const char *name,                                                   
  size_t namelen                                                      
)                                                                     
{                                                                     
    1fac:	e59d601c 	ldr	r6, [sp, #28]                                 
  int rv = 0;                                                         
  IMFS_jnode_t *node = oldloc->node_access;                           
  IMFS_jnode_t *new_parent = newparentloc->node_access;               
    1fb0:	e5925008 	ldr	r5, [r2, #8]                                  
  /*                                                                  
   * FIXME: Due to insufficient checks we can create inaccessible nodes with
   * this operation.                                                  
   */                                                                 
                                                                      
  if ( node->Parent != NULL ) {                                       
    1fb4:	0a00001f 	beq	2038 <IMFS_rename+0xa0>                       
    if ( namelen < IMFS_NAME_MAX ) {                                  
    1fb8:	e356001f 	cmp	r6, #31                                       
    1fbc:	8a000018 	bhi	2024 <IMFS_rename+0x8c>                       
      memcpy( node->name, name, namelen );                            
    1fc0:	e1a01003 	mov	r1, r3                                        
    1fc4:	e1a02006 	mov	r2, r6                                        
      node->name [namelen] = '\0';                                    
    1fc8:	e3a07000 	mov	r7, #0                                        
   * this operation.                                                  
   */                                                                 
                                                                      
  if ( node->Parent != NULL ) {                                       
    if ( namelen < IMFS_NAME_MAX ) {                                  
      memcpy( node->name, name, namelen );                            
    1fcc:	e284000c 	add	r0, r4, #12                                   
      node->name [namelen] = '\0';                                    
    1fd0:	e0846006 	add	r6, r4, r6                                    
   * this operation.                                                  
   */                                                                 
                                                                      
  if ( node->Parent != NULL ) {                                       
    if ( namelen < IMFS_NAME_MAX ) {                                  
      memcpy( node->name, name, namelen );                            
    1fd4:	eb00303d 	bl	e0d0 <memcpy>                                  
      node->name [namelen] = '\0';                                    
    1fd8:	e5c6700c 	strb	r7, [r6, #12]                                
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    1fdc:	e8940003 	ldm	r4, {r0, r1}                                  
  next->previous = previous;                                          
    1fe0:	e5801004 	str	r1, [r0, #4]                                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    1fe4:	e5953058 	ldr	r3, [r5, #88]	; 0x58                          
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    1fe8:	e2852054 	add	r2, r5, #84	; 0x54                            
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
    1fec:	e5810000 	str	r0, [r1]                                      
static inline void IMFS_add_to_directory(                             
  IMFS_jnode_t *dir,                                                  
  IMFS_jnode_t *node                                                  
)                                                                     
{                                                                     
  node->Parent = dir;                                                 
    1ff0:	e5845008 	str	r5, [r4, #8]                                  
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
    1ff4:	e5842000 	str	r2, [r4]                                      
  tail->previous = the_node;                                          
    1ff8:	e5854058 	str	r4, [r5, #88]	; 0x58                          
  old_last->next = the_node;                                          
    1ffc:	e5834000 	str	r4, [r3]                                      
  the_node->previous = old_last;                                      
    2000:	e5843004 	str	r3, [r4, #4]                                  
                                                                      
      IMFS_remove_from_directory( node );                             
      IMFS_add_to_directory( new_parent, node );                      
      IMFS_update_ctime( node );                                      
    2004:	e1a0000d 	mov	r0, sp                                        
    2008:	e1a01007 	mov	r1, r7                                        
    200c:	eb000169 	bl	25b8 <gettimeofday>                            
    2010:	e59d3000 	ldr	r3, [sp]                                      
    2014:	e5843048 	str	r3, [r4, #72]	; 0x48                          
  const rtems_filesystem_location_info_t *newparentloc,               
  const char *name,                                                   
  size_t namelen                                                      
)                                                                     
{                                                                     
  int rv = 0;                                                         
    2018:	e1a00007 	mov	r0, r7                                        
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    201c:	e28dd008 	add	sp, sp, #8                                    
    2020:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      
      IMFS_remove_from_directory( node );                             
      IMFS_add_to_directory( new_parent, node );                      
      IMFS_update_ctime( node );                                      
    } else {                                                          
      errno = ENAMETOOLONG;                                           
    2024:	eb002def 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    2028:	e3a0305b 	mov	r3, #91	; 0x5b                                <== NOT EXECUTED
    202c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
      rv = -1;                                                        
    2030:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    2034:	eafffff8 	b	201c <IMFS_rename+0x84>                         <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    errno = EINVAL;                                                   
    2038:	eb002dea 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    203c:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    2040:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    rv = -1;                                                          
    2044:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    2048:	eafffff3 	b	201c <IMFS_rename+0x84>                         <== NOT EXECUTED
                                                                      

00002130 <IMFS_unmount>: #include "imfs.h" int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) { int rv = 0; IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access;
    2130:	e5903020 	ldr	r3, [r0, #32]                                 
    2134:	e5933008 	ldr	r3, [r3, #8]                                  
  return node->control->imfs_type;                                    
}                                                                     
                                                                      
static inline bool IMFS_is_directory( const IMFS_jnode_t *node )      
{                                                                     
  return node->control->imfs_type == IMFS_DIRECTORY;                  
    2138:	e593204c 	ldr	r2, [r3, #76]	; 0x4c                          
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    213c:	e5922000 	ldr	r2, [r2]                                      
    2140:	e3520000 	cmp	r2, #0                                        
#endif                                                                
                                                                      
#include "imfs.h"                                                     
                                                                      
int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry )    
{                                                                     
    2144:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  int rv = 0;                                                         
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    2148:	1a000009 	bne	2174 <IMFS_unmount+0x44>                      
    if ( node->info.directory.mt_fs == mt_entry ) {                   
    214c:	e593105c 	ldr	r1, [r3, #92]	; 0x5c                          
    2150:	e1510000 	cmp	r1, r0                                        
      node->info.directory.mt_fs = NULL;                              
    2154:	0583205c 	streq	r2, [r3, #92]	; 0x5c                        
                                                                      
#include "imfs.h"                                                     
                                                                      
int IMFS_unmount( rtems_filesystem_mount_table_entry_t *mt_entry )    
{                                                                     
  int rv = 0;                                                         
    2158:	01a00002 	moveq	r0, r2                                      
  IMFS_jnode_t *node = mt_entry->mt_point_node->location.node_access; 
                                                                      
  if ( IMFS_is_directory( node ) ) {                                  
    if ( node->info.directory.mt_fs == mt_entry ) {                   
    215c:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
      node->info.directory.mt_fs = NULL;                              
    } else {                                                          
      errno = EINVAL;                                                 
    2160:	eb002da0 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    2164:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    2168:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
      rv = -1;                                                        
    216c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    2170:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
    }                                                                 
  } else {                                                            
    errno = ENOTDIR;                                                  
    2174:	eb002d9b 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    2178:	e3a03014 	mov	r3, #20                                       <== NOT EXECUTED
    217c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    rv = -1;                                                          
    2180:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    2184:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

00021a60 <Stack_check_Dump_threads_usage>: static rtems_printk_plugin_t print_handler; static void Stack_check_Dump_threads_usage( Thread_Control *the_thread ) {
   21a60:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
    }                                                                 
                                                                      
  low  = Stack_check_usable_stack_start(stack);                       
   21a64:	e28060b0 	add	r6, r0, #176	; 0xb0                           
   21a68:	e8960840 	ldm	r6, {r6, fp}                                  
  size = Stack_check_usable_stack_size(stack);                        
   21a6c:	e2466010 	sub	r6, r6, #16                                   
static rtems_printk_plugin_t   print_handler;                         
                                                                      
static void Stack_check_Dump_threads_usage(                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
   21a70:	e1a05000 	mov	r5, r0                                        
    /*                                                                
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
   21a74:	e28b3020 	add	r3, fp, #32                                   
    for (ebase = base + length; base < ebase; base++)                 
   21a78:	e3c60003 	bic	r0, r6, #3                                    
   21a7c:	e0830000 	add	r0, r3, r0                                    
   21a80:	e1530000 	cmp	r3, r0                                        
static rtems_printk_plugin_t   print_handler;                         
                                                                      
static void Stack_check_Dump_threads_usage(                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
   21a84:	e24dd010 	sub	sp, sp, #16                                   
      current = 0;                                                    
    } else                                                            
  #endif                                                              
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
   21a88:	e59590e0 	ldr	r9, [r5, #224]	; 0xe0                         
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
   21a8c:	2a00000b 	bcs	21ac0 <Stack_check_Dump_threads_usage+0x60>   
      if (*base != U32_PATTERN)                                       
   21a90:	e59f20d8 	ldr	r2, [pc, #216]	; 21b70 <Stack_check_Dump_threads_usage+0x110>
   21a94:	e59bc020 	ldr	ip, [fp, #32]                                 
   21a98:	e15c0002 	cmp	ip, r2                                        
 *  Try to print out how much stack was actually used by the task.    
 */                                                                   
static void                   *print_context;                         
static rtems_printk_plugin_t   print_handler;                         
                                                                      
static void Stack_check_Dump_threads_usage(                           
   21a9c:	01a02003 	moveq	r2, r3                                      
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
      if (*base != U32_PATTERN)                                       
   21aa0:	0a000003 	beq	21ab4 <Stack_check_Dump_threads_usage+0x54>   
   21aa4:	ea000027 	b	21b48 <Stack_check_Dump_threads_usage+0xe8>     <== NOT EXECUTED
   21aa8:	e5b21004 	ldr	r1, [r2, #4]!                                 
   21aac:	e151000c 	cmp	r1, ip                                        
   21ab0:	1a000024 	bne	21b48 <Stack_check_Dump_threads_usage+0xe8>   
     * start at lower memory and find first word that does not        
     * match pattern                                                  
     */                                                               
                                                                      
    base += PATTERN_SIZE_WORDS;                                       
    for (ebase = base + length; base < ebase; base++)                 
   21ab4:	e2833004 	add	r3, r3, #4                                    
   21ab8:	e1500003 	cmp	r0, r3                                        
   21abc:	8afffff9 	bhi	21aa8 <Stack_check_Dump_threads_usage+0x48>   
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
  else                                                                
    used = 0;                                                         
   21ac0:	e3a0b000 	mov	fp, #0                                        <== NOT EXECUTED
                                                                      
  #if (CPU_ALLOCATE_INTERRUPT_STACK == TRUE)                          
    if ( the_thread )                                                 
  #endif                                                              
    {                                                                 
      (*print_handler)(                                               
   21ac4:	e5958008 	ldr	r8, [r5, #8]                                  
   21ac8:	e59f40a4 	ldr	r4, [pc, #164]	; 21b74 <Stack_check_Dump_threads_usage+0x114>
   21acc:	e3a01005 	mov	r1, #5                                        
   21ad0:	e28d2008 	add	r2, sp, #8                                    
   21ad4:	e1a00008 	mov	r0, r8                                        
   21ad8:	e594a004 	ldr	sl, [r4, #4]                                  
   21adc:	e5947000 	ldr	r7, [r4]                                      
   21ae0:	ebffb23c 	bl	e3d8 <rtems_object_get_name>                   
   21ae4:	e59f108c 	ldr	r1, [pc, #140]	; 21b78 <Stack_check_Dump_threads_usage+0x118>
   21ae8:	e1a03000 	mov	r3, r0                                        
   21aec:	e1a02008 	mov	r2, r8                                        
   21af0:	e1a0000a 	mov	r0, sl                                        
   21af4:	e1a0e00f 	mov	lr, pc                                        
   21af8:	e12fff17 	bx	r7                                             
                                                                      
  (*print_handler)(                                                   
    print_context,                                                    
    " %010p - %010p %010p  %8" PRId32 "   ",                          
    stack->area,                                                      
    stack->area + stack->size - 1,                                    
   21afc:	e59530b0 	ldr	r3, [r5, #176]	; 0xb0                         
   21b00:	e59520b4 	ldr	r2, [r5, #180]	; 0xb4                         
   21b04:	e2433001 	sub	r3, r3, #1                                    
      else {                                                          
        (*print_handler)( print_context, "0x%08" PRIx32 "  INTR", ~0 );
      }                                                               
    #endif                                                            
                                                                      
  (*print_handler)(                                                   
   21b08:	e0823003 	add	r3, r2, r3                                    
   21b0c:	e5940004 	ldr	r0, [r4, #4]                                  
   21b10:	e58d9000 	str	r9, [sp]                                      
   21b14:	e58d6004 	str	r6, [sp, #4]                                  
   21b18:	e59f105c 	ldr	r1, [pc, #92]	; 21b7c <Stack_check_Dump_threads_usage+0x11c>
   21b1c:	e1a0e00f 	mov	lr, pc                                        
   21b20:	e594f000 	ldr	pc, [r4]                                      
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
    (*print_handler)( print_context, "Unavailable\n" );               
   21b24:	e9940009 	ldmib	r4, {r0, r3}                                
    stack->area + stack->size - 1,                                    
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
   21b28:	e3530000 	cmp	r3, #0                                        
   21b2c:	0a00000b 	beq	21b60 <Stack_check_Dump_threads_usage+0x100>  
    (*print_handler)( print_context, "Unavailable\n" );               
  } else {                                                            
    (*print_handler)( print_context, "%8" PRId32 "\n", used );        
   21b30:	e59f1048 	ldr	r1, [pc, #72]	; 21b80 <Stack_check_Dump_threads_usage+0x120>
   21b34:	e1a0200b 	mov	r2, fp                                        
   21b38:	e1a0e00f 	mov	lr, pc                                        
   21b3c:	e594f000 	ldr	pc, [r4]                                      
  }                                                                   
                                                                      
                                                                      
}                                                                     
   21b40:	e28dd010 	add	sp, sp, #16                                   
   21b44:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  low  = Stack_check_usable_stack_start(stack);                       
  size = Stack_check_usable_stack_size(stack);                        
                                                                      
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
   21b48:	e3530000 	cmp	r3, #0                                        
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
  else                                                                
    used = 0;                                                         
   21b4c:	01a0b003 	moveq	fp, r3                                      
    {                                                                 
      stack  = &the_thread->Start.Initial_stack;                      
      current = (void *)_CPU_Context_Get_SP( &the_thread->Registers );
    }                                                                 
                                                                      
  low  = Stack_check_usable_stack_start(stack);                       
   21b50:	128bb010 	addne	fp, fp, #16                                 
  size = Stack_check_usable_stack_size(stack);                        
                                                                      
  high_water_mark = Stack_check_find_high_water_mark(low, size);      
                                                                      
  if ( high_water_mark )                                              
    used = Stack_check_Calculate_used( low, size, high_water_mark );  
   21b54:	108bb006 	addne	fp, fp, r6                                  
   21b58:	1063b00b 	rsbne	fp, r3, fp                                  
   21b5c:	eaffffd8 	b	21ac4 <Stack_check_Dump_threads_usage+0x64>     
    current,                                                          
    size                                                              
  );                                                                  
                                                                      
  if (Stack_check_Initialized == 0) {                                 
    (*print_handler)( print_context, "Unavailable\n" );               
   21b60:	e59f101c 	ldr	r1, [pc, #28]	; 21b84 <Stack_check_Dump_threads_usage+0x124><== NOT EXECUTED
   21b64:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
   21b68:	e594f000 	ldr	pc, [r4]                                      <== NOT EXECUTED
   21b6c:	eafffff3 	b	21b40 <Stack_check_Dump_threads_usage+0xe0>     <== NOT EXECUTED
                                                                      

0000f89c <_CORE_message_queue_Initialize>: CORE_message_queue_Control *the_message_queue, CORE_message_queue_Attributes *the_message_queue_attributes, uint32_t maximum_pending_messages, size_t maximum_message_size ) {
    f89c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  /*                                                                  
   * Check if allocated_message_size is aligned to uintptr-size boundary.
   * If not, it will increase allocated_message_size to multiplicity of pointer
   * size.                                                            
   */                                                                 
  if (allocated_message_size & (sizeof(uintptr_t) - 1)) {             
    f8a0:	e3130003 	tst	r3, #3                                        
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
    f8a4:	e1a04000 	mov	r4, r0                                        
  size_t message_buffering_required = 0;                              
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
  the_message_queue->number_of_pending_messages = 0;                  
    f8a8:	e3a00000 	mov	r0, #0                                        
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
    f8ac:	e1a05002 	mov	r5, r2                                        
    f8b0:	e1a07001 	mov	r7, r1                                        
  size_t message_buffering_required = 0;                              
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
    f8b4:	e5842044 	str	r2, [r4, #68]	; 0x44                          
  the_message_queue->number_of_pending_messages = 0;                  
    f8b8:	e5840048 	str	r0, [r4, #72]	; 0x48                          
  the_message_queue->maximum_message_size       = maximum_message_size;
    f8bc:	e584304c 	str	r3, [r4, #76]	; 0x4c                          
  /*                                                                  
   * Check if allocated_message_size is aligned to uintptr-size boundary.
   * If not, it will increase allocated_message_size to multiplicity of pointer
   * size.                                                            
   */                                                                 
  if (allocated_message_size & (sizeof(uintptr_t) - 1)) {             
    f8c0:	01a06003 	moveq	r6, r3                                      
    f8c4:	0a000003 	beq	f8d8 <_CORE_message_queue_Initialize+0x3c>    
    allocated_message_size += sizeof(uintptr_t);                      
    f8c8:	e2836004 	add	r6, r3, #4                                    
    allocated_message_size &= ~(sizeof(uintptr_t) - 1);               
    f8cc:	e3c66003 	bic	r6, r6, #3                                    
                                                                      
  /*                                                                  
   * Check for an overflow. It can occur while increasing allocated_message_size
   * to multiplicity of uintptr_t above.                              
   */                                                                 
  if (allocated_message_size < maximum_message_size)                  
    f8d0:	e1530006 	cmp	r3, r6                                        
    f8d4:	88bd80f0 	pophi	{r4, r5, r6, r7, pc}                        
                                                                      
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  if ( !size_t_mult32_with_overflow(                                  
    f8d8:	e2866010 	add	r6, r6, #16                                   
  size_t  a,                                                          
  size_t  b,                                                          
  size_t *c                                                           
)                                                                     
{                                                                     
  long long x = (long long)a*b;                                       
    f8dc:	e0810695 	umull	r0, r1, r5, r6                              
                                                                      
  if ( x > SIZE_MAX )                                                 
    f8e0:	e3e02000 	mvn	r2, #0                                        
    f8e4:	e3a03000 	mov	r3, #0                                        
    f8e8:	e1520000 	cmp	r2, r0                                        
    f8ec:	e0d3c001 	sbcs	ip, r3, r1                                   
   */                                                                 
  if ( !size_t_mult32_with_overflow(                                  
        (size_t) maximum_pending_messages,                            
        allocated_message_size + sizeof(CORE_message_queue_Buffer_control),
        &message_buffering_required ) )                               
    return false;                                                     
    f8f0:	b3a00000 	movlt	r0, #0                                      
  size_t *c                                                           
)                                                                     
{                                                                     
  long long x = (long long)a*b;                                       
                                                                      
  if ( x > SIZE_MAX )                                                 
    f8f4:	b8bd80f0 	poplt	{r4, r5, r6, r7, pc}                        
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
    f8f8:	eb000bd0 	bl	12840 <_Workspace_Allocate>                    
                                                                      
  if (the_message_queue->message_buffers == 0)                        
    f8fc:	e3500000 	cmp	r0, #0                                        
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
    f900:	e1a01000 	mov	r1, r0                                        
    return false;                                                     
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
    f904:	e584005c 	str	r0, [r4, #92]	; 0x5c                          
     _Workspace_Allocate( message_buffering_required );               
                                                                      
  if (the_message_queue->message_buffers == 0)                        
    f908:	0a000013 	beq	f95c <_CORE_message_queue_Initialize+0xc0>    
                                                                      
  /*                                                                  
   *  Initialize the pool of inactive messages, pending messages,     
   *  and set of waiting threads.                                     
   */                                                                 
  _Chain_Initialize (                                                 
    f90c:	e2840060 	add	r0, r4, #96	; 0x60                            
    f910:	e1a02005 	mov	r2, r5                                        
    f914:	e1a03006 	mov	r3, r6                                        
    f918:	ebffffc6 	bl	f838 <_Chain_Initialize>                       
    allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
  );                                                                  
                                                                      
  _Chain_Initialize_empty( &the_message_queue->Pending_messages );    
                                                                      
  _Thread_queue_Initialize(                                           
    f91c:	e5971000 	ldr	r1, [r7]                                      
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    f920:	e2843050 	add	r3, r4, #80	; 0x50                            
    f924:	e2842054 	add	r2, r4, #84	; 0x54                            
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
    f928:	e5843058 	str	r3, [r4, #88]	; 0x58                          
    f92c:	e2413001 	sub	r3, r1, #1                                    
    f930:	e2731000 	rsbs	r1, r3, #0                                   
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    f934:	e5842050 	str	r2, [r4, #80]	; 0x50                          
  head->previous = NULL;                                              
    f938:	e3a02000 	mov	r2, #0                                        
    f93c:	e5842054 	str	r2, [r4, #84]	; 0x54                          
    f940:	e1a00004 	mov	r0, r4                                        
    f944:	e0a11003 	adc	r1, r1, r3                                    
    f948:	e3a02080 	mov	r2, #128	; 0x80                               
    f94c:	e3a03006 	mov	r3, #6                                        
    f950:	eb000982 	bl	11f60 <_Thread_queue_Initialize>               
       THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
    STATES_WAITING_FOR_MESSAGE,                                       
    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT                                 
  );                                                                  
                                                                      
  return true;                                                        
    f954:	e3a00001 	mov	r0, #1                                        
    f958:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
}                                                                     
    f95c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

0000baac <_Heap_Allocate_aligned_with_boundary>: Heap_Control *heap, uintptr_t alloc_size, uintptr_t alignment, uintptr_t boundary ) {
    baac:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    bab0:	e1a08002 	mov	r8, r2                                        
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
    - HEAP_ALLOC_BONUS;                                               
  uintptr_t const page_size = heap->page_size;                        
    bab4:	e5902010 	ldr	r2, [r0, #16]                                 
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
    bab8:	e24dd01c 	sub	sp, sp, #28                                   
    babc:	e1a06001 	mov	r6, r1                                        
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    bac0:	e2911004 	adds	r1, r1, #4                                   
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
    bac4:	e1a07000 	mov	r7, r0                                        
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    bac8:	e58d1000 	str	r1, [sp]                                      
  Heap_Control *heap,                                                 
  uintptr_t alloc_size,                                               
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
    bacc:	e1a0b003 	mov	fp, r3                                        
  Heap_Statistics *const stats = &heap->stats;                        
  uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
    - HEAP_ALLOC_BONUS;                                               
  uintptr_t const page_size = heap->page_size;                        
    bad0:	e58d200c 	str	r2, [sp, #12]                                 
  Heap_Block *block = NULL;                                           
  uintptr_t alloc_begin = 0;                                          
  uint32_t search_count = 0;                                          
  bool search_again = false;                                          
                                                                      
  if ( block_size_floor < alloc_size ) {                              
    bad4:	2a000086 	bcs	bcf4 <_Heap_Allocate_aligned_with_boundary+0x248>
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    bad8:	e3530000 	cmp	r3, #0                                        
    badc:	1a000078 	bne	bcc4 <_Heap_Allocate_aligned_with_boundary+0x218>
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
    bae0:	e597a008 	ldr	sl, [r7, #8]                                  
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
    bae4:	e157000a 	cmp	r7, sl                                        
    bae8:	e3a05000 	mov	r5, #0                                        
    baec:	0a00007b 	beq	bce0 <_Heap_Allocate_aligned_with_boundary+0x234>
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    baf0:	e59d300c 	ldr	r3, [sp, #12]                                 
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
    baf4:	e2662004 	rsb	r2, r6, #4                                    
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    baf8:	e2833007 	add	r3, r3, #7                                    
    bafc:	e58d3010 	str	r3, [sp, #16]                                 
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
    bb00:	e58d2014 	str	r2, [sp, #20]                                 
    bb04:	ea000005 	b	bb20 <_Heap_Allocate_aligned_with_boundary+0x74>
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
    bb08:	e3540000 	cmp	r4, #0                                        
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
    bb0c:	e2855001 	add	r5, r5, #1                                    
                                                                      
      if ( alloc_begin != 0 ) {                                       
    bb10:	1a00005a 	bne	bc80 <_Heap_Allocate_aligned_with_boundary+0x1d4>
        break;                                                        
      }                                                               
                                                                      
      block = block->next;                                            
    bb14:	e59aa008 	ldr	sl, [sl, #8]                                  
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
    bb18:	e157000a 	cmp	r7, sl                                        
    bb1c:	0a00006f 	beq	bce0 <_Heap_Allocate_aligned_with_boundary+0x234>
      /*                                                              
       * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
       * field.  Thus the value is about one unit larger than the real block
       * size.  The greater than operator takes this into account.    
       */                                                             
      if ( block->size_and_flag > block_size_floor ) {                
    bb20:	e59a9004 	ldr	r9, [sl, #4]                                  
    bb24:	e59d3000 	ldr	r3, [sp]                                      
    bb28:	e1530009 	cmp	r3, r9                                        
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
    bb2c:	22855001 	addcs	r5, r5, #1                                  
      /*                                                              
       * The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
       * field.  Thus the value is about one unit larger than the real block
       * size.  The greater than operator takes this into account.    
       */                                                             
      if ( block->size_and_flag > block_size_floor ) {                
    bb30:	2afffff7 	bcs	bb14 <_Heap_Allocate_aligned_with_boundary+0x68>
        if ( alignment == 0 ) {                                       
    bb34:	e3580000 	cmp	r8, #0                                        
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
    bb38:	028a4008 	addeq	r4, sl, #8                                  
    bb3c:	0afffff1 	beq	bb08 <_Heap_Allocate_aligned_with_boundary+0x5c>
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
    bb40:	e59d3014 	ldr	r3, [sp, #20]                                 
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
    bb44:	e3c99001 	bic	r9, r9, #1                                    
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
    bb48:	e5972014 	ldr	r2, [r7, #20]                                 
                                                                      
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
    bb4c:	e08a9009 	add	r9, sl, r9                                    
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
    bb50:	e59d1010 	ldr	r1, [sp, #16]                                 
                                                                      
  uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;                 
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
    bb54:	e0834009 	add	r4, r3, r9                                    
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
    bb58:	e1a00004 	mov	r0, r4                                        
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    + HEAP_BLOCK_HEADER_SIZE + page_size - 1;                         
    bb5c:	e0623001 	rsb	r3, r2, r1                                    
    bb60:	e1a01008 	mov	r1, r8                                        
  uintptr_t alignment,                                                
  uintptr_t boundary                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
    bb64:	e58d2004 	str	r2, [sp, #4]                                  
  uintptr_t const block_begin = (uintptr_t) block;                    
  uintptr_t const block_size = _Heap_Block_size( block );             
  uintptr_t const block_end = block_begin + block_size;               
                                                                      
  uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
  uintptr_t const alloc_begin_ceiling = block_end - min_block_size    
    bb68:	e0839009 	add	r9, r3, r9                                    
    bb6c:	eb002b54 	bl	168c4 <__umodsi3>                              
    bb70:	e0604004 	rsb	r4, r0, r4                                    
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
    bb74:	e28a2008 	add	r2, sl, #8                                    
  uintptr_t alloc_begin = alloc_end - alloc_size;                     
                                                                      
  alloc_begin = _Heap_Align_down( alloc_begin, alignment );           
                                                                      
  /* Ensure that the we have a valid new block at the end */          
  if ( alloc_begin > alloc_begin_ceiling ) {                          
    bb78:	e1590004 	cmp	r9, r4                                        
    bb7c:	e58d2008 	str	r2, [sp, #8]                                  
    bb80:	2a000003 	bcs	bb94 <_Heap_Allocate_aligned_with_boundary+0xe8>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
    bb84:	e1a00009 	mov	r0, r9                                        
    bb88:	e1a01008 	mov	r1, r8                                        
    bb8c:	eb002b4c 	bl	168c4 <__umodsi3>                              
    bb90:	e0604009 	rsb	r4, r0, r9                                    
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    bb94:	e35b0000 	cmp	fp, #0                                        
    bb98:	0a000025 	beq	bc34 <_Heap_Allocate_aligned_with_boundary+0x188>
  /* Ensure that the we have a valid new block at the end */          
  if ( alloc_begin > alloc_begin_ceiling ) {                          
    alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment ); 
  }                                                                   
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
    bb9c:	e0849006 	add	r9, r4, r6                                    
    bba0:	e1a00009 	mov	r0, r9                                        
    bba4:	e1a0100b 	mov	r1, fp                                        
    bba8:	eb002b45 	bl	168c4 <__umodsi3>                              
    bbac:	e0600009 	rsb	r0, r0, r9                                    
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
    bbb0:	e1540000 	cmp	r4, r0                                        
    bbb4:	23a03000 	movcs	r3, #0                                      
    bbb8:	33a03001 	movcc	r3, #1                                      
    bbbc:	e1590000 	cmp	r9, r0                                        
    bbc0:	93a03000 	movls	r3, #0                                      
    bbc4:	e3530000 	cmp	r3, #0                                        
    bbc8:	0a000019 	beq	bc34 <_Heap_Allocate_aligned_with_boundary+0x188>
                                                                      
  alloc_end = alloc_begin + alloc_size;                               
                                                                      
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    bbcc:	e59d3008 	ldr	r3, [sp, #8]                                  
    bbd0:	e0839006 	add	r9, r3, r6                                    
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
    bbd4:	e1590000 	cmp	r9, r0                                        
    bbd8:	958da018 	strls	sl, [sp, #24]                               
    bbdc:	9a000002 	bls	bbec <_Heap_Allocate_aligned_with_boundary+0x140>
    bbe0:	ea00003c 	b	bcd8 <_Heap_Allocate_aligned_with_boundary+0x22c>
    bbe4:	e1590000 	cmp	r9, r0                                        
    bbe8:	8a00003e 	bhi	bce8 <_Heap_Allocate_aligned_with_boundary+0x23c>
        return 0;                                                     
      }                                                               
      alloc_begin = boundary_line - alloc_size;                       
    bbec:	e0664000 	rsb	r4, r6, r0                                    
    bbf0:	e1a01008 	mov	r1, r8                                        
    bbf4:	e1a00004 	mov	r0, r4                                        
    bbf8:	eb002b31 	bl	168c4 <__umodsi3>                              
    bbfc:	e0604004 	rsb	r4, r0, r4                                    
      alloc_begin = _Heap_Align_down( alloc_begin, alignment );       
      alloc_end = alloc_begin + alloc_size;                           
    bc00:	e084a006 	add	sl, r4, r6                                    
    bc04:	e1a0000a 	mov	r0, sl                                        
    bc08:	e1a0100b 	mov	r1, fp                                        
    bc0c:	eb002b2c 	bl	168c4 <__umodsi3>                              
    bc10:	e060000a 	rsb	r0, r0, sl                                    
  /* Ensure boundary constaint */                                     
  if ( boundary != 0 ) {                                              
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
    bc14:	e15a0000 	cmp	sl, r0                                        
    bc18:	93a0a000 	movls	sl, #0                                      
    bc1c:	83a0a001 	movhi	sl, #1                                      
    bc20:	e1540000 	cmp	r4, r0                                        
    bc24:	23a0a000 	movcs	sl, #0                                      
    bc28:	e35a0000 	cmp	sl, #0                                        
    bc2c:	1affffec 	bne	bbe4 <_Heap_Allocate_aligned_with_boundary+0x138>
    bc30:	e59da018 	ldr	sl, [sp, #24]                                 
      boundary_line = _Heap_Align_down( alloc_end, boundary );        
    }                                                                 
  }                                                                   
                                                                      
  /* Ensure that the we have a valid new block at the beginning */    
  if ( alloc_begin >= alloc_begin_floor ) {                           
    bc34:	e59d2008 	ldr	r2, [sp, #8]                                  
    bc38:	e1520004 	cmp	r2, r4                                        
    bc3c:	8a000025 	bhi	bcd8 <_Heap_Allocate_aligned_with_boundary+0x22c>
    bc40:	e1a00004 	mov	r0, r4                                        
    bc44:	e59d100c 	ldr	r1, [sp, #12]                                 
    bc48:	eb002b1d 	bl	168c4 <__umodsi3>                              
    bc4c:	e3e09007 	mvn	r9, #7                                        
    bc50:	e06a9009 	rsb	r9, sl, r9                                    
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
    bc54:	e0899004 	add	r9, r9, r4                                    
    if ( free_size >= min_block_size || free_size == 0 ) {            
      return alloc_begin;                                             
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
    bc58:	e59d2004 	ldr	r2, [sp, #4]                                  
  if ( alloc_begin >= alloc_begin_floor ) {                           
    uintptr_t const alloc_block_begin =                               
      (uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size );
    uintptr_t const free_size = alloc_block_begin - block_begin;      
                                                                      
    if ( free_size >= min_block_size || free_size == 0 ) {            
    bc5c:	e0603009 	rsb	r3, r0, r9                                    
      return alloc_begin;                                             
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
    bc60:	e1590000 	cmp	r9, r0                                        
    bc64:	11520003 	cmpne	r2, r3                                      
    bc68:	83a03000 	movhi	r3, #0                                      
    bc6c:	93a03001 	movls	r3, #1                                      
    bc70:	81a04003 	movhi	r4, r3                                      
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
                                                                      
      if ( alloc_begin != 0 ) {                                       
    bc74:	e3540000 	cmp	r4, #0                                        
          );                                                          
        }                                                             
      }                                                               
                                                                      
      /* Statistics */                                                
      ++search_count;                                                 
    bc78:	e2855001 	add	r5, r5, #1                                    
                                                                      
      if ( alloc_begin != 0 ) {                                       
    bc7c:	0affffa4 	beq	bb14 <_Heap_Allocate_aligned_with_boundary+0x68>
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
    stats->searches += search_count;                                  
    bc80:	e2872048 	add	r2, r7, #72	; 0x48                            
    bc84:	e892000c 	ldm	r2, {r2, r3}                                  
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
    bc88:	e2822001 	add	r2, r2, #1                                    
    stats->searches += search_count;                                  
    bc8c:	e0833005 	add	r3, r3, r5                                    
    search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
  } while ( search_again );                                           
                                                                      
  if ( alloc_begin != 0 ) {                                           
    /* Statistics */                                                  
    ++stats->allocs;                                                  
    bc90:	e5872048 	str	r2, [r7, #72]	; 0x48                          
    stats->searches += search_count;                                  
    bc94:	e587304c 	str	r3, [r7, #76]	; 0x4c                          
                                                                      
    block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
    bc98:	e1a00007 	mov	r0, r7                                        
    bc9c:	e1a0100a 	mov	r1, sl                                        
    bca0:	e1a02004 	mov	r2, r4                                        
    bca4:	e1a03006 	mov	r3, r6                                        
    bca8:	ebffef05 	bl	78c4 <_Heap_Block_allocate>                    
      boundary                                                        
    );                                                                
  }                                                                   
                                                                      
  /* Statistics */                                                    
  if ( stats->max_search < search_count ) {                           
    bcac:	e5973044 	ldr	r3, [r7, #68]	; 0x44                          
    bcb0:	e1530005 	cmp	r3, r5                                        
    stats->max_search = search_count;                                 
    bcb4:	35875044 	strcc	r5, [r7, #68]	; 0x44                        
  }                                                                   
                                                                      
  return (void *) alloc_begin;                                        
    bcb8:	e1a00004 	mov	r0, r4                                        
}                                                                     
    bcbc:	e28dd01c 	add	sp, sp, #28                                   
    bcc0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    /* Integer overflow occured */                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    if ( boundary < alloc_size ) {                                    
    bcc4:	e1560003 	cmp	r6, r3                                        
    bcc8:	8a000009 	bhi	bcf4 <_Heap_Allocate_aligned_with_boundary+0x248>
      return NULL;                                                    
    }                                                                 
                                                                      
    if ( alignment == 0 ) {                                           
      alignment = page_size;                                          
    bccc:	e3580000 	cmp	r8, #0                                        
    bcd0:	01a08002 	moveq	r8, r2                                      
    bcd4:	eaffff81 	b	bae0 <_Heap_Allocate_aligned_with_boundary+0x34>
    if ( free_size >= min_block_size || free_size == 0 ) {            
      return alloc_begin;                                             
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
    bcd8:	e3a04000 	mov	r4, #0                                        
    bcdc:	eaffff89 	b	bb08 <_Heap_Allocate_aligned_with_boundary+0x5c>
                                                                      
  do {                                                                
    Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );  
                                                                      
    block = _Heap_Free_list_first( heap );                            
    while ( block != free_list_tail ) {                               
    bce0:	e3a04000 	mov	r4, #0                                        
    bce4:	eafffff0 	b	bcac <_Heap_Allocate_aligned_with_boundary+0x200>
    bce8:	e59da018 	ldr	sl, [sp, #24]                                 <== NOT EXECUTED
    uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;  
    uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
                                                                      
    while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
      if ( boundary_line < boundary_floor ) {                         
        return 0;                                                     
    bcec:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
    bcf0:	eaffff84 	b	bb08 <_Heap_Allocate_aligned_with_boundary+0x5c><== NOT EXECUTED
    return NULL;                                                      
  }                                                                   
                                                                      
  if ( boundary != 0 ) {                                              
    if ( boundary < alloc_size ) {                                    
      return NULL;                                                    
    bcf4:	e3a00000 	mov	r0, #0                                        
    bcf8:	eaffffef 	b	bcbc <_Heap_Allocate_aligned_with_boundary+0x210>
                                                                      

0000bcfc <_Heap_Free>: /* * If NULL return true so a free on NULL is considered a valid release. This * is a special case that could be handled by the in heap check how-ever that * would result in false being returned which is wrong. */ if ( alloc_begin_ptr == NULL ) {
    bcfc:	e2513000 	subs	r3, r1, #0                                   
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
{                                                                     
    bd00:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    bd04:	e1a04000 	mov	r4, r0                                        
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
    return true;                                                      
    bd08:	03a00001 	moveq	r0, #1                                      
  /*                                                                  
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
    bd0c:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
    bd10:	e1a00003 	mov	r0, r3                                        
    bd14:	e5941010 	ldr	r1, [r4, #16]                                 
    bd18:	e2435008 	sub	r5, r3, #8                                    
    bd1c:	eb002ae8 	bl	168c4 <__umodsi3>                              
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    bd20:	e5942020 	ldr	r2, [r4, #32]                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
    bd24:	e0605005 	rsb	r5, r0, r5                                    
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
    bd28:	e1550002 	cmp	r5, r2                                        
    bd2c:	3a00002f 	bcc	bdf0 <_Heap_Free+0xf4>                        
    bd30:	e5941024 	ldr	r1, [r4, #36]	; 0x24                          
    bd34:	e1550001 	cmp	r5, r1                                        
    bd38:	8a00002c 	bhi	bdf0 <_Heap_Free+0xf4>                        
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
    bd3c:	e595c004 	ldr	ip, [r5, #4]                                  
    bd40:	e3cc6001 	bic	r6, ip, #1                                    
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
    bd44:	e0853006 	add	r3, r5, r6                                    
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
    bd48:	e1520003 	cmp	r2, r3                                        
    bd4c:	8a000027 	bhi	bdf0 <_Heap_Free+0xf4>                        
    bd50:	e1510003 	cmp	r1, r3                                        
    bd54:	3a000027 	bcc	bdf8 <_Heap_Free+0xfc>                        
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
    bd58:	e5937004 	ldr	r7, [r3, #4]                                  
    return false;                                                     
  }                                                                   
                                                                      
  _Heap_Protection_block_check( heap, next_block );                   
                                                                      
  if ( !_Heap_Is_prev_used( next_block ) ) {                          
    bd5c:	e2170001 	ands	r0, r7, #1                                   
    bd60:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
    bd64:	e1510003 	cmp	r1, r3                                        
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
    bd68:	e3c77001 	bic	r7, r7, #1                                    
    bd6c:	03a08000 	moveq	r8, #0                                      
    bd70:	0a000004 	beq	bd88 <_Heap_Free+0x8c>                        
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
    bd74:	e0830007 	add	r0, r3, r7                                    
    bd78:	e5900004 	ldr	r0, [r0, #4]                                  
                                                                      
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
    bd7c:	e3100001 	tst	r0, #1                                        
    bd80:	13a08000 	movne	r8, #0                                      
    bd84:	03a08001 	moveq	r8, #1                                      
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
                                                                      
  if ( !_Heap_Is_prev_used( block ) ) {                               
    bd88:	e21c0001 	ands	r0, ip, #1                                   
    bd8c:	1a00001b 	bne	be00 <_Heap_Free+0x104>                       
    uintptr_t const prev_size = block->prev_size;                     
    bd90:	e595c000 	ldr	ip, [r5]                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
    bd94:	e06ca005 	rsb	sl, ip, r5                                    
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
    bd98:	e152000a 	cmp	r2, sl                                        
    bd9c:	88bd85f0 	pophi	{r4, r5, r6, r7, r8, sl, pc}                
    bda0:	e151000a 	cmp	r1, sl                                        
    bda4:	38bd85f0 	popcc	{r4, r5, r6, r7, r8, sl, pc}                
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
    bda8:	e59a0004 	ldr	r0, [sl, #4]                                  
      return( false );                                                
    }                                                                 
                                                                      
    /* As we always coalesce free blocks, the block that preceedes prev_block
       must have been used. */                                        
    if ( !_Heap_Is_prev_used ( prev_block) ) {                        
    bdac:	e2100001 	ands	r0, r0, #1                                   
    bdb0:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
    bdb4:	e3580000 	cmp	r8, #0                                        
    bdb8:	0a000039 	beq	bea4 <_Heap_Free+0x1a8>                       
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
    bdbc:	e5940038 	ldr	r0, [r4, #56]	; 0x38                          
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
    bdc0:	e0867007 	add	r7, r6, r7                                    
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) 
{                                                                     
  Heap_Block *next = block->next;                                     
  Heap_Block *prev = block->prev;                                     
    bdc4:	e2832008 	add	r2, r3, #8                                    
    bdc8:	e892000c 	ldm	r2, {r2, r3}                                  
    bdcc:	e087c00c 	add	ip, r7, ip                                    
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
    bdd0:	e2400001 	sub	r0, r0, #1                                    
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
    bdd4:	e38c1001 	orr	r1, ip, #1                                    
                                                                      
  prev->next = next;                                                  
    bdd8:	e5832008 	str	r2, [r3, #8]                                  
  next->prev = prev;                                                  
    bddc:	e582300c 	str	r3, [r2, #12]                                 
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
      uintptr_t const size = block_size + prev_size + next_block_size;
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
    bde0:	e5840038 	str	r0, [r4, #56]	; 0x38                          
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
    bde4:	e58a1004 	str	r1, [sl, #4]                                  
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    bde8:	e78ac00c 	str	ip, [sl, ip]                                  
    bdec:	ea00000f 	b	be30 <_Heap_Free+0x134>                         
                                                                      
  block_size = _Heap_Block_size( block );                             
  next_block = _Heap_Block_at( block, block_size );                   
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {                
    return false;                                                     
    bdf0:	e3a00000 	mov	r0, #0                                        
    bdf4:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
    bdf8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
    bdfc:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
      uintptr_t const size = block_size + prev_size;                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    be00:	e3580000 	cmp	r8, #0                                        
    be04:	0a000014 	beq	be5c <_Heap_Free+0x160>                       
  Heap_Block *old_block,                                              
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = old_block->next;                                 
  Heap_Block *prev = old_block->prev;                                 
    be08:	e2832008 	add	r2, r3, #8                                    
    be0c:	e892000c 	ldm	r2, {r2, r3}                                  
    uintptr_t const size = block_size + next_block_size;              
    be10:	e0877006 	add	r7, r7, r6                                    
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
    be14:	e3871001 	orr	r1, r7, #1                                    
                                                                      
  new_block->next = next;                                             
    be18:	e5852008 	str	r2, [r5, #8]                                  
  new_block->prev = prev;                                             
    be1c:	e585300c 	str	r3, [r5, #12]                                 
                                                                      
  next->prev = new_block;                                             
  prev->next = new_block;                                             
    be20:	e5835008 	str	r5, [r3, #8]                                  
  Heap_Block *prev = old_block->prev;                                 
                                                                      
  new_block->next = next;                                             
  new_block->prev = prev;                                             
                                                                      
  next->prev = new_block;                                             
    be24:	e582500c 	str	r5, [r2, #12]                                 
    be28:	e5851004 	str	r1, [r5, #4]                                  
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
    be2c:	e7857007 	str	r7, [r5, r7]                                  
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
    be30:	e5942040 	ldr	r2, [r4, #64]	; 0x40                          
  ++stats->frees;                                                     
    be34:	e5943050 	ldr	r3, [r4, #80]	; 0x50                          
  stats->free_size += block_size;                                     
    be38:	e5941030 	ldr	r1, [r4, #48]	; 0x30                          
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
    be3c:	e2422001 	sub	r2, r2, #1                                    
  ++stats->frees;                                                     
    be40:	e2833001 	add	r3, r3, #1                                    
  stats->free_size += block_size;                                     
    be44:	e0816006 	add	r6, r1, r6                                    
      stats->max_free_blocks = stats->free_blocks;                    
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
    be48:	e5842040 	str	r2, [r4, #64]	; 0x40                          
  ++stats->frees;                                                     
    be4c:	e5843050 	str	r3, [r4, #80]	; 0x50                          
  stats->free_size += block_size;                                     
    be50:	e5846030 	str	r6, [r4, #48]	; 0x30                          
                                                                      
  return( true );                                                     
    be54:	e3a00001 	mov	r0, #1                                        
    be58:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
    next_block->prev_size = size;                                     
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    be5c:	e3862001 	orr	r2, r6, #1                                    
    be60:	e5852004 	str	r2, [r5, #4]                                  
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    be64:	e5942038 	ldr	r2, [r4, #56]	; 0x38                          
    if ( stats->max_free_blocks < stats->free_blocks ) {              
    be68:	e594c03c 	ldr	ip, [r4, #60]	; 0x3c                          
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    be6c:	e5930004 	ldr	r0, [r3, #4]                                  
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(               
  Heap_Block *block_before,                                           
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
    be70:	e5941008 	ldr	r1, [r4, #8]                                  
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    be74:	e2822001 	add	r2, r2, #1                                    
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    be78:	e3c00001 	bic	r0, r0, #1                                    
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    if ( stats->max_free_blocks < stats->free_blocks ) {              
    be7c:	e152000c 	cmp	r2, ip                                        
                                                                      
  new_block->next = next;                                             
    be80:	e5851008 	str	r1, [r5, #8]                                  
  new_block->prev = block_before;                                     
    be84:	e585400c 	str	r4, [r5, #12]                                 
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    be88:	e5830004 	str	r0, [r3, #4]                                  
  block_before->next = new_block;                                     
  next->prev = new_block;                                             
    be8c:	e581500c 	str	r5, [r1, #12]                                 
    next_block->prev_size = block_size;                               
    be90:	e7856006 	str	r6, [r5, r6]                                  
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
    be94:	e5845008 	str	r5, [r4, #8]                                  
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
    be98:	e5842038 	str	r2, [r4, #56]	; 0x38                          
    if ( stats->max_free_blocks < stats->free_blocks ) {              
      stats->max_free_blocks = stats->free_blocks;                    
    be9c:	8584203c 	strhi	r2, [r4, #60]	; 0x3c                        
    bea0:	eaffffe2 	b	be30 <_Heap_Free+0x134>                         
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    } else {                      /* coalesce prev */                 
      uintptr_t const size = block_size + prev_size;                  
    bea4:	e086c00c 	add	ip, r6, ip                                    
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
    bea8:	e38c2001 	orr	r2, ip, #1                                    
    beac:	e58a2004 	str	r2, [sl, #4]                                  
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
    beb0:	e5932004 	ldr	r2, [r3, #4]                                  
    beb4:	e3c22001 	bic	r2, r2, #1                                    
    beb8:	e5832004 	str	r2, [r3, #4]                                  
      next_block->prev_size = size;                                   
    bebc:	e785c006 	str	ip, [r5, r6]                                  
    bec0:	eaffffda 	b	be30 <_Heap_Free+0x134>                         
                                                                      

0000961c <_Heap_Greedy_allocate>: Heap_Block *_Heap_Greedy_allocate( Heap_Control *heap, const uintptr_t *block_sizes, size_t block_count ) {
    961c:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
    9620:	e2528000 	subs	r8, r2, #0                                   
Heap_Block *_Heap_Greedy_allocate(                                    
  Heap_Control *heap,                                                 
  const uintptr_t *block_sizes,                                       
  size_t block_count                                                  
)                                                                     
{                                                                     
    9624:	e1a04000 	mov	r4, r0                                        
  Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );    
  Heap_Block *allocated_blocks = NULL;                                
    9628:	01a05008 	moveq	r5, r8                                      
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
    962c:	0a000012 	beq	967c <_Heap_Greedy_allocate+0x60>             
    9630:	e3a06000 	mov	r6, #0                                        
    9634:	e1a07001 	mov	r7, r1                                        
  const uintptr_t *block_sizes,                                       
  size_t block_count                                                  
)                                                                     
{                                                                     
  Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );    
  Heap_Block *allocated_blocks = NULL;                                
    9638:	e1a05006 	mov	r5, r6                                        
 * @brief See _Heap_Allocate_aligned_with_boundary() with alignment and
 * boundary equals zero.                                              
 */                                                                   
RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size )
{                                                                     
  return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );    
    963c:	e3a02000 	mov	r2, #0                                        
    9640:	e4971004 	ldr	r1, [r7], #4                                  
    9644:	e1a03002 	mov	r3, r2                                        
    9648:	e1a00004 	mov	r0, r4                                        
    964c:	eb001be1 	bl	105d8 <_Heap_Allocate_aligned_with_boundary>   
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
    void *next = _Heap_Allocate( heap, block_sizes [i] );             
                                                                      
    if ( next != NULL ) {                                             
    9650:	e250a000 	subs	sl, r0, #0                                   
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
    9654:	e2866001 	add	r6, r6, #1                                    
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
    9658:	e24aa008 	sub	sl, sl, #8                                    
    void *next = _Heap_Allocate( heap, block_sizes [i] );             
                                                                      
    if ( next != NULL ) {                                             
    965c:	0a000004 	beq	9674 <_Heap_Greedy_allocate+0x58>             
    9660:	e5941010 	ldr	r1, [r4, #16]                                 
    9664:	eb004755 	bl	1b3c0 <__umodsi3>                              
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
    9668:	e060000a 	rsb	r0, r0, sl                                    
      Heap_Block *next_block = _Heap_Block_of_alloc_area(             
        (uintptr_t) next,                                             
        heap->page_size                                               
      );                                                              
                                                                      
      next_block->next = allocated_blocks;                            
    966c:	e5805008 	str	r5, [r0, #8]                                  
    9670:	e1a05000 	mov	r5, r0                                        
  Heap_Block *allocated_blocks = NULL;                                
  Heap_Block *blocks = NULL;                                          
  Heap_Block *current;                                                
  size_t i;                                                           
                                                                      
  for (i = 0; i < block_count; ++i) {                                 
    9674:	e1560008 	cmp	r6, r8                                        
    9678:	1affffef 	bne	963c <_Heap_Greedy_allocate+0x20>             
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
    967c:	e5946008 	ldr	r6, [r4, #8]                                  
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
    9680:	e1540006 	cmp	r4, r6                                        
    9684:	13a07000 	movne	r7, #0                                      
    9688:	1a000002 	bne	9698 <_Heap_Greedy_allocate+0x7c>             
    968c:	ea000018 	b	96f4 <_Heap_Greedy_allocate+0xd8>               <== NOT EXECUTED
    9690:	e1a07006 	mov	r7, r6                                        
    9694:	e1a06003 	mov	r6, r3                                        
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
    9698:	e5963004 	ldr	r3, [r6, #4]                                  
    969c:	e3c33001 	bic	r3, r3, #1                                    
    _Heap_Block_allocate(                                             
    96a0:	e2433008 	sub	r3, r3, #8                                    
    96a4:	e1a01006 	mov	r1, r6                                        
    96a8:	e2862008 	add	r2, r6, #8                                    
    96ac:	e1a00004 	mov	r0, r4                                        
    96b0:	eb0000d0 	bl	99f8 <_Heap_Block_allocate>                    
      current,                                                        
      _Heap_Alloc_area_of_block( current ),                           
      _Heap_Block_size( current ) - HEAP_BLOCK_HEADER_SIZE            
    );                                                                
                                                                      
    current->next = blocks;                                           
    96b4:	e5867008 	str	r7, [r6, #8]                                  
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
    96b8:	e5943008 	ldr	r3, [r4, #8]                                  
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
    96bc:	e1540003 	cmp	r4, r3                                        
    96c0:	1afffff2 	bne	9690 <_Heap_Greedy_allocate+0x74>             
                                                                      
    current->next = blocks;                                           
    blocks = current;                                                 
  }                                                                   
                                                                      
  while ( allocated_blocks != NULL ) {                                
    96c4:	e3550000 	cmp	r5, #0                                        
    96c8:	1a000001 	bne	96d4 <_Heap_Greedy_allocate+0xb8>             
    96cc:	ea000006 	b	96ec <_Heap_Greedy_allocate+0xd0>               
    current = allocated_blocks;                                       
    allocated_blocks = allocated_blocks->next;                        
    96d0:	e1a05007 	mov	r5, r7                                        
    96d4:	e1a01005 	mov	r1, r5                                        
    96d8:	e5b17008 	ldr	r7, [r1, #8]!                                 
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
    96dc:	e1a00004 	mov	r0, r4                                        
    96e0:	eb001c50 	bl	10828 <_Heap_Free>                             
                                                                      
    current->next = blocks;                                           
    blocks = current;                                                 
  }                                                                   
                                                                      
  while ( allocated_blocks != NULL ) {                                
    96e4:	e3570000 	cmp	r7, #0                                        
    96e8:	1afffff8 	bne	96d0 <_Heap_Greedy_allocate+0xb4>             
    allocated_blocks = allocated_blocks->next;                        
    _Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( current ) );
  }                                                                   
                                                                      
  return blocks;                                                      
}                                                                     
    96ec:	e1a00006 	mov	r0, r6                                        
    96f0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
      next_block->next = allocated_blocks;                            
      allocated_blocks = next_block;                                  
    }                                                                 
  }                                                                   
                                                                      
  while ( (current = _Heap_Free_list_first( heap )) != free_list_tail ) {
    96f4:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
    96f8:	eafffff1 	b	96c4 <_Heap_Greedy_allocate+0xa8>               <== NOT EXECUTED
                                                                      

0001136c <_Heap_Iterate>: Heap_Block_visitor visitor, void *visitor_arg ) { Heap_Block *current = heap->first_block; Heap_Block *end = heap->last_block;
   1136c:	e2800020 	add	r0, r0, #32                                   
void _Heap_Iterate(                                                   
  Heap_Control *heap,                                                 
  Heap_Block_visitor visitor,                                         
  void *visitor_arg                                                   
)                                                                     
{                                                                     
   11370:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
   11374:	e8900021 	ldm	r0, {r0, r5}                                  
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
   11378:	e1500005 	cmp	r0, r5                                        
void _Heap_Iterate(                                                   
  Heap_Control *heap,                                                 
  Heap_Block_visitor visitor,                                         
  void *visitor_arg                                                   
)                                                                     
{                                                                     
   1137c:	e1a07001 	mov	r7, r1                                        
   11380:	e1a06002 	mov	r6, r2                                        
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
   11384:	1a000001 	bne	11390 <_Heap_Iterate+0x24>                    
   11388:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
   1138c:	e1a00004 	mov	r0, r4                                        
   11390:	e5901004 	ldr	r1, [r0, #4]                                  
   11394:	e3c11001 	bic	r1, r1, #1                                    
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   11398:	e0804001 	add	r4, r0, r1                                    
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
   1139c:	e5942004 	ldr	r2, [r4, #4]                                  
    uintptr_t size = _Heap_Block_size( current );                     
    Heap_Block *next = _Heap_Block_at( current, size );               
    bool used = _Heap_Is_prev_used( next );                           
                                                                      
    stop = (*visitor)( current, size, used, visitor_arg );            
   113a0:	e1a03006 	mov	r3, r6                                        
   113a4:	e2022001 	and	r2, r2, #1                                    
   113a8:	e1a0e00f 	mov	lr, pc                                        
   113ac:	e12fff17 	bx	r7                                             
{                                                                     
  Heap_Block *current = heap->first_block;                            
  Heap_Block *end = heap->last_block;                                 
  bool stop = false;                                                  
                                                                      
  while ( !stop && current != end ) {                                 
   113b0:	e3500000 	cmp	r0, #0                                        
   113b4:	18bd80f0 	popne	{r4, r5, r6, r7, pc}                        
   113b8:	e1550004 	cmp	r5, r4                                        
   113bc:	1afffff2 	bne	1138c <_Heap_Iterate+0x20>                    
   113c0:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      

0000bff8 <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) {
    bff8:	e92d4070 	push	{r4, r5, r6, lr}                             
    bffc:	e1a04000 	mov	r4, r0                                        
    c000:	e1a05001 	mov	r5, r1                                        
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
    c004:	e1a00001 	mov	r0, r1                                        
    c008:	e5941010 	ldr	r1, [r4, #16]                                 
    c00c:	e1a06002 	mov	r6, r2                                        
    c010:	eb002a2b 	bl	168c4 <__umodsi3>                              
    c014:	e2452008 	sub	r2, r5, #8                                    
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    c018:	e5943020 	ldr	r3, [r4, #32]                                 
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
    c01c:	e0602002 	rsb	r2, r0, r2                                    
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
    c020:	e1520003 	cmp	r2, r3                                        
    c024:	3a000010 	bcc	c06c <_Heap_Size_of_alloc_area+0x74>          
    c028:	e5941024 	ldr	r1, [r4, #36]	; 0x24                          
    c02c:	e1520001 	cmp	r2, r1                                        
    c030:	8a00000d 	bhi	c06c <_Heap_Size_of_alloc_area+0x74>          
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
    c034:	e5920004 	ldr	r0, [r2, #4]                                  
    c038:	e3c00001 	bic	r0, r0, #1                                    
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
    c03c:	e0822000 	add	r2, r2, r0                                    
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
    c040:	e1530002 	cmp	r3, r2                                        
    c044:	8a000008 	bhi	c06c <_Heap_Size_of_alloc_area+0x74>          
    c048:	e1510002 	cmp	r1, r2                                        
    c04c:	3a000008 	bcc	c074 <_Heap_Size_of_alloc_area+0x7c>          
  block->size_and_flag = size | flag;                                 
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & HEAP_PREV_BLOCK_USED;                 
    c050:	e5920004 	ldr	r0, [r2, #4]                                  
  block_size = _Heap_Block_size( block );                             
  next_block = _Heap_Block_at( block, block_size );                   
                                                                      
  if (                                                                
    !_Heap_Is_block_in_heap( heap, next_block )                       
      || !_Heap_Is_prev_used( next_block )                            
    c054:	e2100001 	ands	r0, r0, #1                                   
  ) {                                                                 
    return false;                                                     
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
    c058:	12655004 	rsbne	r5, r5, #4                                  
    c05c:	10852002 	addne	r2, r5, r2                                  
    c060:	15862000 	strne	r2, [r6]                                    
                                                                      
  return true;                                                        
    c064:	13a00001 	movne	r0, #1                                      
    c068:	e8bd8070 	pop	{r4, r5, r6, pc}                              
                                                                      
  if (                                                                
    !_Heap_Is_block_in_heap( heap, next_block )                       
      || !_Heap_Is_prev_used( next_block )                            
  ) {                                                                 
    return false;                                                     
    c06c:	e3a00000 	mov	r0, #0                                        
    c070:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    c074:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
                                                                      
  return true;                                                        
}                                                                     
    c078:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

00007a04 <_Internal_error_Occurred>: void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) {
    7a04:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
    7a08:	e24dd00c 	sub	sp, sp, #12                                   
    7a0c:	e1a04000 	mov	r4, r0                                        
    7a10:	e20160ff 	and	r6, r1, #255	; 0xff                           
  Internal_errors_t      error                                        
)                                                                     
{                                                                     
  User_extensions_Fatal_context ctx = { source, is_internal, error }; 
                                                                      
  _User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );   
    7a14:	e1a0000d 	mov	r0, sp                                        
    7a18:	e59f1040 	ldr	r1, [pc, #64]	; 7a60 <_Internal_error_Occurred+0x5c>
    7a1c:	e1a05002 	mov	r5, r2                                        
  Internal_errors_Source source,                                      
  bool                   is_internal,                                 
  Internal_errors_t      error                                        
)                                                                     
{                                                                     
  User_extensions_Fatal_context ctx = { source, is_internal, error }; 
    7a20:	e58d2008 	str	r2, [sp, #8]                                  
    7a24:	e58d4000 	str	r4, [sp]                                      
    7a28:	e5cd6004 	strb	r6, [sp, #4]                                 
                                                                      
  _User_extensions_Iterate( &ctx, _User_extensions_Fatal_visitor );   
    7a2c:	eb0007be 	bl	992c <_User_extensions_Iterate>                
  _User_extensions_Fatal( the_source, is_internal, the_error );       
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
    7a30:	e59f302c 	ldr	r3, [pc, #44]	; 7a64 <_Internal_error_Occurred+0x60><== NOT EXECUTED
    7a34:	e5834000 	str	r4, [r3]                                      <== NOT EXECUTED
  _Internal_errors_What_happened.is_internal = is_internal;           
    7a38:	e5c36004 	strb	r6, [r3, #4]                                 <== NOT EXECUTED
  _Internal_errors_What_happened.the_error   = the_error;             
    7a3c:	e5835008 	str	r5, [r3, #8]                                  <== NOT EXECUTED
                                                                      
RTEMS_INLINE_ROUTINE void _System_state_Set (                         
  System_state_Codes state                                            
)                                                                     
{                                                                     
  _System_state_Current = state;                                      
    7a40:	e59f3020 	ldr	r3, [pc, #32]	; 7a68 <_Internal_error_Occurred+0x64><== NOT EXECUTED
    7a44:	e3a02005 	mov	r2, #5                                        <== NOT EXECUTED
    7a48:	e5832000 	str	r2, [r3]                                      <== NOT EXECUTED
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    7a4c:	e10f2000 	mrs	r2, CPSR                                      <== NOT EXECUTED
    7a50:	e3823080 	orr	r3, r2, #128	; 0x80                           <== NOT EXECUTED
    7a54:	e129f003 	msr	CPSR_fc, r3                                   <== NOT EXECUTED
                                                                      
  _System_state_Set( SYSTEM_STATE_FAILED );                           
                                                                      
  _CPU_Fatal_halt( the_error );                                       
    7a58:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    7a5c:	eafffffe 	b	7a5c <_Internal_error_Occurred+0x58>            <== NOT EXECUTED
                                                                      

00007b20 <_Objects_Extend_information>: */ void _Objects_Extend_information( Objects_Information *information ) {
    7b20:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    7b24:	e5904034 	ldr	r4, [r0, #52]	; 0x34                          
    7b28:	e3540000 	cmp	r4, #0                                        
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
    7b2c:	e24dd014 	sub	sp, sp, #20                                   
    7b30:	e1a05000 	mov	r5, r0                                        
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
    7b34:	e1d070b8 	ldrh	r7, [r0, #8]                                 
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    7b38:	e1d081b0 	ldrh	r8, [r0, #16]                                
    7b3c:	0a0000a0 	beq	7dc4 <_Objects_Extend_information+0x2a4>      
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
    7b40:	e1d0a1b4 	ldrh	sl, [r0, #20]                                
    7b44:	e1a00008 	mov	r0, r8                                        
    7b48:	e1a0100a 	mov	r1, sl                                        
    7b4c:	eb003b16 	bl	167ac <__aeabi_uidiv>                          
    7b50:	e1a0b800 	lsl	fp, r0, #16                                   
                                                                      
    for ( ; block < block_count; block++ ) {                          
    7b54:	e1b0b82b 	lsrs	fp, fp, #16                                  
    7b58:	0a0000a1 	beq	7de4 <_Objects_Extend_information+0x2c4>      
      if ( information->object_blocks[ block ] == NULL ) {            
    7b5c:	e5949000 	ldr	r9, [r4]                                      
    7b60:	e3590000 	cmp	r9, #0                                        
    7b64:	11a03004 	movne	r3, r4                                      
    7b68:	e1a0200a 	mov	r2, sl                                        
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
    7b6c:	11a06007 	movne	r6, r7                                      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
    7b70:	13a04000 	movne	r4, #0                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
    7b74:	01a06007 	moveq	r6, r7                                      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
    7b78:	01a04009 	moveq	r4, r9                                      
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL ) {            
    7b7c:	1a000003 	bne	7b90 <_Objects_Extend_information+0x70>       
    7b80:	ea000007 	b	7ba4 <_Objects_Extend_information+0x84>         <== NOT EXECUTED
    7b84:	e5b39004 	ldr	r9, [r3, #4]!                                 
    7b88:	e3590000 	cmp	r9, #0                                        
    7b8c:	0a000004 	beq	7ba4 <_Objects_Extend_information+0x84>       
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
    7b90:	e2844001 	add	r4, r4, #1                                    
    7b94:	e15b0004 	cmp	fp, r4                                        
      if ( information->object_blocks[ block ] == NULL ) {            
        do_extend = false;                                            
        break;                                                        
      } else                                                          
        index_base += information->allocation_size;                   
    7b98:	e086600a 	add	r6, r6, sl                                    
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
    7b9c:	8afffff8 	bhi	7b84 <_Objects_Extend_information+0x64>       
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
    7ba0:	e3a09001 	mov	r9, #1                                        
      } else                                                          
        index_base += information->allocation_size;                   
    }                                                                 
  }                                                                   
                                                                      
  maximum = (uint32_t) information->maximum + information->allocation_size;
    7ba4:	e0888002 	add	r8, r8, r2                                    
  /*                                                                  
   *  We need to limit the number of objects to the maximum number    
   *  representable in the index portion of the object Id.  In the    
   *  case of 16-bit Ids, this is only 256 object instances.          
   */                                                                 
  if ( maximum > OBJECTS_ID_FINAL_INDEX ) {                           
    7ba8:	e3580801 	cmp	r8, #65536	; 0x10000                          
    7bac:	2a000063 	bcs	7d40 <_Objects_Extend_information+0x220>      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
  if ( information->auto_extend ) {                                   
    7bb0:	e5d53012 	ldrb	r3, [r5, #18]                                
                                                                      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
    7bb4:	e5950018 	ldr	r0, [r5, #24]                                 
  if ( information->auto_extend ) {                                   
    7bb8:	e3530000 	cmp	r3, #0                                        
                                                                      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
    7bbc:	e0000092 	mul	r0, r2, r0                                    
  if ( information->auto_extend ) {                                   
    7bc0:	1a000060 	bne	7d48 <_Objects_Extend_information+0x228>      
    new_object_block = _Workspace_Allocate( block_size );             
    if ( !new_object_block )                                          
      return;                                                         
  } else {                                                            
    new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
    7bc4:	eb0008b3 	bl	9e98 <_Workspace_Allocate_or_fatal_error>      
    7bc8:	e58d0004 	str	r0, [sp, #4]                                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Do we need to grow the tables?                                  
   */                                                                 
  if ( do_extend ) {                                                  
    7bcc:	e3590000 	cmp	r9, #0                                        
    7bd0:	0a000039 	beq	7cbc <_Objects_Extend_information+0x19c>      
     */                                                               
                                                                      
    /*                                                                
     *  Up the block count and maximum                                
     */                                                               
    block_count++;                                                    
    7bd4:	e28b9001 	add	r9, fp, #1                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
    7bd8:	e0890089 	add	r0, r9, r9, lsl #1                            
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
    7bdc:	e5d53012 	ldrb	r3, [r5, #18]                                
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    7be0:	e0880000 	add	r0, r8, r0                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
    7be4:	e0800007 	add	r0, r0, r7                                    
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
    7be8:	e3530000 	cmp	r3, #0                                        
    block_count++;                                                    
                                                                      
    /*                                                                
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
    7bec:	e1a00100 	lsl	r0, r0, #2                                    
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
    7bf0:	0a000059 	beq	7d5c <_Objects_Extend_information+0x23c>      
      object_blocks = _Workspace_Allocate( block_size );              
    7bf4:	eb00089d 	bl	9e70 <_Workspace_Allocate>                     
      if ( !object_blocks ) {                                         
    7bf8:	e250a000 	subs	sl, r0, #0                                   
    7bfc:	0a000075 	beq	7dd8 <_Objects_Extend_information+0x2b8>      
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
    7c00:	e1d531b0 	ldrh	r3, [r5, #16]                                
    7c04:	e1570003 	cmp	r7, r3                                        
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (                    
  const void *base,                                                   
  uintptr_t   offset                                                  
)                                                                     
{                                                                     
  return (void *)((uintptr_t)base + offset);                          
    7c08:	e08a3109 	add	r3, sl, r9, lsl #2                            
    7c0c:	e08a9189 	add	r9, sl, r9, lsl #3                            
    7c10:	3a000058 	bcc	7d78 <_Objects_Extend_information+0x258>      
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
    7c14:	e3570000 	cmp	r7, #0                                        
    7c18:	13a02000 	movne	r2, #0                                      
    7c1c:	11a01009 	movne	r1, r9                                      
        local_table[ index ] = NULL;                                  
    7c20:	11a00002 	movne	r0, r2                                      
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
    7c24:	0a000003 	beq	7c38 <_Objects_Extend_information+0x118>      
    7c28:	e2822001 	add	r2, r2, #1                                    
    7c2c:	e1570002 	cmp	r7, r2                                        
        local_table[ index ] = NULL;                                  
    7c30:	e4810004 	str	r0, [r1], #4                                  
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
    7c34:	8afffffb 	bhi	7c28 <_Objects_Extend_information+0x108>      
    7c38:	e1a0b10b 	lsl	fp, fp, #2                                    
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
    7c3c:	e1d501b4 	ldrh	r0, [r5, #20]                                
    7c40:	e0860000 	add	r0, r6, r0                                    
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    7c44:	e3a0c000 	mov	ip, #0                                        
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
    7c48:	e1560000 	cmp	r6, r0                                        
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    7c4c:	e78ac00b 	str	ip, [sl, fp]                                  
    inactive_per_block[block_count] = 0;                              
    7c50:	e783c00b 	str	ip, [r3, fp]                                  
                                                                      
    for ( index=index_base ;                                          
    7c54:	2a000005 	bcs	7c70 <_Objects_Extend_information+0x150>      
    7c58:	e0891106 	add	r1, r9, r6, lsl #2                            
 *    information     - object information table                      
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
    7c5c:	e1a02006 	mov	r2, r6                                        
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
    7c60:	e2822001 	add	r2, r2, #1                                    
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
    7c64:	e1500002 	cmp	r0, r2                                        
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
    7c68:	e481c004 	str	ip, [r1], #4                                  
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
    7c6c:	8afffffb 	bhi	7c60 <_Objects_Extend_information+0x140>      
    7c70:	e10f2000 	mrs	r2, CPSR                                      
    7c74:	e3821080 	orr	r1, r2, #128	; 0x80                           
    7c78:	e129f001 	msr	CPSR_fc, r1                                   
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
    7c7c:	e5951000 	ldr	r1, [r5]                                      
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
    7c80:	e1d500b4 	ldrh	r0, [r5, #4]                                 
    7c84:	e1a01c01 	lsl	r1, r1, #24                                   
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
    7c88:	e1a08808 	lsl	r8, r8, #16                                   
    7c8c:	e3811801 	orr	r1, r1, #65536	; 0x10000                      
    7c90:	e1a08828 	lsr	r8, r8, #16                                   
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
    7c94:	e1811d80 	orr	r1, r1, r0, lsl #27                           
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
    7c98:	e1811008 	orr	r1, r1, r8                                    
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
    7c9c:	e5950034 	ldr	r0, [r5, #52]	; 0x34                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    7ca0:	e5853030 	str	r3, [r5, #48]	; 0x30                          
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    7ca4:	e585a034 	str	sl, [r5, #52]	; 0x34                          
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    7ca8:	e585901c 	str	r9, [r5, #28]                                 
    information->maximum = (Objects_Maximum) maximum;                 
    7cac:	e1c581b0 	strh	r8, [r5, #16]                                
    information->maximum_id = _Objects_Build_id(                      
    7cb0:	e585100c 	str	r1, [r5, #12]                                 
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    7cb4:	e129f002 	msr	CPSR_fc, r2                                   
        information->maximum                                          
      );                                                              
                                                                      
    _ISR_Enable( level );                                             
                                                                      
    _Workspace_Free( old_tables );                                    
    7cb8:	eb000872 	bl	9e88 <_Workspace_Free>                         
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
    7cbc:	e5953034 	ldr	r3, [r5, #52]	; 0x34                          
    7cc0:	e59d2004 	ldr	r2, [sp, #4]                                  
    7cc4:	e7832104 	str	r2, [r3, r4, lsl #2]                          
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
    7cc8:	e5953034 	ldr	r3, [r5, #52]	; 0x34                          
    7ccc:	e28d0008 	add	r0, sp, #8                                    
    7cd0:	e7931104 	ldr	r1, [r3, r4, lsl #2]                          
    7cd4:	e1d521b4 	ldrh	r2, [r5, #20]                                
    7cd8:	e5953018 	ldr	r3, [r5, #24]                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
    7cdc:	e1a04104 	lsl	r4, r4, #2                                    
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
    7ce0:	ebfffcf2 	bl	70b0 <_Chain_Initialize>                       
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
    7ce4:	e2857020 	add	r7, r5, #32                                   
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
    7ce8:	ea000008 	b	7d10 <_Objects_Extend_information+0x1f0>        
    7cec:	e5952000 	ldr	r2, [r5]                                      
                                                                      
    the_object->id = _Objects_Build_id(                               
    7cf0:	e1d5c0b4 	ldrh	ip, [r5, #4]                                 
    7cf4:	e1a02c02 	lsl	r2, r2, #24                                   
    7cf8:	e3822801 	orr	r2, r2, #65536	; 0x10000                      
         (( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |    
    7cfc:	e1822d8c 	orr	r2, r2, ip, lsl #27                           
  uint32_t         the_class,                                         
  uint32_t         node,                                              
  uint32_t         index                                              
)                                                                     
{                                                                     
  return (( (Objects_Id) the_api )   << OBJECTS_API_START_BIT)   |    
    7d00:	e1822006 	orr	r2, r2, r6                                    
    7d04:	e5832008 	str	r2, [r3, #8]                                  
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
    7d08:	ebfffcd0 	bl	7050 <_Chain_Append>                           
                                                                      
    index++;                                                          
    7d0c:	e2866001 	add	r6, r6, #1                                    
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
    7d10:	e28d0008 	add	r0, sp, #8                                    
    7d14:	ebfffcd8 	bl	707c <_Chain_Get>                              
    7d18:	e2503000 	subs	r3, r0, #0                                   
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
    7d1c:	e1a01003 	mov	r1, r3                                        
    7d20:	e1a00007 	mov	r0, r7                                        
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
    7d24:	1afffff0 	bne	7cec <_Objects_Extend_information+0x1cc>      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
    7d28:	e1d522bc 	ldrh	r2, [r5, #44]	; 0x2c                         
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
    7d2c:	e1d531b4 	ldrh	r3, [r5, #20]                                
    7d30:	e5951030 	ldr	r1, [r5, #48]	; 0x30                          
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
    7d34:	e0832002 	add	r2, r3, r2                                    
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
    7d38:	e7813004 	str	r3, [r1, r4]                                  
  information->inactive =                                             
    7d3c:	e1c522bc 	strh	r2, [r5, #44]	; 0x2c                         
    (Objects_Maximum)(information->inactive + information->allocation_size);
}                                                                     
    7d40:	e28dd014 	add	sp, sp, #20                                   
    7d44:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
  if ( information->auto_extend ) {                                   
    new_object_block = _Workspace_Allocate( block_size );             
    7d48:	eb000848 	bl	9e70 <_Workspace_Allocate>                     
    if ( !new_object_block )                                          
    7d4c:	e3500000 	cmp	r0, #0                                        
    7d50:	e58d0004 	str	r0, [sp, #4]                                  
    7d54:	1affff9c 	bne	7bcc <_Objects_Extend_information+0xac>       
    7d58:	eafffff8 	b	7d40 <_Objects_Extend_information+0x220>        
      if ( !object_blocks ) {                                         
        _Workspace_Free( new_object_block );                          
        return;                                                       
      }                                                               
    } else {                                                          
      object_blocks = _Workspace_Allocate_or_fatal_error( block_size );
    7d5c:	eb00084d 	bl	9e98 <_Workspace_Allocate_or_fatal_error>      
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
    7d60:	e1d531b0 	ldrh	r3, [r5, #16]                                
      if ( !object_blocks ) {                                         
        _Workspace_Free( new_object_block );                          
        return;                                                       
      }                                                               
    } else {                                                          
      object_blocks = _Workspace_Allocate_or_fatal_error( block_size );
    7d64:	e1a0a000 	mov	sl, r0                                        
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
    7d68:	e1570003 	cmp	r7, r3                                        
    7d6c:	e08a3109 	add	r3, sl, r9, lsl #2                            
    7d70:	e08a9189 	add	r9, sl, r9, lsl #3                            
    7d74:	2affffa6 	bcs	7c14 <_Objects_Extend_information+0xf4>       
      /*                                                              
       *  Copy each section of the table over. This has to be performed as
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
    7d78:	e1a0b10b 	lsl	fp, fp, #2                                    
    7d7c:	e5951034 	ldr	r1, [r5, #52]	; 0x34                          
    7d80:	e1a0200b 	mov	r2, fp                                        
    7d84:	e1a0000a 	mov	r0, sl                                        
    7d88:	e58d3000 	str	r3, [sp]                                      
    7d8c:	eb0018cf 	bl	e0d0 <memcpy>                                  
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
    7d90:	e59d3000 	ldr	r3, [sp]                                      
    7d94:	e5951030 	ldr	r1, [r5, #48]	; 0x30                          
    7d98:	e1a00003 	mov	r0, r3                                        
    7d9c:	e1a0200b 	mov	r2, fp                                        
    7da0:	eb0018ca 	bl	e0d0 <memcpy>                                  
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
              information->local_table,                               
              (information->maximum + minimum_index) * sizeof(Objects_Control *) );
    7da4:	e1d521b0 	ldrh	r2, [r5, #16]                                
    7da8:	e0872002 	add	r2, r7, r2                                    
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
    7dac:	e1a00009 	mov	r0, r9                                        
    7db0:	e595101c 	ldr	r1, [r5, #28]                                 
    7db4:	e1a02102 	lsl	r2, r2, #2                                    
    7db8:	eb0018c4 	bl	e0d0 <memcpy>                                  
    7dbc:	e59d3000 	ldr	r3, [sp]                                      
    7dc0:	eaffff9d 	b	7c3c <_Objects_Extend_information+0x11c>        
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    7dc4:	e1d021b4 	ldrh	r2, [r0, #20]                                
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
    7dc8:	e1a06007 	mov	r6, r7                                        
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
    7dcc:	e3a09001 	mov	r9, #1                                        
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
    7dd0:	e1a0b004 	mov	fp, r4                                        
    7dd4:	eaffff72 	b	7ba4 <_Objects_Extend_information+0x84>         
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    if ( information->auto_extend ) {                                 
      object_blocks = _Workspace_Allocate( block_size );              
      if ( !object_blocks ) {                                         
        _Workspace_Free( new_object_block );                          
    7dd8:	e59d0004 	ldr	r0, [sp, #4]                                  
    7ddc:	eb000829 	bl	9e88 <_Workspace_Free>                         
        return;                                                       
    7de0:	eaffffd6 	b	7d40 <_Objects_Extend_information+0x220>        
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
    7de4:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
  minimum_index = _Objects_Get_index( information->minimum_id );      
    7de8:	e1a06007 	mov	r6, r7                                        <== NOT EXECUTED
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. If we do NOT need to allocate or
   *  extend the block table, then we will change do_extend.          
   */                                                                 
  do_extend     = true;                                               
    7dec:	e3a09001 	mov	r9, #1                                        <== NOT EXECUTED
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
    7df0:	e1a0400b 	mov	r4, fp                                        <== NOT EXECUTED
    7df4:	eaffff6a 	b	7ba4 <_Objects_Extend_information+0x84>         <== NOT EXECUTED
                                                                      

0000812c <_Objects_Shrink_information>: #include <rtems/score/isr.h> void _Objects_Shrink_information( Objects_Information *information ) {
    812c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
                                                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
    8130:	e1d040b8 	ldrh	r4, [r0, #8]                                 
  block_count = (information->maximum - index_base) /                 
    8134:	e1d051b4 	ldrh	r5, [r0, #20]                                
#include <rtems/score/isr.h>                                          
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
    8138:	e1a06000 	mov	r6, r0                                        
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
    813c:	e1d001b0 	ldrh	r0, [r0, #16]                                
    8140:	e1a01005 	mov	r1, r5                                        
    8144:	e0640000 	rsb	r0, r4, r0                                    
    8148:	eb003997 	bl	167ac <__aeabi_uidiv>                          
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    814c:	e3500000 	cmp	r0, #0                                        
    8150:	08bd80f0 	popeq	{r4, r5, r6, r7, pc}                        
    if ( information->inactive_per_block[ block ] ==                  
    8154:	e5962030 	ldr	r2, [r6, #48]	; 0x30                          
    8158:	e5923000 	ldr	r3, [r2]                                      
    815c:	e1550003 	cmp	r5, r3                                        
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    8160:	13a03000 	movne	r3, #0                                      
    if ( information->inactive_per_block[ block ] ==                  
    8164:	1a000005 	bne	8180 <_Objects_Shrink_information+0x54>       
    8168:	ea000008 	b	8190 <_Objects_Shrink_information+0x64>         <== NOT EXECUTED
    816c:	e5b21004 	ldr	r1, [r2, #4]!                                 
    8170:	e1550001 	cmp	r5, r1                                        
      information->inactive -= information->allocation_size;          
                                                                      
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
    8174:	e0844005 	add	r4, r4, r5                                    
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    if ( information->inactive_per_block[ block ] ==                  
    8178:	e1a07103 	lsl	r7, r3, #2                                    
    817c:	0a000004 	beq	8194 <_Objects_Shrink_information+0x68>       
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    8180:	e2833001 	add	r3, r3, #1                                    
    8184:	e1530000 	cmp	r3, r0                                        
    8188:	1afffff7 	bne	816c <_Objects_Shrink_information+0x40>       
    818c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
    if ( information->inactive_per_block[ block ] ==                  
    8190:	e3a07000 	mov	r7, #0                                        <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
    8194:	e5960020 	ldr	r0, [r6, #32]                                 
    8198:	ea000002 	b	81a8 <_Objects_Shrink_information+0x7c>         
         if ((index >= index_base) &&                                 
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
         }                                                            
       }                                                              
       while ( the_object );                                          
    819c:	e3550000 	cmp	r5, #0                                        
    81a0:	0a00000b 	beq	81d4 <_Objects_Shrink_information+0xa8>       
         index = _Objects_Get_index( the_object->id );                
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
    81a4:	e1a00005 	mov	r0, r5                                        
       *  Assume the Inactive chain is never empty at this point      
       */                                                             
      the_object = (Objects_Control *) _Chain_First( &information->Inactive );
                                                                      
      do {                                                            
         index = _Objects_Get_index( the_object->id );                
    81a8:	e1d030b8 	ldrh	r3, [r0, #8]                                 
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
         if ((index >= index_base) &&                                 
    81ac:	e1530004 	cmp	r3, r4                                        
         index = _Objects_Get_index( the_object->id );                
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
    81b0:	e5905000 	ldr	r5, [r0]                                      
         if ((index >= index_base) &&                                 
    81b4:	3afffff8 	bcc	819c <_Objects_Shrink_information+0x70>       
             (index < (index_base + information->allocation_size))) { 
    81b8:	e1d621b4 	ldrh	r2, [r6, #20]                                
    81bc:	e0842002 	add	r2, r4, r2                                    
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
         if ((index >= index_base) &&                                 
    81c0:	e1530002 	cmp	r3, r2                                        
    81c4:	2afffff4 	bcs	819c <_Objects_Shrink_information+0x70>       
             (index < (index_base + information->allocation_size))) { 
           _Chain_Extract( &extract_me->Node );                       
    81c8:	eb000de3 	bl	b95c <_Chain_Extract>                          
         }                                                            
       }                                                              
       while ( the_object );                                          
    81cc:	e3550000 	cmp	r5, #0                                        
    81d0:	1afffff3 	bne	81a4 <_Objects_Shrink_information+0x78>       
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
    81d4:	e5963034 	ldr	r3, [r6, #52]	; 0x34                          
    81d8:	e7930007 	ldr	r0, [r3, r7]                                  
    81dc:	eb000729 	bl	9e88 <_Workspace_Free>                         
      information->object_blocks[ block ] = NULL;                     
    81e0:	e5963034 	ldr	r3, [r6, #52]	; 0x34                          
    81e4:	e7835007 	str	r5, [r3, r7]                                  
      information->inactive_per_block[ block ] = 0;                   
                                                                      
      information->inactive -= information->allocation_size;          
    81e8:	e1d612bc 	ldrh	r1, [r6, #44]	; 0x2c                         
    81ec:	e1d631b4 	ldrh	r3, [r6, #20]                                
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
    81f0:	e5962030 	ldr	r2, [r6, #48]	; 0x30                          
                                                                      
      information->inactive -= information->allocation_size;          
    81f4:	e0633001 	rsb	r3, r3, r1                                    
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
    81f8:	e7825007 	str	r5, [r2, r7]                                  
                                                                      
      information->inactive -= information->allocation_size;          
    81fc:	e1c632bc 	strh	r3, [r6, #44]	; 0x2c                         
                                                                      
      return;                                                         
    8200:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      

00008ef8 <_RBTree_Extract_validate_unprotected>: ) { RBTree_Node *parent, *sibling; RBTree_Direction dir; parent = the_node->parent;
    8ef8:	e5903000 	ldr	r3, [r0]                                      
  if(!parent->parent) return;                                         
    8efc:	e5932000 	ldr	r2, [r3]                                      
    8f00:	e3520000 	cmp	r2, #0                                        
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
    8f04:	e92d07f0 	push	{r4, r5, r6, r7, r8, r9, sl}                 
  RBTree_Node *parent, *sibling;                                      
  RBTree_Direction dir;                                               
                                                                      
  parent = the_node->parent;                                          
  if(!parent->parent) return;                                         
    8f08:	0a00002f 	beq	8fcc <_RBTree_Extract_validate_unprotected+0xd4>
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    8f0c:	e5932004 	ldr	r2, [r3, #4]                                  
    8f10:	e1500002 	cmp	r0, r2                                        
    return the_node->parent->child[RBT_RIGHT];                        
    8f14:	05932008 	ldreq	r2, [r3, #8]                                
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
    8f18:	e3a06000 	mov	r6, #0                                        
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    8f1c:	e3a05001 	mov	r5, #1                                        
    8f20:	ea000022 	b	8fb0 <_RBTree_Extract_validate_unprotected+0xb8>
  if(!parent->parent) return;                                         
                                                                      
  sibling = _RBTree_Sibling(the_node);                                
                                                                      
  /* continue to correct tree as long as the_node is black and not the root */
  while (!_RBTree_Is_red(the_node) && parent->parent) {               
    8f24:	e5931000 	ldr	r1, [r3]                                      
    8f28:	e3510000 	cmp	r1, #0                                        
    8f2c:	0a000022 	beq	8fbc <_RBTree_Extract_validate_unprotected+0xc4>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
    8f30:	e3520000 	cmp	r2, #0                                        
    8f34:	0a000002 	beq	8f44 <_RBTree_Extract_validate_unprotected+0x4c>
    8f38:	e592c00c 	ldr	ip, [r2, #12]                                 
    8f3c:	e35c0001 	cmp	ip, #1                                        
    8f40:	0a000023 	beq	8fd4 <_RBTree_Extract_validate_unprotected+0xdc>
      _RBTree_Rotate(parent, dir);                                    
      sibling = parent->child[_RBTree_Opposite_direction(dir)];       
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
    8f44:	e5921008 	ldr	r1, [r2, #8]                                  
    8f48:	e3510000 	cmp	r1, #0                                        
    8f4c:	0a000002 	beq	8f5c <_RBTree_Extract_validate_unprotected+0x64>
    8f50:	e591c00c 	ldr	ip, [r1, #12]                                 
    8f54:	e35c0001 	cmp	ip, #1                                        
    8f58:	0a000042 	beq	9068 <_RBTree_Extract_validate_unprotected+0x170>
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
    8f5c:	e592c004 	ldr	ip, [r2, #4]                                  
    8f60:	e35c0000 	cmp	ip, #0                                        
    8f64:	0a000002 	beq	8f74 <_RBTree_Extract_validate_unprotected+0x7c>
    8f68:	e59cc00c 	ldr	ip, [ip, #12]                                 
    8f6c:	e35c0001 	cmp	ip, #1                                        
    8f70:	0a00003c 	beq	9068 <_RBTree_Extract_validate_unprotected+0x170>
        sibling->color = RBT_RED;                                     
    8f74:	e582500c 	str	r5, [r2, #12]                                 
    8f78:	e593200c 	ldr	r2, [r3, #12]                                 
    8f7c:	e3520001 	cmp	r2, #1                                        
    8f80:	0a000033 	beq	9054 <_RBTree_Extract_validate_unprotected+0x15c>
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
          break;                                                      
        }                                                             
        the_node = parent; /* done if parent is red */                
        parent = the_node->parent;                                    
    8f84:	e5931000 	ldr	r1, [r3]                                      
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
    8f88:	e3510000 	cmp	r1, #0                                        
    8f8c:	0a000033 	beq	9060 <_RBTree_Extract_validate_unprotected+0x168>
  if(!(the_node->parent->parent)) return NULL;                        
    8f90:	e5912000 	ldr	r2, [r1]                                      
    8f94:	e3520000 	cmp	r2, #0                                        
    8f98:	0a000002 	beq	8fa8 <_RBTree_Extract_validate_unprotected+0xb0>
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    8f9c:	e5912004 	ldr	r2, [r1, #4]                                  
    8fa0:	e1530002 	cmp	r3, r2                                        
    return the_node->parent->child[RBT_RIGHT];                        
    8fa4:	05912008 	ldreq	r2, [r1, #8]                                
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
    8fa8:	e1a00003 	mov	r0, r3                                        
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
    8fac:	e1a03001 	mov	r3, r1                                        
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
    8fb0:	e590100c 	ldr	r1, [r0, #12]                                 
    8fb4:	e3510001 	cmp	r1, #1                                        
    8fb8:	1affffd9 	bne	8f24 <_RBTree_Extract_validate_unprotected+0x2c>
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
    8fbc:	e5903000 	ldr	r3, [r0]                                      
    8fc0:	e5933000 	ldr	r3, [r3]                                      
    8fc4:	e3530000 	cmp	r3, #0                                        
    8fc8:	0580300c 	streq	r3, [r0, #12]                               
}                                                                     
    8fcc:	e8bd07f0 	pop	{r4, r5, r6, r7, r8, r9, sl}                  
    8fd0:	e12fff1e 	bx	lr                                             
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
    8fd4:	e5934004 	ldr	r4, [r3, #4]                                  
    8fd8:	e054a000 	subs	sl, r4, r0                                   
    8fdc:	13a0a001 	movne	sl, #1                                      
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
    8fe0:	e22a7001 	eor	r7, sl, #1                                    
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
    8fe4:	e2878001 	add	r8, r7, #1                                    
    8fe8:	e7939108 	ldr	r9, [r3, r8, lsl #2]                          
    8fec:	e3590000 	cmp	r9, #0                                        
     * then rotate parent left, making the sibling be the_node's grandparent.
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
    8ff0:	e583c00c 	str	ip, [r3, #12]                                 
      sibling->color = RBT_BLACK;                                     
    8ff4:	e582600c 	str	r6, [r2, #12]                                 
    8ff8:	01a02009 	moveq	r2, r9                                      
    8ffc:	0affffd0 	beq	8f44 <_RBTree_Extract_validate_unprotected+0x4c>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    9000:	e3570000 	cmp	r7, #0                                        
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
    9004:	15934008 	ldrne	r4, [r3, #8]                                
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
    9008:	e28a2001 	add	r2, sl, #1                                    
    900c:	e794a102 	ldr	sl, [r4, r2, lsl #2]                          
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    9010:	01a0c007 	moveq	ip, r7                                      
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
    9014:	e28cc001 	add	ip, ip, #1                                    
    9018:	e783a10c 	str	sl, [r3, ip, lsl #2]                          
                                                                      
  if (c->child[dir])                                                  
    901c:	e794c102 	ldr	ip, [r4, r2, lsl #2]                          
    9020:	e35c0000 	cmp	ip, #0                                        
    c->child[dir]->parent = the_node;                                 
    9024:	158c3000 	strne	r3, [ip]                                    
                                                                      
  c->child[dir] = the_node;                                           
    9028:	e7843102 	str	r3, [r4, r2, lsl #2]                          
    902c:	15931000 	ldrne	r1, [r3]                                    
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
    9030:	e5912004 	ldr	r2, [r1, #4]                                  
    9034:	e1530002 	cmp	r3, r2                                        
    9038:	13a02008 	movne	r2, #8                                      
    903c:	03a02004 	moveq	r2, #4                                      
    9040:	e7824001 	str	r4, [r2, r1]                                  
                                                                      
  c->parent = the_node->parent;                                       
    9044:	e5841000 	str	r1, [r4]                                      
  the_node->parent = c;                                               
    9048:	e7932108 	ldr	r2, [r3, r8, lsl #2]                          
    904c:	e5834000 	str	r4, [r3]                                      
    9050:	eaffffbb 	b	8f44 <_RBTree_Extract_validate_unprotected+0x4c>
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
        sibling->color = RBT_RED;                                     
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
    9054:	e3a02000 	mov	r2, #0                                        
    9058:	e583200c 	str	r2, [r3, #12]                                 
          break;                                                      
    905c:	eaffffd6 	b	8fbc <_RBTree_Extract_validate_unprotected+0xc4>
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling(                    
  const RBTree_Node *the_node                                         
)                                                                     
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
    9060:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
    9064:	eaffffcf 	b	8fa8 <_RBTree_Extract_validate_unprotected+0xb0><== NOT EXECUTED
       * cases, either the_node is to the left or the right of the parent.
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
    9068:	e5936004 	ldr	r6, [r3, #4]                                  
    906c:	e0566000 	subs	r6, r6, r0                                   
    9070:	13a06001 	movne	r6, #1                                      
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
    9074:	e2265001 	eor	r5, r6, #1                                    
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
    9078:	e285c001 	add	ip, r5, #1                                    
    907c:	e792410c 	ldr	r4, [r2, ip, lsl #2]                          
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
    9080:	e3540000 	cmp	r4, #0                                        
    9084:	0a000003 	beq	9098 <_RBTree_Extract_validate_unprotected+0x1a0>
    9088:	e594700c 	ldr	r7, [r4, #12]                                 
    908c:	e3570001 	cmp	r7, #1                                        
    9090:	0793710c 	ldreq	r7, [r3, ip, lsl #2]                        
    9094:	0a00001f 	beq	9118 <_RBTree_Extract_validate_unprotected+0x220>
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
static void _RBTree_Extract_validate_unprotected(                     
    9098:	e2254001 	eor	r4, r5, #1                                    
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
    909c:	e2848001 	add	r8, r4, #1                                    
    90a0:	e792a108 	ldr	sl, [r2, r8, lsl #2]                          
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
    90a4:	e2867001 	add	r7, r6, #1                                    
    90a8:	e7928107 	ldr	r8, [r2, r7, lsl #2]                          
    90ac:	e35a0000 	cmp	sl, #0                                        
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
    90b0:	e3a07001 	mov	r7, #1                                        
        sibling->child[dir]->color = RBT_BLACK;                       
    90b4:	e3a0a000 	mov	sl, #0                                        
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[_RBTree_Opposite_direction(dir)])) {
        sibling->color = RBT_RED;                                     
    90b8:	e582700c 	str	r7, [r2, #12]                                 
        sibling->child[dir]->color = RBT_BLACK;                       
    90bc:	e588a00c 	str	sl, [r8, #12]                                 
    90c0:	0a000011 	beq	910c <_RBTree_Extract_validate_unprotected+0x214>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    90c4:	e3540000 	cmp	r4, #0                                        
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
    90c8:	05921004 	ldreq	r1, [r2, #4]                                
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    90cc:	11a04007 	movne	r4, r7                                      
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
    90d0:	e791810c 	ldr	r8, [r1, ip, lsl #2]                          
    90d4:	e2844001 	add	r4, r4, #1                                    
    90d8:	e7828104 	str	r8, [r2, r4, lsl #2]                          
                                                                      
  if (c->child[dir])                                                  
    90dc:	e791410c 	ldr	r4, [r1, ip, lsl #2]                          
    90e0:	e3540000 	cmp	r4, #0                                        
    c->child[dir]->parent = the_node;                                 
    90e4:	15842000 	strne	r2, [r4]                                    
                                                                      
  c->child[dir] = the_node;                                           
    90e8:	e781210c 	str	r2, [r1, ip, lsl #2]                          
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
    90ec:	e5924000 	ldr	r4, [r2]                                      
    90f0:	e5947004 	ldr	r7, [r4, #4]                                  
    90f4:	e1520007 	cmp	r2, r7                                        
    90f8:	13a07008 	movne	r7, #8                                      
    90fc:	03a07004 	moveq	r7, #4                                      
                                                                      
  c->parent = the_node->parent;                                       
    9100:	e5814000 	str	r4, [r1]                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
    9104:	e7871004 	str	r1, [r7, r4]                                  
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
    9108:	e5821000 	str	r1, [r2]                                      
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
    910c:	e793210c 	ldr	r2, [r3, ip, lsl #2]                          
    9110:	e792410c 	ldr	r4, [r2, ip, lsl #2]                          
    9114:	e1a07002 	mov	r7, r2                                        
      }                                                               
      sibling->color = parent->color;                                 
    9118:	e593c00c 	ldr	ip, [r3, #12]                                 
      parent->color = RBT_BLACK;                                      
    911c:	e3a01000 	mov	r1, #0                                        
    RBTree_Direction dir                                              
    )                                                                 
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
    9120:	e1570001 	cmp	r7, r1                                        
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, _RBTree_Opposite_direction(dir));     
        sibling = parent->child[_RBTree_Opposite_direction(dir)];     
      }                                                               
      sibling->color = parent->color;                                 
    9124:	e582c00c 	str	ip, [r2, #12]                                 
      parent->color = RBT_BLACK;                                      
    9128:	e583100c 	str	r1, [r3, #12]                                 
      sibling->child[_RBTree_Opposite_direction(dir)]->color = RBT_BLACK;
    912c:	e584100c 	str	r1, [r4, #12]                                 
    9130:	0affffa1 	beq	8fbc <_RBTree_Extract_validate_unprotected+0xc4>
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    9134:	e1550001 	cmp	r5, r1                                        
{                                                                     
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
    9138:	05932004 	ldreq	r2, [r3, #4]                                
    913c:	15932008 	ldrne	r2, [r3, #8]                                
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
    9140:	e2866001 	add	r6, r6, #1                                    
    9144:	e7921106 	ldr	r1, [r2, r6, lsl #2]                          
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Direction _RBTree_Opposite_direction(     
  RBTree_Direction the_dir                                            
)                                                                     
{                                                                     
  return (RBTree_Direction) !((int) the_dir);                         
    9148:	13a05001 	movne	r5, #1                                      
  RBTree_Node *c;                                                     
  if (the_node == NULL) return;                                       
  if (the_node->child[_RBTree_Opposite_direction(dir)] == NULL) return;
                                                                      
  c = the_node->child[_RBTree_Opposite_direction(dir)];               
  the_node->child[_RBTree_Opposite_direction(dir)] = c->child[dir];   
    914c:	e2855001 	add	r5, r5, #1                                    
    9150:	e7831105 	str	r1, [r3, r5, lsl #2]                          
                                                                      
  if (c->child[dir])                                                  
    9154:	e7921106 	ldr	r1, [r2, r6, lsl #2]                          
    9158:	e3510000 	cmp	r1, #0                                        
    c->child[dir]->parent = the_node;                                 
    915c:	15813000 	strne	r3, [r1]                                    
                                                                      
  c->child[dir] = the_node;                                           
    9160:	e7823106 	str	r3, [r2, r6, lsl #2]                          
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
    9164:	e5931000 	ldr	r1, [r3]                                      
    9168:	e591c004 	ldr	ip, [r1, #4]                                  
    916c:	e153000c 	cmp	r3, ip                                        
    9170:	13a0c008 	movne	ip, #8                                      
    9174:	03a0c004 	moveq	ip, #4                                      
                                                                      
  c->parent = the_node->parent;                                       
    9178:	e5821000 	str	r1, [r2]                                      
  if (c->child[dir])                                                  
    c->child[dir]->parent = the_node;                                 
                                                                      
  c->child[dir] = the_node;                                           
                                                                      
  the_node->parent->child[the_node != the_node->parent->child[0]] = c;
    917c:	e78c2001 	str	r2, [ip, r1]                                  
                                                                      
  c->parent = the_node->parent;                                       
  the_node->parent = c;                                               
    9180:	e5832000 	str	r2, [r3]                                      
    9184:	eaffff8c 	b	8fbc <_RBTree_Extract_validate_unprotected+0xc4>
                                                                      

00009bd8 <_Scheduler_CBS_Cleanup>: #include <rtems/config.h> #include <rtems/score/scheduler.h> #include <rtems/score/schedulercbs.h> int _Scheduler_CBS_Cleanup (void) {
    9bd8:	e92d4070 	push	{r4, r5, r6, lr}                             
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    9bdc:	e59f5054 	ldr	r5, [pc, #84]	; 9c38 <_Scheduler_CBS_Cleanup+0x60>
    9be0:	e5953000 	ldr	r3, [r5]                                      
    9be4:	e3530000 	cmp	r3, #0                                        
    9be8:	0a00000f 	beq	9c2c <_Scheduler_CBS_Cleanup+0x54>            
    9bec:	e59f6048 	ldr	r6, [pc, #72]	; 9c3c <_Scheduler_CBS_Cleanup+0x64>
    9bf0:	e5960000 	ldr	r0, [r6]                                      
    9bf4:	e3a04000 	mov	r4, #0                                        
    if ( _Scheduler_CBS_Server_list[ i ] )                            
    9bf8:	e7903104 	ldr	r3, [r0, r4, lsl #2]                          
    9bfc:	e3530000 	cmp	r3, #0                                        
    9c00:	0a000002 	beq	9c10 <_Scheduler_CBS_Cleanup+0x38>            
      _Scheduler_CBS_Destroy_server( i );                             
    9c04:	e1a00004 	mov	r0, r4                                        
    9c08:	eb000043 	bl	9d1c <_Scheduler_CBS_Destroy_server>           
    9c0c:	e5960000 	ldr	r0, [r6]                                      
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    9c10:	e5953000 	ldr	r3, [r5]                                      
    9c14:	e2844001 	add	r4, r4, #1                                    
    9c18:	e1530004 	cmp	r3, r4                                        
    9c1c:	8afffff5 	bhi	9bf8 <_Scheduler_CBS_Cleanup+0x20>            
    if ( _Scheduler_CBS_Server_list[ i ] )                            
      _Scheduler_CBS_Destroy_server( i );                             
  }                                                                   
  _Workspace_Free( _Scheduler_CBS_Server_list );                      
    9c20:	eb0007cc 	bl	bb58 <_Workspace_Free>                         
  return SCHEDULER_CBS_OK;                                            
}                                                                     
    9c24:	e3a00000 	mov	r0, #0                                        
    9c28:	e8bd8070 	pop	{r4, r5, r6, pc}                              
                                                                      
int _Scheduler_CBS_Cleanup (void)                                     
{                                                                     
  unsigned int i;                                                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    9c2c:	e59f3008 	ldr	r3, [pc, #8]	; 9c3c <_Scheduler_CBS_Cleanup+0x64><== NOT EXECUTED
    9c30:	e5930000 	ldr	r0, [r3]                                      <== NOT EXECUTED
    9c34:	eafffff9 	b	9c20 <_Scheduler_CBS_Cleanup+0x48>              <== NOT EXECUTED
                                                                      

00009c40 <_Scheduler_CBS_Create_server>: ) { unsigned int i; Scheduler_CBS_Server *the_server; if ( params->budget <= 0 ||
    9c40:	e5903004 	ldr	r3, [r0, #4]                                  
    9c44:	e3530000 	cmp	r3, #0                                        
int _Scheduler_CBS_Create_server (                                    
  Scheduler_CBS_Parameters     *params,                               
  Scheduler_CBS_Budget_overrun  budget_overrun_callback,              
  rtems_id                     *server_id                             
)                                                                     
{                                                                     
    9c48:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    9c4c:	e1a04000 	mov	r4, r0                                        
    9c50:	e1a05001 	mov	r5, r1                                        
    9c54:	e1a07002 	mov	r7, r2                                        
  unsigned int i;                                                     
  Scheduler_CBS_Server *the_server;                                   
                                                                      
  if ( params->budget <= 0 ||                                         
    9c58:	da000029 	ble	9d04 <_Scheduler_CBS_Create_server+0xc4>      
    9c5c:	e5903000 	ldr	r3, [r0]                                      
    9c60:	e3530000 	cmp	r3, #0                                        
    9c64:	da000026 	ble	9d04 <_Scheduler_CBS_Create_server+0xc4>      
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    9c68:	e59f30a4 	ldr	r3, [pc, #164]	; 9d14 <_Scheduler_CBS_Create_server+0xd4>
    9c6c:	e5930000 	ldr	r0, [r3]                                      
    9c70:	e3500000 	cmp	r0, #0                                        
    9c74:	0a00000d 	beq	9cb0 <_Scheduler_CBS_Create_server+0x70>      
    if ( !_Scheduler_CBS_Server_list[i] )                             
    9c78:	e59f8098 	ldr	r8, [pc, #152]	; 9d18 <_Scheduler_CBS_Create_server+0xd8>
    9c7c:	e5986000 	ldr	r6, [r8]                                      
    9c80:	e596a000 	ldr	sl, [r6]                                      
    9c84:	e35a0000 	cmp	sl, #0                                        
    9c88:	11a02006 	movne	r2, r6                                      
    9c8c:	13a03000 	movne	r3, #0                                      
    9c90:	1a000003 	bne	9ca4 <_Scheduler_CBS_Create_server+0x64>      
    9c94:	ea000018 	b	9cfc <_Scheduler_CBS_Create_server+0xbc>        
    9c98:	e5b21004 	ldr	r1, [r2, #4]!                                 
    9c9c:	e3510000 	cmp	r1, #0                                        
    9ca0:	0a000004 	beq	9cb8 <_Scheduler_CBS_Create_server+0x78>      
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    9ca4:	e2833001 	add	r3, r3, #1                                    
    9ca8:	e1530000 	cmp	r3, r0                                        
    9cac:	1afffff9 	bne	9c98 <_Scheduler_CBS_Create_server+0x58>      
    if ( !_Scheduler_CBS_Server_list[i] )                             
      break;                                                          
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
    9cb0:	e3e00019 	mvn	r0, #25                                       
    9cb4:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    9cb8:	e1a0a103 	lsl	sl, r3, #2                                    
  }                                                                   
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
    9cbc:	e5873000 	str	r3, [r7]                                      
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
    9cc0:	e3a00010 	mov	r0, #16                                       
    9cc4:	eb00079d 	bl	bb40 <_Workspace_Allocate>                     
                                                                      
  if ( i == _Scheduler_CBS_Maximum_servers )                          
    return SCHEDULER_CBS_ERROR_FULL;                                  
                                                                      
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    9cc8:	e786000a 	str	r0, [r6, sl]                                  
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
    9ccc:	e5972000 	ldr	r2, [r7]                                      
    9cd0:	e5983000 	ldr	r3, [r8]                                      
    9cd4:	e7933102 	ldr	r3, [r3, r2, lsl #2]                          
  if ( !the_server )                                                  
    9cd8:	e3530000 	cmp	r3, #0                                        
    9cdc:	0a00000a 	beq	9d0c <_Scheduler_CBS_Create_server+0xcc>      
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
    9ce0:	e8940003 	ldm	r4, {r0, r1}                                  
  the_server->task_id = -1;                                           
    9ce4:	e3e02000 	mvn	r2, #0                                        
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
                                                                      
  the_server->parameters = *params;                                   
    9ce8:	e9830003 	stmib	r3, {r0, r1}                                
  the_server->task_id = -1;                                           
    9cec:	e5832000 	str	r2, [r3]                                      
  the_server->cbs_budget_overrun = budget_overrun_callback;           
    9cf0:	e583500c 	str	r5, [r3, #12]                                 
  return SCHEDULER_CBS_OK;                                            
    9cf4:	e3a00000 	mov	r0, #0                                        
    9cf8:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
                                                                      
  for ( i = 0; i<_Scheduler_CBS_Maximum_servers; i++ ) {              
    if ( !_Scheduler_CBS_Server_list[i] )                             
    9cfc:	e1a0300a 	mov	r3, sl                                        
    9d00:	eaffffed 	b	9cbc <_Scheduler_CBS_Create_server+0x7c>        
                                                                      
  if ( params->budget <= 0 ||                                         
       params->deadline <= 0 ||                                       
       params->budget >= SCHEDULER_EDF_PRIO_MSB ||                    
       params->deadline >= SCHEDULER_EDF_PRIO_MSB )                   
    return SCHEDULER_CBS_ERROR_INVALID_PARAMETER;                     
    9d04:	e3e00011 	mvn	r0, #17                                       
    9d08:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  *server_id = i;                                                     
  _Scheduler_CBS_Server_list[*server_id] = (Scheduler_CBS_Server *)   
    _Workspace_Allocate( sizeof(Scheduler_CBS_Server) );              
  the_server = _Scheduler_CBS_Server_list[*server_id];                
  if ( !the_server )                                                  
    return SCHEDULER_CBS_ERROR_NO_MEMORY;                             
    9d0c:	e3e00010 	mvn	r0, #16                                       <== NOT EXECUTED
                                                                      
  the_server->parameters = *params;                                   
  the_server->task_id = -1;                                           
  the_server->cbs_budget_overrun = budget_overrun_callback;           
  return SCHEDULER_CBS_OK;                                            
}                                                                     
    9d10:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
                                                                      

00007274 <_TOD_Validate>: }; bool _TOD_Validate( const rtems_time_of_day *the_tod ) {
    7274:	e92d4010 	push	{r4, lr}                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
    7278:	e2504000 	subs	r4, r0, #0                                   
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
     return false;                                                    
    727c:	01a00004 	moveq	r0, r4                                      
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
    7280:	08bd8010 	popeq	{r4, pc}                                    
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
    7284:	e59f3098 	ldr	r3, [pc, #152]	; 7324 <_TOD_Validate+0xb0>    
    7288:	e59f0098 	ldr	r0, [pc, #152]	; 7328 <_TOD_Validate+0xb4>    
    728c:	e593100c 	ldr	r1, [r3, #12]                                 
    7290:	eb00454b 	bl	187c4 <__aeabi_uidiv>                          
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
    7294:	e5943018 	ldr	r3, [r4, #24]                                 
    7298:	e1500003 	cmp	r0, r3                                        
    729c:	9a00001c 	bls	7314 <_TOD_Validate+0xa0>                     
      (the_tod->ticks  >= ticks_per_second)       ||                  
    72a0:	e5943014 	ldr	r3, [r4, #20]                                 
    72a4:	e353003b 	cmp	r3, #59	; 0x3b                                
    72a8:	8a000019 	bhi	7314 <_TOD_Validate+0xa0>                     
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
    72ac:	e5943010 	ldr	r3, [r4, #16]                                 
    72b0:	e353003b 	cmp	r3, #59	; 0x3b                                
    72b4:	8a000016 	bhi	7314 <_TOD_Validate+0xa0>                     
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
    72b8:	e594300c 	ldr	r3, [r4, #12]                                 
    72bc:	e3530017 	cmp	r3, #23                                       
    72c0:	8a000013 	bhi	7314 <_TOD_Validate+0xa0>                     
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
    72c4:	e5940004 	ldr	r0, [r4, #4]                                  
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
      (the_tod->ticks  >= ticks_per_second)       ||                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
    72c8:	e3500000 	cmp	r0, #0                                        
    72cc:	08bd8010 	popeq	{r4, pc}                                    
      (the_tod->month  == 0)                      ||                  
    72d0:	e350000c 	cmp	r0, #12                                       
    72d4:	8a00000e 	bhi	7314 <_TOD_Validate+0xa0>                     
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
    72d8:	e5943000 	ldr	r3, [r4]                                      
      (the_tod->ticks  >= ticks_per_second)       ||                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
    72dc:	e59f2048 	ldr	r2, [pc, #72]	; 732c <_TOD_Validate+0xb8>     
    72e0:	e1530002 	cmp	r3, r2                                        
    72e4:	9a00000a 	bls	7314 <_TOD_Validate+0xa0>                     
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
    72e8:	e5944008 	ldr	r4, [r4, #8]                                  
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
    72ec:	e3540000 	cmp	r4, #0                                        
    72f0:	0a000009 	beq	731c <_TOD_Validate+0xa8>                     
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
    72f4:	e3130003 	tst	r3, #3                                        
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
    72f8:	e59f3030 	ldr	r3, [pc, #48]	; 7330 <_TOD_Validate+0xbc>     
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
    72fc:	0280000d 	addeq	r0, r0, #13                                 
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
    7300:	e7930100 	ldr	r0, [r3, r0, lsl #2]                          
const uint32_t   _TOD_Days_per_month[ 2 ][ 13 ] = {                   
  { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },              
  { 0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }               
};                                                                    
                                                                      
bool _TOD_Validate(                                                   
    7304:	e1500004 	cmp	r0, r4                                        
    7308:	33a00000 	movcc	r0, #0                                      
    730c:	23a00001 	movcs	r0, #1                                      
    7310:	e8bd8010 	pop	{r4, pc}                                      
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
     return false;                                                    
    7314:	e3a00000 	mov	r0, #0                                        
    7318:	e8bd8010 	pop	{r4, pc}                                      
    731c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
    7320:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

00009390 <_Thread_queue_Enqueue_priority>: Priority_Control priority; States_Control block_state; _Chain_Initialize_empty( &the_thread->Wait.Block2n ); priority = the_thread->current_priority;
    9390:	e5913014 	ldr	r3, [r1, #20]                                 
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
    9394:	e1a0c323 	lsr	ip, r3, #6                                    
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (     
  Thread_queue_Control *the_thread_queue,                             
  Thread_Control       *the_thread,                                   
  ISR_Level            *level_p                                       
)                                                                     
{                                                                     
    9398:	e92d07f0 	push	{r4, r5, r6, r7, r8, r9, sl}                 
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
    939c:	e08cc08c 	add	ip, ip, ip, lsl #1                            
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    93a0:	e281503c 	add	r5, r1, #60	; 0x3c                            
  block_state  = the_thread_queue->state;                             
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    93a4:	e3130020 	tst	r3, #32                                       
    93a8:	e2814038 	add	r4, r1, #56	; 0x38                            
                                                                      
  head->next = tail;                                                  
    93ac:	e5815038 	str	r5, [r1, #56]	; 0x38                          
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
    93b0:	e080c10c 	add	ip, r0, ip, lsl #2                            
  head->previous = NULL;                                              
    93b4:	e3a05000 	mov	r5, #0                                        
    93b8:	e581503c 	str	r5, [r1, #60]	; 0x3c                          
  tail->previous = head;                                              
    93bc:	e5814040 	str	r4, [r1, #64]	; 0x40                          
  block_state  = the_thread_queue->state;                             
    93c0:	e5906038 	ldr	r6, [r0, #56]	; 0x38                          
    93c4:	028c9004 	addeq	r9, ip, #4                                  
    93c8:	159f9164 	ldrne	r9, [pc, #356]	; 9534 <_Thread_queue_Enqueue_priority+0x1a4>
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    93cc:	1a00001b 	bne	9440 <_Thread_queue_Enqueue_priority+0xb0>    
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    93d0:	e10fa000 	mrs	sl, CPSR                                      
    93d4:	e38a4080 	orr	r4, sl, #128	; 0x80                           
    93d8:	e129f004 	msr	CPSR_fc, r4                                   
    93dc:	e1a0800a 	mov	r8, sl                                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
    93e0:	e59c4000 	ldr	r4, [ip]                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_First( header );          
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
    93e4:	e1540009 	cmp	r4, r9                                        
    93e8:	1a000009 	bne	9414 <_Thread_queue_Enqueue_priority+0x84>    
    93ec:	ea00004e 	b	952c <_Thread_queue_Enqueue_priority+0x19c>     
static inline void arm_interrupt_flash( uint32_t level )              
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    93f0:	e10f7000 	mrs	r7, CPSR                                      
    93f4:	e129f00a 	msr	CPSR_fc, sl                                   
    93f8:	e129f007 	msr	CPSR_fc, r7                                   
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
    93fc:	e5947010 	ldr	r7, [r4, #16]                                 
    search_priority = search_thread->current_priority;                
    if ( priority <= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
    9400:	e1160007 	tst	r6, r7                                        
    9404:	0a000031 	beq	94d0 <_Thread_queue_Enqueue_priority+0x140>   
      _ISR_Enable( level );                                           
      goto restart_forward_search;                                    
    }                                                                 
    search_thread =                                                   
    9408:	e5944000 	ldr	r4, [r4]                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_First( header );          
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
    940c:	e1540009 	cmp	r4, r9                                        
    9410:	0a000002 	beq	9420 <_Thread_queue_Enqueue_priority+0x90>    
    search_priority = search_thread->current_priority;                
    9414:	e5945014 	ldr	r5, [r4, #20]                                 
    if ( priority <= search_priority )                                
    9418:	e1530005 	cmp	r3, r5                                        
    941c:	8afffff3 	bhi	93f0 <_Thread_queue_Enqueue_priority+0x60>    
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
    9420:	e590c030 	ldr	ip, [r0, #48]	; 0x30                          
    9424:	e35c0001 	cmp	ip, #1                                        
    9428:	0a00002a 	beq	94d8 <_Thread_queue_Enqueue_priority+0x148>   
   *  For example, the blocking thread could have been given          
   *  the mutex by an ISR or timed out.                               
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
    942c:	e5828000 	str	r8, [r2]                                      
  return the_thread_queue->sync_state;                                
}                                                                     
    9430:	e1a0000c 	mov	r0, ip                                        
    9434:	e8bd07f0 	pop	{r4, r5, r6, r7, r8, r9, sl}                  
    9438:	e12fff1e 	bx	lr                                             
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    943c:	e129f00a 	msr	CPSR_fc, sl                                   <== NOT EXECUTED
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
    9440:	e5d95000 	ldrb	r5, [r9]                                     
    9444:	e2855001 	add	r5, r5, #1                                    
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    9448:	e10fa000 	mrs	sl, CPSR                                      
    944c:	e38a4080 	orr	r4, sl, #128	; 0x80                           
    9450:	e129f004 	msr	CPSR_fc, r4                                   
    9454:	e1a0800a 	mov	r8, sl                                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Tail( the_chain )->previous;                          
    9458:	e59c4008 	ldr	r4, [ip, #8]                                  
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_Last( header );           
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
    945c:	e154000c 	cmp	r4, ip                                        
    9460:	1a000009 	bne	948c <_Thread_queue_Enqueue_priority+0xfc>    
    9464:	ea00000b 	b	9498 <_Thread_queue_Enqueue_priority+0x108>     
static inline void arm_interrupt_flash( uint32_t level )              
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    9468:	e10f7000 	mrs	r7, CPSR                                      
    946c:	e129f00a 	msr	CPSR_fc, sl                                   
    9470:	e129f007 	msr	CPSR_fc, r7                                   
    9474:	e5947010 	ldr	r7, [r4, #16]                                 
    search_priority = search_thread->current_priority;                
    if ( priority >= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
    9478:	e1160007 	tst	r6, r7                                        
    947c:	0affffee 	beq	943c <_Thread_queue_Enqueue_priority+0xac>    
      _ISR_Enable( level );                                           
      goto restart_reverse_search;                                    
    }                                                                 
    search_thread = (Thread_Control *)                                
    9480:	e5944004 	ldr	r4, [r4, #4]                                  
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) _Chain_Last( header );           
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
    9484:	e154000c 	cmp	r4, ip                                        
    9488:	0a000002 	beq	9498 <_Thread_queue_Enqueue_priority+0x108>   
    search_priority = search_thread->current_priority;                
    948c:	e5945014 	ldr	r5, [r4, #20]                                 
    if ( priority >= search_priority )                                
    9490:	e1530005 	cmp	r3, r5                                        
    9494:	3afffff3 	bcc	9468 <_Thread_queue_Enqueue_priority+0xd8>    
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
    9498:	e590c030 	ldr	ip, [r0, #48]	; 0x30                          
    949c:	e35c0001 	cmp	ip, #1                                        
    94a0:	1affffe1 	bne	942c <_Thread_queue_Enqueue_priority+0x9c>    
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
                                                                      
  if ( priority == search_priority )                                  
    94a4:	e1530005 	cmp	r3, r5                                        
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
    94a8:	e3a03000 	mov	r3, #0                                        
    94ac:	e5803030 	str	r3, [r0, #48]	; 0x30                          
                                                                      
  if ( priority == search_priority )                                  
    94b0:	0a000014 	beq	9508 <_Thread_queue_Enqueue_priority+0x178>   
    goto equal_priority;                                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
    94b4:	e5943000 	ldr	r3, [r4]                                      
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
    94b8:	e8810018 	stm	r1, {r3, r4}                                  
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
  next_node->previous    = the_node;                                  
    94bc:	e5831004 	str	r1, [r3, #4]                                  
  next_node   = search_node->next;                                    
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
    94c0:	e5841000 	str	r1, [r4]                                      
  next_node->previous    = the_node;                                  
  the_thread->Wait.queue = the_thread_queue;                          
    94c4:	e5810044 	str	r0, [r1, #68]	; 0x44                          
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    94c8:	e129f00a 	msr	CPSR_fc, sl                                   
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
    94cc:	eaffffd7 	b	9430 <_Thread_queue_Enqueue_priority+0xa0>      
    94d0:	e129f00a 	msr	CPSR_fc, sl                                   
    94d4:	eaffffbd 	b	93d0 <_Thread_queue_Enqueue_priority+0x40>      
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
                                                                      
  if ( priority == search_priority )                                  
    94d8:	e1530005 	cmp	r3, r5                                        
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
    94dc:	e3a03000 	mov	r3, #0                                        
    94e0:	e5803030 	str	r3, [r0, #48]	; 0x30                          
                                                                      
  if ( priority == search_priority )                                  
    94e4:	0a000007 	beq	9508 <_Thread_queue_Enqueue_priority+0x178>   
    goto equal_priority;                                              
                                                                      
  search_node   = (Chain_Node *) search_thread;                       
  previous_node = search_node->previous;                              
    94e8:	e5943004 	ldr	r3, [r4, #4]                                  
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
    94ec:	e5814000 	str	r4, [r1]                                      
  the_node->previous     = previous_node;                             
    94f0:	e5813004 	str	r3, [r1, #4]                                  
  previous_node->next    = the_node;                                  
    94f4:	e5831000 	str	r1, [r3]                                      
  search_node->previous  = the_node;                                  
    94f8:	e5841004 	str	r1, [r4, #4]                                  
  the_thread->Wait.queue = the_thread_queue;                          
    94fc:	e5810044 	str	r0, [r1, #68]	; 0x44                          
    9500:	e129f00a 	msr	CPSR_fc, sl                                   
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
    9504:	eaffffc9 	b	9430 <_Thread_queue_Enqueue_priority+0xa0>      
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
  previous_node = search_node->previous;                              
    9508:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
    950c:	e284203c 	add	r2, r4, #60	; 0x3c                            
  previous_node = search_node->previous;                              
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
  the_node->previous     = previous_node;                             
    9510:	e881000c 	stm	r1, {r2, r3}                                  
  previous_node->next    = the_node;                                  
    9514:	e5831000 	str	r1, [r3]                                      
  search_node->previous  = the_node;                                  
    9518:	e5841040 	str	r1, [r4, #64]	; 0x40                          
  the_thread->Wait.queue = the_thread_queue;                          
    951c:	e5810044 	str	r0, [r1, #68]	; 0x44                          
    9520:	e129f008 	msr	CPSR_fc, r8                                   
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
    9524:	e3a0c001 	mov	ip, #1                                        
    9528:	eaffffc0 	b	9430 <_Thread_queue_Enqueue_priority+0xa0>      
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
    952c:	e3e05000 	mvn	r5, #0                                        
    9530:	eaffffba 	b	9420 <_Thread_queue_Enqueue_priority+0x90>      
                                                                      

00016d24 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
   16d24:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   16d28:	e24dd024 	sub	sp, sp, #36	; 0x24                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   16d2c:	e28d6018 	add	r6, sp, #24                                   
   16d30:	e28d1010 	add	r1, sp, #16                                   
   16d34:	e2862004 	add	r2, r6, #4                                    
   16d38:	e58d100c 	str	r1, [sp, #12]                                 
   16d3c:	e58d2018 	str	r2, [sp, #24]                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
   16d40:	e28d100c 	add	r1, sp, #12                                   
   16d44:	e28d201c 	add	r2, sp, #28                                   
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
   16d48:	e3a03000 	mov	r3, #0                                        
  tail->previous = head;                                              
   16d4c:	e58d1014 	str	r1, [sp, #20]                                 
   16d50:	e58d2000 	str	r2, [sp]                                      
   16d54:	e2801008 	add	r1, r0, #8                                    
   16d58:	e2802040 	add	r2, r0, #64	; 0x40                            
   16d5c:	e2807068 	add	r7, r0, #104	; 0x68                           
   16d60:	e2805030 	add	r5, r0, #48	; 0x30                            
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
   16d64:	e58d3010 	str	r3, [sp, #16]                                 
   16d68:	e58d301c 	str	r3, [sp, #28]                                 
  tail->previous = head;                                              
   16d6c:	e58d6020 	str	r6, [sp, #32]                                 
   16d70:	e59f81b8 	ldr	r8, [pc, #440]	; 16f30 <_Timer_server_Body+0x20c>
   16d74:	e59f91b8 	ldr	r9, [pc, #440]	; 16f34 <_Timer_server_Body+0x210>
   16d78:	e58d1004 	str	r1, [sp, #4]                                  
   16d7c:	e58d2008 	str	r2, [sp, #8]                                  
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
   16d80:	e1a0a007 	mov	sl, r7                                        
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
   16d84:	e1a04000 	mov	r4, r0                                        
   16d88:	e28db010 	add	fp, sp, #16                                   
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
   16d8c:	e1a07005 	mov	r7, r5                                        
{                                                                     
  /*                                                                  
   *  Afterwards all timer inserts are directed to this chain and the interval
   *  and TOD chains will be no more modified by other parties.       
   */                                                                 
  ts->insert_chain = insert_chain;                                    
   16d90:	e28d300c 	add	r3, sp, #12                                   
   16d94:	e5843078 	str	r3, [r4, #120]	; 0x78                         
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
   16d98:	e5983000 	ldr	r3, [r8]                                      
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
   16d9c:	e594103c 	ldr	r1, [r4, #60]	; 0x3c                          
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
   16da0:	e1a00007 	mov	r0, r7                                        
   16da4:	e0611003 	rsb	r1, r1, r3                                    
   16da8:	e1a02006 	mov	r2, r6                                        
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
   16dac:	e584303c 	str	r3, [r4, #60]	; 0x3c                          
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
   16db0:	eb00113f 	bl	1b2b4 <_Watchdog_Adjust_to_chain>              
   16db4:	e59f217c 	ldr	r2, [pc, #380]	; 16f38 <_Timer_server_Body+0x214>
   16db8:	e8990003 	ldm	r9, {r0, r1}                                  
   16dbc:	e3a03000 	mov	r3, #0                                        
   16dc0:	eb004d32 	bl	2a290 <__divdi3>                               
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
   16dc4:	e5942074 	ldr	r2, [r4, #116]	; 0x74                         
  /*                                                                  
   *  Process the seconds chain.  Start by checking that the Time     
   *  of Day (TOD) has not been set backwards.  If it has then        
   *  we want to adjust the watchdogs->Chain to indicate this.        
   */                                                                 
  if ( snapshot > last_snapshot ) {                                   
   16dc8:	e1500002 	cmp	r0, r2                                        
   16dcc:	e1a05000 	mov	r5, r0                                        
   16dd0:	8a000022 	bhi	16e60 <_Timer_server_Body+0x13c>              
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
   16dd4:	3a000018 	bcc	16e3c <_Timer_server_Body+0x118>              
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
   16dd8:	e5845074 	str	r5, [r4, #116]	; 0x74                         
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
   16ddc:	e5940078 	ldr	r0, [r4, #120]	; 0x78                         
   16de0:	eb0002d0 	bl	17928 <_Chain_Get>                             
                                                                      
    if ( timer == NULL ) {                                            
   16de4:	e2501000 	subs	r1, r0, #0                                   
   16de8:	0a00000b 	beq	16e1c <_Timer_server_Body+0xf8>               
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
   16dec:	e5913038 	ldr	r3, [r1, #56]	; 0x38                          
   16df0:	e3530001 	cmp	r3, #1                                        
   16df4:	0a000015 	beq	16e50 <_Timer_server_Body+0x12c>              
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
   16df8:	e3530003 	cmp	r3, #3                                        
   16dfc:	1afffff6 	bne	16ddc <_Timer_server_Body+0xb8>               
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
   16e00:	e2811010 	add	r1, r1, #16                                   
   16e04:	e1a0000a 	mov	r0, sl                                        
   16e08:	eb001152 	bl	1b358 <_Watchdog_Insert>                       
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
   16e0c:	e5940078 	ldr	r0, [r4, #120]	; 0x78                         
   16e10:	eb0002c4 	bl	17928 <_Chain_Get>                             
                                                                      
    if ( timer == NULL ) {                                            
   16e14:	e2501000 	subs	r1, r0, #0                                   
   16e18:	1afffff3 	bne	16dec <_Timer_server_Body+0xc8>               
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
   16e1c:	e10f2000 	mrs	r2, CPSR                                      
   16e20:	e3823080 	orr	r3, r2, #128	; 0x80                           
   16e24:	e129f003 	msr	CPSR_fc, r3                                   
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
   16e28:	e59d300c 	ldr	r3, [sp, #12]                                 
   16e2c:	e153000b 	cmp	r3, fp                                        
   16e30:	0a00000f 	beq	16e74 <_Timer_server_Body+0x150>              
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
   16e34:	e129f002 	msr	CPSR_fc, r2                                   <== NOT EXECUTED
   16e38:	eaffffd6 	b	16d98 <_Timer_server_Body+0x74>                 <== NOT EXECUTED
     /*                                                               
      *  The current TOD is before the last TOD which indicates that  
      *  TOD has been set backwards.                                  
      */                                                              
     delta = last_snapshot - snapshot;                                
     _Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta ); 
   16e3c:	e1a0000a 	mov	r0, sl                                        
   16e40:	e3a01001 	mov	r1, #1                                        
   16e44:	e0652002 	rsb	r2, r5, r2                                    
   16e48:	eb0010eb 	bl	1b1fc <_Watchdog_Adjust>                       
   16e4c:	eaffffe1 	b	16dd8 <_Timer_server_Body+0xb4>                 
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
   16e50:	e1a00007 	mov	r0, r7                                        
   16e54:	e2811010 	add	r1, r1, #16                                   
   16e58:	eb00113e 	bl	1b358 <_Watchdog_Insert>                       
   16e5c:	eaffffde 	b	16ddc <_Timer_server_Body+0xb8>                 
    /*                                                                
     *  This path is for normal forward movement and cases where the  
     *  TOD has been set forward.                                     
     */                                                               
    delta = snapshot - last_snapshot;                                 
    _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
   16e60:	e0621005 	rsb	r1, r2, r5                                    
   16e64:	e1a0000a 	mov	r0, sl                                        
   16e68:	e1a02006 	mov	r2, r6                                        
   16e6c:	eb001110 	bl	1b2b4 <_Watchdog_Adjust_to_chain>              
   16e70:	eaffffd8 	b	16dd8 <_Timer_server_Body+0xb4>                 
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
      ts->insert_chain = NULL;                                        
   16e74:	e5841078 	str	r1, [r4, #120]	; 0x78                         
   16e78:	e129f002 	msr	CPSR_fc, r2                                   
  _Chain_Initialize_empty( &fire_chain );                             
                                                                      
  while ( true ) {                                                    
    _Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain );
                                                                      
    if ( !_Chain_Is_empty( &fire_chain ) ) {                          
   16e7c:	e59d3018 	ldr	r3, [sp, #24]                                 
   16e80:	e59d1000 	ldr	r1, [sp]                                      
   16e84:	e1530001 	cmp	r3, r1                                        
   16e88:	1a00000a 	bne	16eb8 <_Timer_server_Body+0x194>              
   16e8c:	ea000012 	b	16edc <_Timer_server_Body+0x1b8>                
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
   16e90:	e5932000 	ldr	r2, [r3]                                      
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
   16e94:	e5826004 	str	r6, [r2, #4]                                  
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
   16e98:	e58d2018 	str	r2, [sp, #24]                                 
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
   16e9c:	e3a02000 	mov	r2, #0                                        
   16ea0:	e5832008 	str	r2, [r3, #8]                                  
   16ea4:	e129f001 	msr	CPSR_fc, r1                                   
        /*                                                            
         *  The timer server may block here and wait for resources or time.
         *  The system watchdogs are inactive and will remain inactive since
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
   16ea8:	e2830020 	add	r0, r3, #32                                   
   16eac:	e8900003 	ldm	r0, {r0, r1}                                  
   16eb0:	e1a0e00f 	mov	lr, pc                                        
   16eb4:	e593f01c 	ldr	pc, [r3, #28]                                 
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
   16eb8:	e10f1000 	mrs	r1, CPSR                                      
   16ebc:	e3813080 	orr	r3, r1, #128	; 0x80                           
   16ec0:	e129f003 	msr	CPSR_fc, r3                                   
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
   16ec4:	e59d3018 	ldr	r3, [sp, #24]                                 
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
   16ec8:	e59d2000 	ldr	r2, [sp]                                      
   16ecc:	e1530002 	cmp	r3, r2                                        
   16ed0:	1affffee 	bne	16e90 <_Timer_server_Body+0x16c>              
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
   16ed4:	e129f001 	msr	CPSR_fc, r1                                   
   16ed8:	eaffffac 	b	16d90 <_Timer_server_Body+0x6c>                 
      }                                                               
    } else {                                                          
      ts->active = false;                                             
   16edc:	e3a03000 	mov	r3, #0                                        
   16ee0:	e5c4307c 	strb	r3, [r4, #124]	; 0x7c                        
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
   16ee4:	e59f1050 	ldr	r1, [pc, #80]	; 16f3c <_Timer_server_Body+0x218>
   16ee8:	e5913000 	ldr	r3, [r1]                                      
                                                                      
    ++level;                                                          
   16eec:	e2833001 	add	r3, r3, #1                                    
    _Thread_Dispatch_disable_level = level;                           
   16ef0:	e5813000 	str	r3, [r1]                                      
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
   16ef4:	e3a01008 	mov	r1, #8                                        
   16ef8:	e5940000 	ldr	r0, [r4]                                      
   16efc:	eb000fdc 	bl	1ae74 <_Thread_Set_state>                      
        _Timer_server_Reset_interval_system_watchdog( ts );           
   16f00:	e1a00004 	mov	r0, r4                                        
   16f04:	ebffff5a 	bl	16c74 <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
   16f08:	e1a00004 	mov	r0, r4                                        
   16f0c:	ebffff6e 	bl	16ccc <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
   16f10:	eb000d9b 	bl	1a584 <_Thread_Enable_dispatch>                
                                                                      
      ts->active = true;                                              
   16f14:	e3a03001 	mov	r3, #1                                        
   16f18:	e5c4307c 	strb	r3, [r4, #124]	; 0x7c                        
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
   16f1c:	e59d0004 	ldr	r0, [sp, #4]                                  
   16f20:	eb001179 	bl	1b50c <_Watchdog_Remove>                       
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
   16f24:	e59d0008 	ldr	r0, [sp, #8]                                  
   16f28:	eb001177 	bl	1b50c <_Watchdog_Remove>                       
   16f2c:	eaffff97 	b	16d90 <_Timer_server_Body+0x6c>                 
                                                                      

000098e4 <_User_extensions_Thread_exitted_visitor>: Thread_Control *executing, void *arg, const User_extensions_Table *callouts ) { User_extensions_thread_exitted_extension callout = callouts->thread_exitted;
    98e4:	e5923018 	ldr	r3, [r2, #24]                                 
                                                                      
  if ( callout != NULL ) {                                            
    98e8:	e3530000 	cmp	r3, #0                                        
void _User_extensions_Thread_exitted_visitor(                         
  Thread_Control              *executing,                             
  void                        *arg,                                   
  const User_extensions_Table *callouts                               
)                                                                     
{                                                                     
    98ec:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  User_extensions_thread_exitted_extension callout = callouts->thread_exitted;
                                                                      
  if ( callout != NULL ) {                                            
    98f0:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    (*callout)( executing );                                          
    98f4:	e1a0e00f 	mov	lr, pc                                        
    98f8:	e12fff13 	bx	r3                                             
    98fc:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

0000b250 <_Watchdog_Adjust>: void _Watchdog_Adjust( Chain_Control *header, Watchdog_Adjust_directions direction, Watchdog_Interval units ) {
    b250:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    b254:	e1a04000 	mov	r4, r0                                        
    b258:	e1a05002 	mov	r5, r2                                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    b25c:	e10f2000 	mrs	r2, CPSR                                      
    b260:	e3823080 	orr	r3, r2, #128	; 0x80                           
    b264:	e129f003 	msr	CPSR_fc, r3                                   
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    b268:	e1a07000 	mov	r7, r0                                        
    b26c:	e4973004 	ldr	r3, [r7], #4                                  
   *       hence the compiler must not assume *header to remain       
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
    b270:	e1530007 	cmp	r3, r7                                        
    b274:	0a000017 	beq	b2d8 <_Watchdog_Adjust+0x88>                  
    switch ( direction ) {                                            
    b278:	e3510000 	cmp	r1, #0                                        
    b27c:	1a000017 	bne	b2e0 <_Watchdog_Adjust+0x90>                  
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
    b280:	e3550000 	cmp	r5, #0                                        
    b284:	0a000013 	beq	b2d8 <_Watchdog_Adjust+0x88>                  
          if ( units < _Watchdog_First( header )->delta_interval ) {  
    b288:	e5936010 	ldr	r6, [r3, #16]                                 
    b28c:	e1550006 	cmp	r5, r6                                        
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
    b290:	23a08001 	movcs	r8, #1                                      
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
    b294:	2a000005 	bcs	b2b0 <_Watchdog_Adjust+0x60>                  
    b298:	ea000017 	b	b2fc <_Watchdog_Adjust+0xac>                    <== NOT EXECUTED
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
    b29c:	e0555006 	subs	r5, r5, r6                                   
    b2a0:	0a00000c 	beq	b2d8 <_Watchdog_Adjust+0x88>                  
          if ( units < _Watchdog_First( header )->delta_interval ) {  
    b2a4:	e5936010 	ldr	r6, [r3, #16]                                 
    b2a8:	e1560005 	cmp	r6, r5                                        
    b2ac:	8a000012 	bhi	b2fc <_Watchdog_Adjust+0xac>                  
            _Watchdog_First( header )->delta_interval -= units;       
            break;                                                    
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
    b2b0:	e5838010 	str	r8, [r3, #16]                                 
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    b2b4:	e129f002 	msr	CPSR_fc, r2                                   
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
    b2b8:	e1a00004 	mov	r0, r4                                        
    b2bc:	eb0000a9 	bl	b568 <_Watchdog_Tickle>                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    b2c0:	e10f2000 	mrs	r2, CPSR                                      
    b2c4:	e3823080 	orr	r3, r2, #128	; 0x80                           
    b2c8:	e129f003 	msr	CPSR_fc, r3                                   
    b2cc:	e5943000 	ldr	r3, [r4]                                      
                                                                      
            _ISR_Disable( level );                                    
                                                                      
            if ( _Chain_Is_empty( header ) )                          
    b2d0:	e1570003 	cmp	r7, r3                                        
    b2d4:	1afffff0 	bne	b29c <_Watchdog_Adjust+0x4c>                  
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    b2d8:	e129f002 	msr	CPSR_fc, r2                                   
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
    b2dc:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
    switch ( direction ) {                                            
    b2e0:	e3510001 	cmp	r1, #1                                        
    b2e4:	1afffffb 	bne	b2d8 <_Watchdog_Adjust+0x88>                  
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
    b2e8:	e5931010 	ldr	r1, [r3, #16]                                 
    b2ec:	e0815005 	add	r5, r1, r5                                    
    b2f0:	e5835010 	str	r5, [r3, #16]                                 
    b2f4:	e129f002 	msr	CPSR_fc, r2                                   
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
                                                                      
}                                                                     
    b2f8:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
            _Watchdog_First( header )->delta_interval -= units;       
    b2fc:	e0655006 	rsb	r5, r5, r6                                    
    b300:	e5835010 	str	r5, [r3, #16]                                 
            break;                                                    
    b304:	eafffff3 	b	b2d8 <_Watchdog_Adjust+0x88>                    
                                                                      

00009d38 <_Workspace_Handler_initialization>: void _Workspace_Handler_initialization( Heap_Area *areas, size_t area_count, Heap_Initialization_or_extend_handler extend ) {
    9d38:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
    9d3c:	e59f3120 	ldr	r3, [pc, #288]	; 9e64 <_Workspace_Handler_initialization+0x12c>
    9d40:	e5d3c032 	ldrb	ip, [r3, #50]	; 0x32                         
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
    9d44:	e24dd004 	sub	sp, sp, #4                                    
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
    9d48:	e35c0000 	cmp	ip, #0                                        
    9d4c:	05937004 	ldreq	r7, [r3, #4]                                
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
    9d50:	e58d2000 	str	r2, [sp]                                      
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
    9d54:	e5932000 	ldr	r2, [r3]                                      
    9d58:	13a07000 	movne	r7, #0                                      
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9d5c:	e3510000 	cmp	r1, #0                                        
void _Workspace_Handler_initialization(                               
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
    9d60:	e1a08001 	mov	r8, r1                                        
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
  uintptr_t remaining = rtems_configuration_get_work_space_size();    
    9d64:	e0877002 	add	r7, r7, r2                                    
  bool do_zero = rtems_configuration_get_do_zero_of_workspace();      
    9d68:	e5d3a030 	ldrb	sl, [r3, #48]	; 0x30                         
  bool unified = rtems_configuration_get_unified_work_area();         
    9d6c:	e5d3b031 	ldrb	fp, [r3, #49]	; 0x31                         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9d70:	0a000033 	beq	9e44 <_Workspace_Handler_initialization+0x10c>
  Heap_Area *areas,                                                   
  size_t area_count,                                                  
  Heap_Initialization_or_extend_handler extend                        
)                                                                     
{                                                                     
  Heap_Initialization_or_extend_handler init_or_extend = _Heap_Initialize;
    9d74:	e59f90ec 	ldr	r9, [pc, #236]	; 9e68 <_Workspace_Handler_initialization+0x130>
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9d78:	e1a04000 	mov	r4, r0                                        
    9d7c:	e3a06000 	mov	r6, #0                                        
    9d80:	ea00001d 	b	9dfc <_Workspace_Handler_initialization+0xc4>   
                                                                      
    if ( do_zero ) {                                                  
      memset( area->begin, 0, area->size );                           
    }                                                                 
                                                                      
    if ( area->size > overhead ) {                                    
    9d84:	e5945004 	ldr	r5, [r4, #4]                                  
    9d88:	e3550016 	cmp	r5, #22                                       
    9d8c:	9a000016 	bls	9dec <_Workspace_Handler_initialization+0xb4> 
      uintptr_t space_available;                                      
      uintptr_t size;                                                 
                                                                      
      if ( unified ) {                                                
    9d90:	e35b0000 	cmp	fp, #0                                        
    9d94:	1a000004 	bne	9dac <_Workspace_Handler_initialization+0x74> 
        size = area->size;                                            
      } else {                                                        
        if ( remaining > 0 ) {                                        
    9d98:	e3570000 	cmp	r7, #0                                        
    9d9c:	0a00001d 	beq	9e18 <_Workspace_Handler_initialization+0xe0> 
          size = remaining < area->size - overhead ?                  
    9da0:	e2453016 	sub	r3, r5, #22                                   
            remaining + overhead : area->size;                        
    9da4:	e1530007 	cmp	r3, r7                                        
    9da8:	82875016 	addhi	r5, r7, #22                                 
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
    9dac:	e1a02005 	mov	r2, r5                                        
    9db0:	e3a03008 	mov	r3, #8                                        
    9db4:	e59f00b0 	ldr	r0, [pc, #176]	; 9e6c <_Workspace_Handler_initialization+0x134>
    9db8:	e5941000 	ldr	r1, [r4]                                      
    9dbc:	e1a0e00f 	mov	lr, pc                                        
    9dc0:	e12fff19 	bx	r9                                             
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
    9dc4:	e5943000 	ldr	r3, [r4]                                      
      area->size -= size;                                             
    9dc8:	e5942004 	ldr	r2, [r4, #4]                                  
        area->begin,                                                  
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
    9dcc:	e0833005 	add	r3, r3, r5                                    
      area->size -= size;                                             
    9dd0:	e0655002 	rsb	r5, r5, r2                                    
                                                                      
      if ( space_available < remaining ) {                            
    9dd4:	e1500007 	cmp	r0, r7                                        
        size,                                                         
        page_size                                                     
      );                                                              
                                                                      
      area->begin = (char *) area->begin + size;                      
      area->size -= size;                                             
    9dd8:	e8840028 	stm	r4, {r3, r5}                                  
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
    9ddc:	359d9000 	ldrcc	r9, [sp]                                    
    9de0:	259d9000 	ldrcs	r9, [sp]                                    
                                                                      
      area->begin = (char *) area->begin + size;                      
      area->size -= size;                                             
                                                                      
      if ( space_available < remaining ) {                            
        remaining -= space_available;                                 
    9de4:	30607007 	rsbcc	r7, r0, r7                                  
      } else {                                                        
        remaining = 0;                                                
    9de8:	23a07000 	movcs	r7, #0                                      
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9dec:	e2866001 	add	r6, r6, #1                                    
    9df0:	e1560008 	cmp	r6, r8                                        
    9df4:	e2844008 	add	r4, r4, #8                                    
    9df8:	0a000011 	beq	9e44 <_Workspace_Handler_initialization+0x10c>
    Heap_Area *area = &areas [i];                                     
                                                                      
    if ( do_zero ) {                                                  
    9dfc:	e35a0000 	cmp	sl, #0                                        
    9e00:	0affffdf 	beq	9d84 <_Workspace_Handler_initialization+0x4c> 
      memset( area->begin, 0, area->size );                           
    9e04:	e5940000 	ldr	r0, [r4]                                      
    9e08:	e3a01000 	mov	r1, #0                                        
    9e0c:	e5942004 	ldr	r2, [r4, #4]                                  
    9e10:	eb0010e4 	bl	e1a8 <memset>                                  
    9e14:	eaffffda 	b	9d84 <_Workspace_Handler_initialization+0x4c>   
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
    9e18:	e5941000 	ldr	r1, [r4]                                      <== NOT EXECUTED
    9e1c:	e59f0048 	ldr	r0, [pc, #72]	; 9e6c <_Workspace_Handler_initialization+0x134><== NOT EXECUTED
    9e20:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
    9e24:	e3a03008 	mov	r3, #8                                        <== NOT EXECUTED
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9e28:	e2866001 	add	r6, r6, #1                                    <== NOT EXECUTED
        } else {                                                      
          size = 0;                                                   
        }                                                             
      }                                                               
                                                                      
      space_available = (*init_or_extend)(                            
    9e2c:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    9e30:	e12fff19 	bx	r9                                             <== NOT EXECUTED
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9e34:	e1560008 	cmp	r6, r8                                        <== NOT EXECUTED
        remaining -= space_available;                                 
      } else {                                                        
        remaining = 0;                                                
      }                                                               
                                                                      
      init_or_extend = extend;                                        
    9e38:	e59d9000 	ldr	r9, [sp]                                      <== NOT EXECUTED
  bool unified = rtems_configuration_get_unified_work_area();         
  uintptr_t page_size = CPU_HEAP_ALIGNMENT;                           
  uintptr_t overhead = _Heap_Area_overhead( page_size );              
  size_t i;                                                           
                                                                      
  for (i = 0; i < area_count; ++i) {                                  
    9e3c:	e2844008 	add	r4, r4, #8                                    <== NOT EXECUTED
    9e40:	1affffed 	bne	9dfc <_Workspace_Handler_initialization+0xc4> <== NOT EXECUTED
                                                                      
      init_or_extend = extend;                                        
    }                                                                 
  }                                                                   
                                                                      
  if ( remaining > 0 ) {                                              
    9e44:	e3570000 	cmp	r7, #0                                        
    9e48:	1a000001 	bne	9e54 <_Workspace_Handler_initialization+0x11c>
      INTERNAL_ERROR_CORE,                                            
      true,                                                           
      INTERNAL_ERROR_TOO_LITTLE_WORKSPACE                             
    );                                                                
  }                                                                   
}                                                                     
    9e4c:	e28dd004 	add	sp, sp, #4                                    
    9e50:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
      init_or_extend = extend;                                        
    }                                                                 
  }                                                                   
                                                                      
  if ( remaining > 0 ) {                                              
    _Internal_error_Occurred(                                         
    9e54:	e3a00000 	mov	r0, #0                                        
    9e58:	e3a01001 	mov	r1, #1                                        
    9e5c:	e3a02002 	mov	r2, #2                                        
    9e60:	ebfff6e7 	bl	7a04 <_Internal_error_Occurred>                
                                                                      

00018b90 <__kill>: #endif int __kill( pid_t pid, int sig ) { return 0; }
   18b90:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   18b94:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

0001209c <_fat_block_read>: uint32_t start, uint32_t offset, uint32_t count, void *buff ) {
   1209c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    uint32_t                sec_num = start;                          
    uint32_t                ofs = offset;                             
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
   120a0:	e2534000 	subs	r4, r3, #0                                   
    uint32_t                              start,                      
    uint32_t                              offset,                     
    uint32_t                              count,                      
    void                                 *buff                        
    )                                                                 
{                                                                     
   120a4:	e24dd004 	sub	sp, sp, #4                                    
   120a8:	e1a09000 	mov	r9, r0                                        
   120ac:	e59db028 	ldr	fp, [sp, #40]	; 0x28                          
    uint32_t                sec_num = start;                          
    uint32_t                ofs = offset;                             
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
   120b0:	11a07002 	movne	r7, r2                                      
   120b4:	11a06001 	movne	r6, r1                                      
   120b8:	13a05000 	movne	r5, #0                                      
   120bc:	1a00000d 	bne	120f8 <_fat_block_read+0x5c>                  
   120c0:	ea000018 	b	12128 <_fat_block_read+0x8c>                    <== 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));                     
   120c4:	e1d980b0 	ldrh	r8, [r9]                                     
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
   120c8:	e59d1000 	ldr	r1, [sp]                                      
    {                                                                 
        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));                     
   120cc:	e0678008 	rsb	r8, r7, r8                                    
   120d0:	e1580004 	cmp	r8, r4                                        
   120d4:	21a08004 	movcs	r8, r4                                      
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
   120d8:	e0811007 	add	r1, r1, r7                                    
   120dc:	e1a02008 	mov	r2, r8                                        
   120e0:	eb00209a 	bl	1a350 <memcpy>                                 
    uint32_t                sec_num = start;                          
    uint32_t                ofs = offset;                             
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
   120e4:	e0544008 	subs	r4, r4, r8                                   
                                                                      
        c = MIN(count, (fs_info->vol.bps - ofs));                     
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
   120e8:	e0885005 	add	r5, r8, r5                                    
        sec_num++;                                                    
   120ec:	e2866001 	add	r6, r6, #1                                    
    uint32_t                sec_num = start;                          
    uint32_t                ofs = offset;                             
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
   120f0:	0a000009 	beq	1211c <_fat_block_read+0x80>                  
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        sec_num++;                                                    
        ofs = 0;                                                      
   120f4:	e1a0700a 	mov	r7, sl                                        
    uint8_t                *sec_buf;                                  
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
    {                                                                 
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
   120f8:	e1a01006 	mov	r1, r6                                        
   120fc:	e3a02001 	mov	r2, #1                                        
   12100:	e1a0300d 	mov	r3, sp                                        
   12104:	e1a00009 	mov	r0, r9                                        
   12108:	ebffffb8 	bl	11ff0 <fat_buf_access>                         
        if (rc != RC_OK)                                              
   1210c:	e250a000 	subs	sl, r0, #0                                   
            return -1;                                                
                                                                      
        c = MIN(count, (fs_info->vol.bps - ofs));                     
        memcpy((buff + cmpltd), (sec_buf + ofs), c);                  
   12110:	e08b0005 	add	r0, fp, r5                                    
    uint32_t                c = 0;                                    
                                                                      
    while (count > 0)                                                 
    {                                                                 
        rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
   12114:	0affffea 	beq	120c4 <_fat_block_read+0x28>                  
            return -1;                                                
   12118:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
        cmpltd += c;                                                  
        sec_num++;                                                    
        ofs = 0;                                                      
    }                                                                 
    return cmpltd;                                                    
}                                                                     
   1211c:	e1a00005 	mov	r0, r5                                        
   12120:	e28dd004 	add	sp, sp, #4                                    
   12124:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    uint32_t                              count,                      
    void                                 *buff                        
    )                                                                 
{                                                                     
    int                     rc = RC_OK;                               
    ssize_t                 cmpltd = 0;                               
   12128:	e1a05004 	mov	r5, r4                                        <== NOT EXECUTED
   1212c:	eafffffa 	b	1211c <_fat_block_read+0x80>                    <== NOT EXECUTED
                                                                      

00002648 <_gettimeofday>: int _gettimeofday( struct timeval *tp, struct timezone *tzp ) { return gettimeofday( tp, tzp );
    2648:	eaffffda 	b	25b8 <gettimeofday>                             <== NOT EXECUTED
                                                                      

000032bc <_lstat_r>: struct _reent *ptr __attribute__((unused)), const char *path, struct stat *buf ) { return _STAT_NAME( path, buf );
    32bc:	e1a00001 	mov	r0, r1                                        <== NOT EXECUTED
    32c0:	e1a01002 	mov	r1, r2                                        <== NOT EXECUTED
    32c4:	eaffffe5 	b	3260 <lstat>                                    <== NOT EXECUTED
                                                                      

00003498 <_stat_r>: struct _reent *ptr __attribute__((unused)), const char *path, struct stat *buf ) { return _STAT_NAME( path, buf );
    3498:	e1a00001 	mov	r0, r1                                        <== NOT EXECUTED
    349c:	e1a01002 	mov	r1, r2                                        <== NOT EXECUTED
    34a0:	eaffffe5 	b	343c <stat>                                     <== NOT EXECUTED
                                                                      

0000267c <create_disk>: dev_t dev, const char *name, rtems_disk_device **dd_ptr, char **alloc_name_ptr ) {
    267c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
    2680:	e59f6168 	ldr	r6, [pc, #360]	; 27f0 <create_disk+0x174>     
    2684:	e5967000 	ldr	r7, [r6]                                      
    2688:	e1500007 	cmp	r0, r7                                        
  dev_t dev,                                                          
  const char *name,                                                   
  rtems_disk_device **dd_ptr,                                         
  char **alloc_name_ptr                                               
)                                                                     
{                                                                     
    268c:	e1a05000 	mov	r5, r0                                        
    2690:	e1a04001 	mov	r4, r1                                        
    2694:	e1a09002 	mov	r9, r2                                        
    2698:	e1a0b003 	mov	fp, r3                                        
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
    269c:	35968004 	ldrcc	r8, [r6, #4]                                
    26a0:	3a00000e 	bcc	26e0 <create_disk+0x64>                       
    rtems_disk_device_table *table = disktab;                         
    rtems_device_major_number old_size = disktab_size;                
    rtems_device_major_number new_size = 2 * old_size;                
    26a4:	e1a0a087 	lsl	sl, r7, #1                                    
                                                                      
    if (major >= new_size) {                                          
    26a8:	e150000a 	cmp	r0, sl                                        
      new_size = major + 1;                                           
    26ac:	2285a001 	addcs	sl, r5, #1                                  
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major >= disktab_size) {                                        
    rtems_disk_device_table *table = disktab;                         
    26b0:	e5960004 	ldr	r0, [r6, #4]                                  
                                                                      
    if (major >= new_size) {                                          
      new_size = major + 1;                                           
    }                                                                 
                                                                      
    table = realloc(table, new_size * sizeof(*table));                
    26b4:	e1a0118a 	lsl	r1, sl, #3                                    
    26b8:	eb000841 	bl	47c4 <realloc>                                 
    if (table == NULL) {                                              
    26bc:	e2508000 	subs	r8, r0, #0                                   
    26c0:	0a00003c 	beq	27b8 <create_disk+0x13c>                      
      return NULL;                                                    
    }                                                                 
                                                                      
    memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
    26c4:	e067200a 	rsb	r2, r7, sl                                    <== NOT EXECUTED
    26c8:	e0880187 	add	r0, r8, r7, lsl #3                            <== NOT EXECUTED
    26cc:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
    26d0:	e1a02182 	lsl	r2, r2, #3                                    <== NOT EXECUTED
    26d4:	eb004004 	bl	126ec <memset>                                 <== NOT EXECUTED
    disktab = table;                                                  
    26d8:	e5868004 	str	r8, [r6, #4]                                  <== NOT EXECUTED
    disktab_size = new_size;                                          
    26dc:	e586a000 	str	sl, [r6]                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  if (disktab [major].minor == NULL || minor >= disktab[major].size) {
    26e0:	e7987185 	ldr	r7, [r8, r5, lsl #3]                          
    26e4:	e0888185 	add	r8, r8, r5, lsl #3                            
    26e8:	e3570000 	cmp	r7, #0                                        
    26ec:	e598a004 	ldr	sl, [r8, #4]                                  
    26f0:	0a000001 	beq	26fc <create_disk+0x80>                       
    26f4:	e154000a 	cmp	r4, sl                                        
    26f8:	3a000010 	bcc	2740 <create_disk+0xc4>                       
    rtems_disk_device **table = disktab [major].minor;                
    rtems_device_minor_number old_size = disktab [major].size;        
    rtems_device_minor_number new_size = 0;                           
                                                                      
    if (old_size == 0) {                                              
    26fc:	e35a0000 	cmp	sl, #0                                        
      new_size = DISKTAB_INITIAL_SIZE;                                
    } else {                                                          
      new_size = 2 * old_size;                                        
    2700:	11a0608a 	lslne	r6, sl, #1                                  
    rtems_disk_device **table = disktab [major].minor;                
    rtems_device_minor_number old_size = disktab [major].size;        
    rtems_device_minor_number new_size = 0;                           
                                                                      
    if (old_size == 0) {                                              
      new_size = DISKTAB_INITIAL_SIZE;                                
    2704:	03a06008 	moveq	r6, #8                                      
    } else {                                                          
      new_size = 2 * old_size;                                        
    }                                                                 
    if (minor >= new_size) {                                          
    2708:	e1540006 	cmp	r4, r6                                        
      new_size = minor + 1;                                           
    270c:	22846001 	addcs	r6, r4, #1                                  
    }                                                                 
                                                                      
    table = realloc(table, new_size * sizeof(*table));                
    2710:	e1a00007 	mov	r0, r7                                        
    2714:	e1a01106 	lsl	r1, r6, #2                                    
    2718:	eb000829 	bl	47c4 <realloc>                                 
    if (table == NULL) {                                              
    271c:	e2507000 	subs	r7, r0, #0                                   
    2720:	0a000024 	beq	27b8 <create_disk+0x13c>                      
      return NULL;                                                    
    }                                                                 
                                                                      
    memset(table + old_size, 0, (new_size - old_size) * sizeof(*table));
    2724:	e06a2006 	rsb	r2, sl, r6                                    
    2728:	e087010a 	add	r0, r7, sl, lsl #2                            
    272c:	e3a01000 	mov	r1, #0                                        
    2730:	e1a02102 	lsl	r2, r2, #2                                    
    2734:	eb003fec 	bl	126ec <memset>                                 
    disktab [major].minor = table;                                    
    2738:	e5887000 	str	r7, [r8]                                      
    disktab [major].size = new_size;                                  
    273c:	e5886004 	str	r6, [r8, #4]                                  
{                                                                     
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
                                                                      
  if (dd_entry == NULL) {                                             
    2740:	e0976104 	adds	r6, r7, r4, lsl #2                           
    2744:	0a00001b 	beq	27b8 <create_disk+0x13c>                      
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (*dd_entry != NULL) {                                            
    2748:	e7973104 	ldr	r3, [r7, r4, lsl #2]                          
    274c:	e3530000 	cmp	r3, #0                                        
    return RTEMS_RESOURCE_IN_USE;                                     
    2750:	13a0000c 	movne	r0, #12                                     
                                                                      
  if (dd_entry == NULL) {                                             
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (*dd_entry != NULL) {                                            
    2754:	18bd8ff0 	popne	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  dd = malloc(sizeof(*dd));                                           
    2758:	e3a00074 	mov	r0, #116	; 0x74                               
    275c:	eb00056c 	bl	3d14 <malloc>                                  
  if (dd == NULL) {                                                   
    2760:	e2508000 	subs	r8, r0, #0                                   
    2764:	0a000015 	beq	27c0 <create_disk+0x144>                      
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
    2768:	e3590000 	cmp	r9, #0                                        
    276c:	0a00000b 	beq	27a0 <create_disk+0x124>                      
    alloc_name = strdup(name);                                        
    2770:	e1a00009 	mov	r0, r9                                        
    2774:	eb004190 	bl	12dbc <strdup>                                 
                                                                      
    if (alloc_name == NULL) {                                         
    2778:	e3500000 	cmp	r0, #0                                        
  if (dd == NULL) {                                                   
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
    alloc_name = strdup(name);                                        
    277c:	e1a07000 	mov	r7, r0                                        
    2780:	e1a09000 	mov	r9, r0                                        
                                                                      
    if (alloc_name == NULL) {                                         
    2784:	0a000015 	beq	27e0 <create_disk+0x164>                      
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
    if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) {                 
    2788:	e59f1064 	ldr	r1, [pc, #100]	; 27f4 <create_disk+0x178>     
    278c:	e1a02005 	mov	r2, r5                                        
    2790:	e1a03004 	mov	r3, r4                                        
    2794:	eb0005be 	bl	3e94 <mknod>                                   
    2798:	e3500000 	cmp	r0, #0                                        
    279c:	ba000009 	blt	27c8 <create_disk+0x14c>                      
    }                                                                 
  }                                                                   
                                                                      
  *dd_entry = dd;                                                     
  *dd_ptr = dd;                                                       
  *alloc_name_ptr = alloc_name;                                       
    27a0:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          
      free(dd);                                                       
      return RTEMS_UNSATISFIED;                                       
    }                                                                 
  }                                                                   
                                                                      
  *dd_entry = dd;                                                     
    27a4:	e5868000 	str	r8, [r6]                                      
  *dd_ptr = dd;                                                       
  *alloc_name_ptr = alloc_name;                                       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    27a8:	e3a00000 	mov	r0, #0                                        
      return RTEMS_UNSATISFIED;                                       
    }                                                                 
  }                                                                   
                                                                      
  *dd_entry = dd;                                                     
  *dd_ptr = dd;                                                       
    27ac:	e58b8000 	str	r8, [fp]                                      
  *alloc_name_ptr = alloc_name;                                       
    27b0:	e5839000 	str	r9, [r3]                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    27b4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  rtems_disk_device **dd_entry = create_disk_table_entry(dev);        
  rtems_disk_device *dd = NULL;                                       
  char *alloc_name = NULL;                                            
                                                                      
  if (dd_entry == NULL) {                                             
    return RTEMS_NO_MEMORY;                                           
    27b8:	e3a0001a 	mov	r0, #26                                       
    27bc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  dd = malloc(sizeof(*dd));                                           
  if (dd == NULL) {                                                   
    return RTEMS_NO_MEMORY;                                           
    27c0:	e3a0001a 	mov	r0, #26                                       <== NOT EXECUTED
  *dd_entry = dd;                                                     
  *dd_ptr = dd;                                                       
  *alloc_name_ptr = alloc_name;                                       
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    27c4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  if (name != NULL) {                                                 
    if (mknod(alloc_name, 0777 | S_IFBLK, dev) < 0) {                 
      free(alloc_name);                                               
    27c8:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    27cc:	eb000415 	bl	3828 <free>                                    <== NOT EXECUTED
      free(dd);                                                       
    27d0:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
    27d4:	eb000413 	bl	3828 <free>                                    <== NOT EXECUTED
      return RTEMS_UNSATISFIED;                                       
    27d8:	e3a0000d 	mov	r0, #13                                       <== NOT EXECUTED
    27dc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
                                                                      
  if (name != NULL) {                                                 
    alloc_name = strdup(name);                                        
                                                                      
    if (alloc_name == NULL) {                                         
      free(dd);                                                       
    27e0:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
    27e4:	eb00040f 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
      return RTEMS_NO_MEMORY;                                         
    27e8:	e3a0001a 	mov	r0, #26                                       <== NOT EXECUTED
    27ec:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
                                                                      

0000b244 <devFS_eval_path>: static inline const devFS_data *devFS_get_data( const rtems_filesystem_location_info_t *loc ) { return (const devFS_data *) loc->mt_entry->immutable_fs_info;
    b244:	e590302c 	ldr	r3, [r0, #44]	; 0x2c                          
    b248:	e5933010 	ldr	r3, [r3, #16]                                 
}                                                                     
                                                                      
void devFS_eval_path(                                                 
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
    b24c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  size_t pathlen,                                                     
  devFS_node **free_node_ptr                                          
)                                                                     
{                                                                     
  size_t i = 0;                                                       
  size_t n = data->count;                                             
    b250:	e593a004 	ldr	sl, [r3, #4]                                  
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
    b254:	e35a0000 	cmp	sl, #0                                        
)                                                                     
{                                                                     
  size_t i = 0;                                                       
  size_t n = data->count;                                             
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
    b258:	13a06000 	movne	r6, #0                                      
}                                                                     
                                                                      
void devFS_eval_path(                                                 
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
    b25c:	e1a09000 	mov	r9, r0                                        
                                                                      
static inline const char *rtems_filesystem_eval_path_get_path(        
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  return ctx->path;                                                   
    b260:	e590b000 	ldr	fp, [r0]                                      
                                                                      
static inline size_t rtems_filesystem_eval_path_get_pathlen(          
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  return ctx->pathlen;                                                
    b264:	e5908004 	ldr	r8, [r0, #4]                                  
  devFS_node **free_node_ptr                                          
)                                                                     
{                                                                     
  size_t i = 0;                                                       
  size_t n = data->count;                                             
  devFS_node *nodes = data->nodes;                                    
    b268:	e5934000 	ldr	r4, [r3]                                      
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
    b26c:	11a07006 	movne	r7, r6                                      
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
    b270:	11a05006 	movne	r5, r6                                      
    b274:	1a000008 	bne	b29c <devFS_eval_path+0x58>                   
    b278:	ea000024 	b	b310 <devFS_eval_path+0xcc>                     
    b27c:	e3530000 	cmp	r3, #0                                        
    b280:	13560000 	cmpne	r6, #0                                      
    b284:	e2855001 	add	r5, r5, #1                                    
    b288:	1a000015 	bne	b2e4 <devFS_eval_path+0xa0>                   
    b28c:	e155000a 	cmp	r5, sl                                        
    b290:	e2844014 	add	r4, r4, #20                                   
    b294:	0a000012 	beq	b2e4 <devFS_eval_path+0xa0>                   
    b298:	e1a07003 	mov	r7, r3                                        
    devFS_node *current = nodes + i;                                  
                                                                      
    if (current->name != NULL) {                                      
    b29c:	e5940000 	ldr	r0, [r4]                                      
    b2a0:	e3500000 	cmp	r0, #0                                        
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
    devFS_node *current = nodes + i;                                  
    b2a4:	e1a03004 	mov	r3, r4                                        
                                                                      
    if (current->name != NULL) {                                      
    b2a8:	0afffff3 	beq	b27c <devFS_eval_path+0x38>                   
      if (                                                            
    b2ac:	e5943004 	ldr	r3, [r4, #4]                                  
    b2b0:	e1580003 	cmp	r8, r3                                        
    b2b4:	11a03007 	movne	r3, r7                                      
    b2b8:	1affffef 	bne	b27c <devFS_eval_path+0x38>                   
        current->namelen == pathlen                                   
          && memcmp(current->name, path, pathlen) == 0                
    b2bc:	e1a0100b 	mov	r1, fp                                        
    b2c0:	e1a02008 	mov	r2, r8                                        
    b2c4:	eb000912 	bl	d714 <memcmp>                                  
    b2c8:	e3500000 	cmp	r0, #0                                        
    b2cc:	e1a03007 	mov	r3, r7                                        
    b2d0:	01a06004 	moveq	r6, r4                                      
  size_t n = data->count;                                             
  devFS_node *nodes = data->nodes;                                    
  devFS_node *node = NULL;                                            
  devFS_node *free_node = NULL;                                       
                                                                      
  for (i = 0; (free_node == NULL || node == NULL) && i < n; ++i) {    
    b2d4:	e3530000 	cmp	r3, #0                                        
    b2d8:	13560000 	cmpne	r6, #0                                      
    b2dc:	e2855001 	add	r5, r5, #1                                    
    b2e0:	0affffe9 	beq	b28c <devFS_eval_path+0x48>                   
    rtems_filesystem_eval_path_get_pathlen(ctx),                      
    &free_node                                                        
  );                                                                  
  int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);         
                                                                      
  if (node != NULL) {                                                 
    b2e4:	e3560000 	cmp	r6, #0                                        
                                                                      
static inline int rtems_filesystem_eval_path_get_flags(               
  const rtems_filesystem_eval_path_context_t *ctx                     
)                                                                     
{                                                                     
  return ctx->flags;                                                  
    b2e8:	e5992010 	ldr	r2, [r9, #16]                                 
    b2ec:	0a000014 	beq	b344 <devFS_eval_path+0x100>                  
    if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {                     
    b2f0:	e2122040 	ands	r2, r2, #64	; 0x40                           
      currentloc->node_access = node;                                 
    b2f4:	05896020 	streq	r6, [r9, #32]                               
                                                                      
static inline void rtems_filesystem_eval_path_clear_path(             
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->pathlen = 0;                                                   
    b2f8:	05892004 	streq	r2, [r9, #4]                                
    &free_node                                                        
  );                                                                  
  int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);         
                                                                      
  if (node != NULL) {                                                 
    if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {                     
    b2fc:	08bd8ff0 	popeq	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
      currentloc->node_access = node;                                 
      rtems_filesystem_eval_path_clear_path(ctx);                     
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, EEXIST);                  
    b300:	e1a00009 	mov	r0, r9                                        
    b304:	e3a01011 	mov	r1, #17                                       
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    }                                                                 
  }                                                                   
}                                                                     
    b308:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          
  if (node != NULL) {                                                 
    if ((eval_flags & RTEMS_FS_EXCLUSIVE) == 0) {                     
      currentloc->node_access = node;                                 
      rtems_filesystem_eval_path_clear_path(ctx);                     
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, EEXIST);                  
    b30c:	eaffe471 	b	44d8 <rtems_filesystem_eval_path_error>         
                                                                      
static inline int rtems_filesystem_eval_path_get_flags(               
  const rtems_filesystem_eval_path_context_t *ctx                     
)                                                                     
{                                                                     
  return ctx->flags;                                                  
    b310:	e5902010 	ldr	r2, [r0, #16]                                 
    }                                                                 
  } else {                                                            
    if ((eval_flags & RTEMS_FS_MAKE) != 0) {                          
    b314:	e3120020 	tst	r2, #32                                       
    b318:	0a00000b 	beq	b34c <devFS_eval_path+0x108>                  
      if (free_node != NULL) {                                        
    b31c:	e35a0000 	cmp	sl, #0                                        
    b320:	0a00000d 	beq	b35c <devFS_eval_path+0x118>                  
        free_node->mode = S_IRWXU | S_IRWXG | S_IRWXO;                
    b324:	e59f3040 	ldr	r3, [pc, #64]	; b36c <devFS_eval_path+0x128>  
    b328:	e58a3010 	str	r3, [sl, #16]                                 
                                                                      
static inline void rtems_filesystem_eval_path_clear_path(             
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->pathlen = 0;                                                   
    b32c:	e3a03000 	mov	r3, #0                                        
        currentloc->node_access = free_node;                          
    b330:	e589a020 	str	sl, [r9, #32]                                 
  rtems_filesystem_eval_path_context_t *ctx,                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  ctx->token = token;                                                 
    b334:	e589b008 	str	fp, [r9, #8]                                  
  ctx->tokenlen = tokenlen;                                           
    b338:	e589800c 	str	r8, [r9, #12]                                 
                                                                      
static inline void rtems_filesystem_eval_path_clear_path(             
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->pathlen = 0;                                                   
    b33c:	e5893004 	str	r3, [r9, #4]                                  
    b340:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    rtems_filesystem_eval_path_get_pathlen(ctx),                      
    &free_node                                                        
  );                                                                  
  int eval_flags = rtems_filesystem_eval_path_get_flags(ctx);         
                                                                      
  if (node != NULL) {                                                 
    b344:	e1a0a003 	mov	sl, r3                                        
    b348:	eafffff1 	b	b314 <devFS_eval_path+0xd0>                     
        rtems_filesystem_eval_path_clear_path(ctx);                   
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOSPC);                
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    b34c:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
    b350:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    }                                                                 
  }                                                                   
}                                                                     
    b354:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          <== NOT EXECUTED
        rtems_filesystem_eval_path_clear_path(ctx);                   
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOSPC);                
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    b358:	eaffe45e 	b	44d8 <rtems_filesystem_eval_path_error>         <== NOT EXECUTED
          rtems_filesystem_eval_path_get_path(ctx),                   
          rtems_filesystem_eval_path_get_pathlen(ctx)                 
        );                                                            
        rtems_filesystem_eval_path_clear_path(ctx);                   
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOSPC);                
    b35c:	e1a00009 	mov	r0, r9                                        
    b360:	e3a0101c 	mov	r1, #28                                       
      }                                                               
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ENOENT);                  
    }                                                                 
  }                                                                   
}                                                                     
    b364:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          
          rtems_filesystem_eval_path_get_path(ctx),                   
          rtems_filesystem_eval_path_get_pathlen(ctx)                 
        );                                                            
        rtems_filesystem_eval_path_clear_path(ctx);                   
      } else {                                                        
        rtems_filesystem_eval_path_error(ctx, ENOSPC);                
    b368:	eaffe45a 	b	44d8 <rtems_filesystem_eval_path_error>         
                                                                      

0000264c <disk_unlock>: static void disk_unlock(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; diskdevs_protected = false;
    264c:	e59f3020 	ldr	r3, [pc, #32]	; 2674 <disk_unlock+0x28>       
    2650:	e3a02000 	mov	r2, #0                                        
  }                                                                   
}                                                                     
                                                                      
static void                                                           
disk_unlock(void)                                                     
{                                                                     
    2654:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  diskdevs_protected = false;                                         
                                                                      
  sc = rtems_semaphore_release(diskdevs_mutex);                       
    2658:	e5930008 	ldr	r0, [r3, #8]                                  
static void                                                           
disk_unlock(void)                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  diskdevs_protected = false;                                         
    265c:	e5c3200c 	strb	r2, [r3, #12]                                
                                                                      
  sc = rtems_semaphore_release(diskdevs_mutex);                       
    2660:	eb001567 	bl	7c04 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2664:	e3500000 	cmp	r0, #0                                        
    2668:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    /* FIXME: Error number */                                         
    rtems_fatal_error_occurred(0xdeadbeef);                           
    266c:	e59f0004 	ldr	r0, [pc, #4]	; 2678 <disk_unlock+0x2c>        <== NOT EXECUTED
    2670:	eb0016dd 	bl	81ec <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

000040ac <drainOutput.part.0>: /* * Drain output queue */ static void drainOutput (struct rtems_termios_tty *tty)
    40ac:	e92d4030 	push	{r4, r5, lr}                                 
    40b0:	e1a04000 	mov	r4, r0                                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    40b4:	e10f3000 	mrs	r3, CPSR                                      
    40b8:	e3832080 	orr	r2, r3, #128	; 0x80                           
    40bc:	e129f002 	msr	CPSR_fc, r2                                   
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    rtems_interrupt_disable (level);                                  
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
    40c0:	e5901084 	ldr	r1, [r0, #132]	; 0x84                         
    40c4:	e5902080 	ldr	r2, [r0, #128]	; 0x80                         
    40c8:	e1510002 	cmp	r1, r2                                        
    40cc:	0a00000f 	beq	4110 <drainOutput.part.0+0x64>                
      tty->rawOutBufState = rob_wait;                                 
    40d0:	e3a05002 	mov	r5, #2                                        <== NOT EXECUTED
    40d4:	e5845094 	str	r5, [r4, #148]	; 0x94                         <== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    40d8:	e129f003 	msr	CPSR_fc, r3                                   <== NOT EXECUTED
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
    40dc:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
    40e0:	e594008c 	ldr	r0, [r4, #140]	; 0x8c                         <== NOT EXECUTED
    40e4:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
    40e8:	eb000941 	bl	65f4 <rtems_semaphore_obtain>                  <== NOT EXECUTED
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
    40ec:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    40f0:	1a000008 	bne	4118 <drainOutput.part.0+0x6c>                <== NOT EXECUTED
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    40f4:	e10f3000 	mrs	r3, CPSR                                      <== NOT EXECUTED
    40f8:	e3832080 	orr	r2, r3, #128	; 0x80                           <== NOT EXECUTED
    40fc:	e129f002 	msr	CPSR_fc, r2                                   <== NOT EXECUTED
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    rtems_interrupt_disable (level);                                  
    while (tty->rawOutBuf.Tail != tty->rawOutBuf.Head) {              
    4100:	e5941084 	ldr	r1, [r4, #132]	; 0x84                         <== NOT EXECUTED
    4104:	e5942080 	ldr	r2, [r4, #128]	; 0x80                         <== NOT EXECUTED
    4108:	e1510002 	cmp	r1, r2                                        <== NOT EXECUTED
    410c:	1afffff0 	bne	40d4 <drainOutput.part.0+0x28>                <== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4110:	e129f003 	msr	CPSR_fc, r3                                   
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    rtems_interrupt_enable (level);                                   
  }                                                                   
}                                                                     
    4114:	e8bd8030 	pop	{r4, r5, pc}                                  
      tty->rawOutBufState = rob_wait;                                 
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    4118:	eb000b0f 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

00004eec <erase>: * FIXME: Some of the tests should check for IEXTEN, too. */ static void erase (struct rtems_termios_tty *tty, int lineFlag) { if (tty->ccount == 0)
    4eec:	e5903020 	ldr	r3, [r0, #32]                                 
    4ef0:	e3530000 	cmp	r3, #0                                        
 * FIXME: Needs support for WERASE and ECHOPRT.                       
 * FIXME: Some of the tests should check for IEXTEN, too.             
 */                                                                   
static void                                                           
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
    4ef4:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    4ef8:	e1a04000 	mov	r4, r0                                        
    4efc:	e1a06001 	mov	r6, r1                                        
  if (tty->ccount == 0)                                               
    4f00:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
    4f04:	e590103c 	ldr	r1, [r0, #60]	; 0x3c                          
static void                                                           
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    4f08:	e3560000 	cmp	r6, #0                                        
    4f0c:	02012008 	andeq	r2, r1, #8                                  
    4f10:	1a000026 	bne	4fb0 <erase+0xc4>                             
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
    4f14:	e59f71d8 	ldr	r7, [pc, #472]	; 50f4 <erase+0x208>           
    4f18:	ea000008 	b	4f40 <erase+0x54>                               
    4f1c:	e3110c02 	tst	r1, #512	; 0x200                              <== NOT EXECUTED
    4f20:	1a00005b 	bne	5094 <erase+0x1a8>                            <== NOT EXECUTED
          if (tty->column)                                            
            tty->column--;                                            
        }                                                             
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
    4f24:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
    4f28:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                <== NOT EXECUTED
        echo ('\n', tty);                                             
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
    4f2c:	e5943020 	ldr	r3, [r4, #32]                                 
    4f30:	e3530000 	cmp	r3, #0                                        
    4f34:	0a000055 	beq	5090 <erase+0x1a4>                            
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
      tty->ccount = 0;                                                
      echo (tty->termios.c_cc[VKILL], tty);                           
      if (tty->termios.c_lflag & ECHOK)                               
        echo ('\n', tty);                                             
    4f38:	e594103c 	ldr	r1, [r4, #60]	; 0x3c                          
    4f3c:	e2012008 	and	r2, r1, #8                                    
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
    4f40:	e2433001 	sub	r3, r3, #1                                    
    4f44:	e594001c 	ldr	r0, [r4, #28]                                 
    4f48:	e5843020 	str	r3, [r4, #32]                                 
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
    4f4c:	e3520000 	cmp	r2, #0                                        
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
    4f50:	e7d05003 	ldrb	r5, [r0, r3]                                 
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
    4f54:	0afffff2 	beq	4f24 <erase+0x38>                             
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
    4f58:	e3560000 	cmp	r6, #0                                        
    4f5c:	1a000001 	bne	4f68 <erase+0x7c>                             
    4f60:	e3110010 	tst	r1, #16                                       
    4f64:	0a000045 	beq	5080 <erase+0x194>                            
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
    4f68:	e3550009 	cmp	r5, #9                                        
    4f6c:	0a00001f 	beq	4ff0 <erase+0x104>                            
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
    4f70:	e5973000 	ldr	r3, [r7]                                      
    4f74:	e2855001 	add	r5, r5, #1                                    
    4f78:	e7d33005 	ldrb	r3, [r3, r5]                                 
    4f7c:	e3130020 	tst	r3, #32                                       
    4f80:	1affffe5 	bne	4f1c <erase+0x30>                             
          rtems_termios_puts ("\b \b", 3, tty);                       
          if (tty->column)                                            
            tty->column--;                                            
        }                                                             
        if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {       
          rtems_termios_puts ("\b \b", 3, tty);                       
    4f84:	e59f016c 	ldr	r0, [pc, #364]	; 50f8 <erase+0x20c>           
    4f88:	e3a01003 	mov	r1, #3                                        
    4f8c:	e1a02004 	mov	r2, r4                                        
    4f90:	ebffff11 	bl	4bdc <rtems_termios_puts>                      
          if (tty->column)                                            
    4f94:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    4f98:	e3530000 	cmp	r3, #0                                        
            tty->column--;                                            
    4f9c:	12433001 	subne	r3, r3, #1                                  
    4fa0:	15843028 	strne	r3, [r4, #40]	; 0x28                        
        }                                                             
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
    4fa4:	e3560000 	cmp	r6, #0                                        
    4fa8:	1affffdf 	bne	4f2c <erase+0x40>                             
    4fac:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
    4fb0:	e2112008 	ands	r2, r1, #8                                   
      tty->ccount = 0;                                                
    4fb4:	05802020 	streq	r2, [r0, #32]                               
erase (struct rtems_termios_tty *tty, int lineFlag)                   
{                                                                     
  if (tty->ccount == 0)                                               
    return;                                                           
  if (lineFlag) {                                                     
    if (!(tty->termios.c_lflag & ECHO)) {                             
    4fb8:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
      tty->ccount = 0;                                                
      return;                                                         
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
    4fbc:	e2110010 	ands	r0, r1, #16                                  
    4fc0:	1affffd3 	bne	4f14 <erase+0x28>                             
      tty->ccount = 0;                                                
    4fc4:	e5840020 	str	r0, [r4, #32]                                 <== NOT EXECUTED
      echo (tty->termios.c_cc[VKILL], tty);                           
    4fc8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    4fcc:	e5d40044 	ldrb	r0, [r4, #68]	; 0x44                         <== NOT EXECUTED
    4fd0:	ebffffa0 	bl	4e58 <echo>                                    <== NOT EXECUTED
      if (tty->termios.c_lflag & ECHOK)                               
    4fd4:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          <== NOT EXECUTED
    4fd8:	e3130020 	tst	r3, #32                                       <== NOT EXECUTED
    4fdc:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                <== NOT EXECUTED
        echo ('\n', tty);                                             
    4fe0:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
    4fe4:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
      break;                                                          
  }                                                                   
}                                                                     
    4fe8:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  <== NOT EXECUTED
    }                                                                 
    if (!(tty->termios.c_lflag & ECHOE)) {                            
      tty->ccount = 0;                                                
      echo (tty->termios.c_cc[VKILL], tty);                           
      if (tty->termios.c_lflag & ECHOK)                               
        echo ('\n', tty);                                             
    4fec:	eaffff99 	b	4e58 <echo>                                     <== NOT EXECUTED
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
    4ff0:	e3530000 	cmp	r3, #0                                        
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
        int col = tty->read_start_column;                             
    4ff4:	e594502c 	ldr	r5, [r4, #44]	; 0x2c                          
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
    4ff8:	0a000011 	beq	5044 <erase+0x158>                            
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
    4ffc:	e5978000 	ldr	r8, [r7]                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
      } else if (c == '\t') {                                         
        int col = tty->read_start_column;                             
        int i = 0;                                                    
    5000:	e3a02000 	mov	r2, #0                                        
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
            if (tty->termios.c_lflag & ECHOCTL)                       
    5004:	e201ac02 	and	sl, r1, #512	; 0x200                          
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
    5008:	e7d01002 	ldrb	r1, [r0, r2]                                 
          if (c == '\t') {                                            
    500c:	e3510009 	cmp	r1, #9                                        
            col = (col | 7) + 1;                                      
    5010:	03855007 	orreq	r5, r5, #7                                  
          } else if (iscntrl (c)) {                                   
    5014:	e088c001 	add	ip, r8, r1                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
    5018:	e2822001 	add	r2, r2, #1                                    
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
    501c:	02855001 	addeq	r5, r5, #1                                  
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
    5020:	0a000005 	beq	503c <erase+0x150>                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
    5024:	e5dcc001 	ldrb	ip, [ip, #1]                                 
    5028:	e31c0020 	tst	ip, #32                                       
            if (tty->termios.c_lflag & ECHOCTL)                       
              col += 2;                                               
          } else {                                                    
            col++;                                                    
    502c:	02855001 	addeq	r5, r5, #1                                  
         */                                                           
        while (i != tty->ccount) {                                    
          c = tty->cbuf[i++];                                         
          if (c == '\t') {                                            
            col = (col | 7) + 1;                                      
          } else if (iscntrl (c)) {                                   
    5030:	0a000001 	beq	503c <erase+0x150>                            
            if (tty->termios.c_lflag & ECHOCTL)                       
    5034:	e35a0000 	cmp	sl, #0                                        <== NOT EXECUTED
              col += 2;                                               
    5038:	12855002 	addne	r5, r5, #2                                  <== NOT EXECUTED
        int i = 0;                                                    
                                                                      
        /*                                                            
         * Find the character before the tab                          
         */                                                           
        while (i != tty->ccount) {                                    
    503c:	e1530002 	cmp	r3, r2                                        
    5040:	1afffff0 	bne	5008 <erase+0x11c>                            
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
    5044:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    5048:	e1550003 	cmp	r5, r3                                        
    504c:	aaffffb4 	bge	4f24 <erase+0x38>                             
          rtems_termios_puts ("\b", 1, tty);                          
    5050:	e59f00a4 	ldr	r0, [pc, #164]	; 50fc <erase+0x210>           
    5054:	e3a01001 	mov	r1, #1                                        
    5058:	e1a02004 	mov	r2, r4                                        
    505c:	ebfffede 	bl	4bdc <rtems_termios_puts>                      
          tty->column--;                                              
    5060:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    5064:	e2433001 	sub	r3, r3, #1                                    
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
    5068:	e1530005 	cmp	r3, r5                                        
          rtems_termios_puts ("\b", 1, tty);                          
          tty->column--;                                              
    506c:	e5843028 	str	r3, [r4, #40]	; 0x28                          
        }                                                             
                                                                      
        /*                                                            
         * Back up over the tab                                       
         */                                                           
        while (tty->column > col) {                                   
    5070:	cafffff6 	bgt	5050 <erase+0x164>                            
          if (tty->column)                                            
            tty->column--;                                            
        }                                                             
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
    5074:	e3560000 	cmp	r6, #0                                        
    5078:	1affffab 	bne	4f2c <erase+0x40>                             
    507c:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
    5080:	e5d40043 	ldrb	r0, [r4, #67]	; 0x43                         <== NOT EXECUTED
    5084:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
      }                                                               
    }                                                                 
    if (!lineFlag)                                                    
      break;                                                          
  }                                                                   
}                                                                     
    5088:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  <== NOT EXECUTED
  while (tty->ccount) {                                               
    unsigned char c = tty->cbuf[--tty->ccount];                       
                                                                      
    if (tty->termios.c_lflag & ECHO) {                                
      if (!lineFlag && !(tty->termios.c_lflag & ECHOE)) {             
        echo (tty->termios.c_cc[VERASE], tty);                        
    508c:	eaffff71 	b	4e58 <echo>                                     <== NOT EXECUTED
    5090:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
          tty->column--;                                              
        }                                                             
      }                                                               
      else {                                                          
        if (iscntrl (c) && (tty->termios.c_lflag & ECHOCTL)) {        
          rtems_termios_puts ("\b \b", 3, tty);                       
    5094:	e59f005c 	ldr	r0, [pc, #92]	; 50f8 <erase+0x20c>            <== NOT EXECUTED
    5098:	e3a01003 	mov	r1, #3                                        <== NOT EXECUTED
    509c:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
    50a0:	ebfffecd 	bl	4bdc <rtems_termios_puts>                      <== NOT EXECUTED
          if (tty->column)                                            
    50a4:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          <== NOT EXECUTED
    50a8:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
            tty->column--;                                            
    50ac:	12433001 	subne	r3, r3, #1                                  <== NOT EXECUTED
    50b0:	15843028 	strne	r3, [r4, #40]	; 0x28                        <== NOT EXECUTED
        }                                                             
        if (!iscntrl (c) || (tty->termios.c_lflag & ECHOCTL)) {       
    50b4:	e5973000 	ldr	r3, [r7]                                      <== NOT EXECUTED
    50b8:	e7d33005 	ldrb	r3, [r3, r5]                                 <== NOT EXECUTED
    50bc:	e3130020 	tst	r3, #32                                       <== NOT EXECUTED
    50c0:	0affffaf 	beq	4f84 <erase+0x98>                             <== NOT EXECUTED
    50c4:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          <== NOT EXECUTED
    50c8:	e3130c02 	tst	r3, #512	; 0x200                              <== NOT EXECUTED
    50cc:	0affff94 	beq	4f24 <erase+0x38>                             <== NOT EXECUTED
          rtems_termios_puts ("\b \b", 3, tty);                       
    50d0:	e59f0020 	ldr	r0, [pc, #32]	; 50f8 <erase+0x20c>            <== NOT EXECUTED
    50d4:	e3a01003 	mov	r1, #3                                        <== NOT EXECUTED
    50d8:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
    50dc:	ebfffebe 	bl	4bdc <rtems_termios_puts>                      <== NOT EXECUTED
          if (tty->column)                                            
    50e0:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          <== NOT EXECUTED
    50e4:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
            tty->column--;                                            
    50e8:	12433001 	subne	r3, r3, #1                                  <== NOT EXECUTED
    50ec:	15843028 	strne	r3, [r4, #40]	; 0x28                        <== NOT EXECUTED
    50f0:	eaffffab 	b	4fa4 <erase+0xb8>                               <== NOT EXECUTED
                                                                      

00011ff0 <fat_buf_access>: int fat_buf_access(fat_fs_info_t *fs_info, const uint32_t sec_num, const int op_type, uint8_t **sec_buf) {
   11ff0:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
   11ff4:	e1a04000 	mov	r4, r0                                        
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   11ff8:	e5d06002 	ldrb	r6, [r0, #2]                                 
   11ffc:	e5d0700c 	ldrb	r7, [r0, #12]                                
                                                         sec_num);    
    uint32_t          blk_ofs = fat_sector_offset_to_block_offset (fs_info,
                                                                   sec_num,
                                                                   0);
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
   12000:	e5d00089 	ldrb	r0, [r0, #137]	; 0x89                        
   12004:	e0667007 	rsb	r7, r6, r7                                    
   12008:	e3500000 	cmp	r0, #0                                        
int                                                                   
fat_buf_access(fat_fs_info_t   *fs_info,                              
               const uint32_t   sec_num,                              
               const int        op_type,                              
               uint8_t        **sec_buf)                              
{                                                                     
   1200c:	e1a05001 	mov	r5, r1                                        
   12010:	e1a09002 	mov	r9, r2                                        
   12014:	e1a0a003 	mov	sl, r3                                        
   12018:	e1a08731 	lsr	r8, r1, r7                                    
                                                         sec_num);    
    uint32_t          blk_ofs = fat_sector_offset_to_block_offset (fs_info,
                                                                   sec_num,
                                                                   0);
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
   1201c:	0a000002 	beq	1202c <fat_buf_access+0x3c>                   
   12020:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         
   12024:	e1530001 	cmp	r3, r1                                        
   12028:	0a00000d 	beq	12064 <fat_buf_access+0x74>                   
    {                                                                 
        fat_buf_release(fs_info);                                     
   1202c:	e1a00004 	mov	r0, r4                                        
   12030:	ebffff85 	bl	11e4c <fat_buf_release>                        
                                                                      
        if (op_type == FAT_OP_TYPE_READ)                              
   12034:	e3590001 	cmp	r9, #1                                        
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
   12038:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
   1203c:	e1a01008 	mov	r1, r8                                        
   12040:	e284208c 	add	r2, r4, #140	; 0x8c                           
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
    {                                                                 
        fat_buf_release(fs_info);                                     
                                                                      
        if (op_type == FAT_OP_TYPE_READ)                              
   12044:	0a00000d 	beq	12080 <fat_buf_access+0x90>                   
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
        else                                                          
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
   12048:	ebfff763 	bl	fddc <rtems_bdbuf_get>                         
        if (sc != RTEMS_SUCCESSFUL)                                   
   1204c:	e3500000 	cmp	r0, #0                                        
   12050:	1a00000c 	bne	12088 <fat_buf_access+0x98>                   
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.blk_num = sec_num;                                 
        fs_info->c.modified = 0;                                      
        fs_info->c.state = FAT_CACHE_ACTUAL;                          
   12054:	e3a03001 	mov	r3, #1                                        
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
        else                                                          
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.blk_num = sec_num;                                 
   12058:	e5845084 	str	r5, [r4, #132]	; 0x84                         
        fs_info->c.modified = 0;                                      
   1205c:	e5c40088 	strb	r0, [r4, #136]	; 0x88                        
        fs_info->c.state = FAT_CACHE_ACTUAL;                          
   12060:	e5c43089 	strb	r3, [r4, #137]	; 0x89                        
 fat_sector_offset_to_block_offset (const fat_fs_info_t *fs_info,     
                                    const uint32_t sector,            
                                    const uint32_t sector_offset)     
{                                                                     
  return sector_offset +                                              
           ((sector -                                                 
   12064:	e0455718 	sub	r5, r5, r8, lsl r7                            
    }                                                                 
    *sec_buf = &fs_info->c.buf->buffer[blk_ofs];                      
   12068:	e594308c 	ldr	r3, [r4, #140]	; 0x8c                         
   1206c:	e593301c 	ldr	r3, [r3, #28]                                 
   12070:	e0836615 	add	r6, r3, r5, lsl r6                            
    return RC_OK;                                                     
   12074:	e3a00000 	mov	r0, #0                                        
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.blk_num = sec_num;                                 
        fs_info->c.modified = 0;                                      
        fs_info->c.state = FAT_CACHE_ACTUAL;                          
    }                                                                 
    *sec_buf = &fs_info->c.buf->buffer[blk_ofs];                      
   12078:	e58a6000 	str	r6, [sl]                                      
    return RC_OK;                                                     
}                                                                     
   1207c:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
    if (fs_info->c.state == FAT_CACHE_EMPTY || fs_info->c.blk_num != sec_num)
    {                                                                 
        fat_buf_release(fs_info);                                     
                                                                      
        if (op_type == FAT_OP_TYPE_READ)                              
            sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &fs_info->c.buf);
   12080:	ebfff793 	bl	fed4 <rtems_bdbuf_read>                        
   12084:	eafffff0 	b	1204c <fat_buf_access+0x5c>                     
        else                                                          
            sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &fs_info->c.buf);
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
   12088:	eb001e09 	bl	198b4 <__errno>                                <== NOT EXECUTED
   1208c:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   12090:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12094:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12098:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              <== NOT EXECUTED
                                                                      

00011e4c <fat_buf_release>: return RC_OK; } int fat_buf_release(fat_fs_info_t *fs_info) {
   11e4c:	e92d4070 	push	{r4, r5, r6, lr}                             
   11e50:	e1a04000 	mov	r4, r0                                        
    rtems_status_code sc = RTEMS_SUCCESSFUL;                          
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY)                          
   11e54:	e5d00089 	ldrb	r0, [r0, #137]	; 0x89                        
   11e58:	e3500000 	cmp	r0, #0                                        
    return RC_OK;                                                     
}                                                                     
                                                                      
int                                                                   
fat_buf_release(fat_fs_info_t *fs_info)                               
{                                                                     
   11e5c:	e24dd004 	sub	sp, sp, #4                                    
    rtems_status_code sc = RTEMS_SUCCESSFUL;                          
                                                                      
    if (fs_info->c.state == FAT_CACHE_EMPTY)                          
   11e60:	0a000047 	beq	11f84 <fat_buf_release+0x138>                 
        return RC_OK;                                                 
                                                                      
    if (fs_info->c.modified)                                          
   11e64:	e5d43088 	ldrb	r3, [r4, #136]	; 0x88                        
   11e68:	e3530000 	cmp	r3, #0                                        
   11e6c:	0a00003c 	beq	11f64 <fat_buf_release+0x118>                 
    {                                                                 
        uint32_t sec_num = fs_info->c.blk_num;                        
   11e70:	e5942084 	ldr	r2, [r4, #132]	; 0x84                         
        bool     sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&   
   11e74:	e1d431b8 	ldrh	r3, [r4, #24]                                
   11e78:	e1520003 	cmp	r2, r3                                        
   11e7c:	3a000002 	bcc	11e8c <fat_buf_release+0x40>                  
   11e80:	e5943020 	ldr	r3, [r4, #32]                                 
   11e84:	e1520003 	cmp	r2, r3                                        
   11e88:	3a000042 	bcc	11f98 <fat_buf_release+0x14c>                 
   11e8c:	e3a05000 	mov	r5, #0                                        
        if (sec_of_fat && !fs_info->vol.mirror)                       
            memcpy(fs_info->sec_buf,                                  
                   fs_info->c.buf->buffer + blk_ofs,                  
                   fs_info->vol.bps);                                 
                                                                      
        sc = rtems_bdbuf_release_modified(fs_info->c.buf);            
   11e90:	e594008c 	ldr	r0, [r4, #140]	; 0x8c                         
   11e94:	ebfff8b8 	bl	1017c <rtems_bdbuf_release_modified>           
        if (sc != RTEMS_SUCCESSFUL)                                   
   11e98:	e3500000 	cmp	r0, #0                                        
   11e9c:	1a000034 	bne	11f74 <fat_buf_release+0x128>                 
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.modified = 0;                                      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
   11ea0:	e3550000 	cmp	r5, #0                                        
                   fs_info->vol.bps);                                 
                                                                      
        sc = rtems_bdbuf_release_modified(fs_info->c.buf);            
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
        fs_info->c.modified = 0;                                      
   11ea4:	e5c40088 	strb	r0, [r4, #136]	; 0x88                        
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
   11ea8:	0a000037 	beq	11f8c <fat_buf_release+0x140>                 
   11eac:	e5d43054 	ldrb	r3, [r4, #84]	; 0x54                         
   11eb0:	e3530000 	cmp	r3, #0                                        
   11eb4:	1a000034 	bne	11f8c <fat_buf_release+0x140>                 
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
   11eb8:	e5d4300d 	ldrb	r3, [r4, #13]                                
   11ebc:	e3530001 	cmp	r3, #1                                        
   11ec0:	9a000031 	bls	11f8c <fat_buf_release+0x140>                 
   11ec4:	e3a05001 	mov	r5, #1                                        
   11ec8:	ea000013 	b	11f1c <fat_buf_release+0xd0>                    
                {                                                     
                    sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);  
                }                                                     
                else                                                  
                {                                                     
                    sc = rtems_bdbuf_read(fs_info->vol.dd, blk, &bd); 
   11ecc:	e1a0200d 	mov	r2, sp                                        
   11ed0:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
   11ed4:	ebfff7fe 	bl	fed4 <rtems_bdbuf_read>                        
                }                                                     
                if ( sc != RTEMS_SUCCESSFUL)                          
   11ed8:	e3500000 	cmp	r0, #0                                        
   11edc:	1a00003e 	bne	11fdc <fat_buf_release+0x190>                 
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
   11ee0:	e59d3000 	ldr	r3, [sp]                                      
   11ee4:	e593001c 	ldr	r0, [r3, #28]                                 
   11ee8:	e5941090 	ldr	r1, [r4, #144]	; 0x90                         
   11eec:	e1d420b0 	ldrh	r2, [r4]                                     
   11ef0:	e0800006 	add	r0, r0, r6                                    
   11ef4:	eb002115 	bl	1a350 <memcpy>                                 
                sc = rtems_bdbuf_release_modified(bd);                
   11ef8:	e59d0000 	ldr	r0, [sp]                                      
   11efc:	ebfff89e 	bl	1017c <rtems_bdbuf_release_modified>           
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
   11f00:	e2855001 	add	r5, r5, #1                                    
                }                                                     
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
                sc = rtems_bdbuf_release_modified(bd);                
                if ( sc != RTEMS_SUCCESSFUL)                          
   11f04:	e3500000 	cmp	r0, #0                                        
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
   11f08:	e20550ff 	and	r5, r5, #255	; 0xff                           
                }                                                     
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
                sc = rtems_bdbuf_release_modified(bd);                
                if ( sc != RTEMS_SUCCESSFUL)                          
   11f0c:	1a000032 	bne	11fdc <fat_buf_release+0x190>                 
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
        {                                                             
            uint8_t i;                                                
                                                                      
            for (i = 1; i < fs_info->vol.fats; i++)                   
   11f10:	e5d4300d 	ldrb	r3, [r4, #13]                                
   11f14:	e1530005 	cmp	r3, r5                                        
   11f18:	9a00001b 	bls	11f8c <fat_buf_release+0x140>                 
            {                                                         
                rtems_bdbuf_buffer *bd;                               
                                                                      
                sec_num = fs_info->c.blk_num + fs_info->vol.fat_length * i,
   11f1c:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         
   11f20:	e594601c 	ldr	r6, [r4, #28]                                 
   11f24:	e0263695 	mla	r6, r5, r6, r3                                
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   11f28:	e5d4200c 	ldrb	r2, [r4, #12]                                
   11f2c:	e5d43002 	ldrb	r3, [r4, #2]                                 
   11f30:	e0632002 	rsb	r2, r3, r2                                    
   11f34:	e1a01236 	lsr	r1, r6, r2                                    
 fat_sector_offset_to_block_offset (const fat_fs_info_t *fs_info,     
                                    const uint32_t sector,            
                                    const uint32_t sector_offset)     
{                                                                     
  return sector_offset +                                              
           ((sector -                                                 
   11f38:	e0466211 	sub	r6, r6, r1, lsl r2                            
                blk = fat_sector_num_to_block_num(fs_info, sec_num);  
                blk_ofs = fat_sector_offset_to_block_offset(fs_info,  
                                                            sec_num,  
                                                            0);       
                                                                      
                if (blk_ofs == 0                                      
   11f3c:	e1b06316 	lsls	r6, r6, r3                                   
   11f40:	1affffe1 	bne	11ecc <fat_buf_release+0x80>                  
                    && fs_info->vol.bps == fs_info->vol.bytes_per_block)
   11f44:	e1d420b0 	ldrh	r2, [r4]                                     
   11f48:	e1d430ba 	ldrh	r3, [r4, #10]                                
   11f4c:	e1520003 	cmp	r2, r3                                        
   11f50:	1affffdd 	bne	11ecc <fat_buf_release+0x80>                  
                {                                                     
                    sc = rtems_bdbuf_get(fs_info->vol.dd, blk, &bd);  
   11f54:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
   11f58:	e1a0200d 	mov	r2, sp                                        
   11f5c:	ebfff79e 	bl	fddc <rtems_bdbuf_get>                         
   11f60:	eaffffdc 	b	11ed8 <fat_buf_release+0x8c>                    
            }                                                         
        }                                                             
    }                                                                 
    else                                                              
    {                                                                 
        sc = rtems_bdbuf_release(fs_info->c.buf);                     
   11f64:	e594008c 	ldr	r0, [r4, #140]	; 0x8c                         
   11f68:	ebfff852 	bl	100b8 <rtems_bdbuf_release>                    
        if (sc != RTEMS_SUCCESSFUL)                                   
   11f6c:	e3500000 	cmp	r0, #0                                        
   11f70:	0a000005 	beq	11f8c <fat_buf_release+0x140>                 
            rtems_set_errno_and_return_minus_one(EIO);                
   11f74:	eb001e4e 	bl	198b4 <__errno>                                <== NOT EXECUTED
   11f78:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   11f7c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   11f80:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    }                                                                 
    fs_info->c.state = FAT_CACHE_EMPTY;                               
    return RC_OK;                                                     
}                                                                     
   11f84:	e28dd004 	add	sp, sp, #4                                    
   11f88:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    {                                                                 
        sc = rtems_bdbuf_release(fs_info->c.buf);                     
        if (sc != RTEMS_SUCCESSFUL)                                   
            rtems_set_errno_and_return_minus_one(EIO);                
    }                                                                 
    fs_info->c.state = FAT_CACHE_EMPTY;                               
   11f8c:	e3a00000 	mov	r0, #0                                        
   11f90:	e5c40089 	strb	r0, [r4, #137]	; 0x89                        
   11f94:	eafffffa 	b	11f84 <fat_buf_release+0x138>                   
        uint32_t blk = fat_sector_num_to_block_num(fs_info, sec_num); 
        uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info, 
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
   11f98:	e5d43054 	ldrb	r3, [r4, #84]	; 0x54                         
   11f9c:	e3530000 	cmp	r3, #0                                        
    uint32_t                              ino                         
    )                                                                 
{                                                                     
                                                                      
    return (ino >= fs_info->uino_base);                               
}                                                                     
   11fa0:	e5d4100c 	ldrb	r1, [r4, #12]                                
   11fa4:	e5d43002 	ldrb	r3, [r4, #2]                                 
        return RC_OK;                                                 
                                                                      
    if (fs_info->c.modified)                                          
    {                                                                 
        uint32_t sec_num = fs_info->c.blk_num;                        
        bool     sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&   
   11fa8:	13a05001 	movne	r5, #1                                      
        uint32_t blk = fat_sector_num_to_block_num(fs_info, sec_num); 
        uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info, 
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
   11fac:	1affffb7 	bne	11e90 <fat_buf_release+0x44>                  
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   11fb0:	e0631001 	rsb	r1, r3, r1                                    
   11fb4:	e1a00132 	lsr	r0, r2, r1                                    
 fat_sector_offset_to_block_offset (const fat_fs_info_t *fs_info,     
                                    const uint32_t sector,            
                                    const uint32_t sector_offset)     
{                                                                     
  return sector_offset +                                              
           ((sector -                                                 
   11fb8:	e0421110 	sub	r1, r2, r0, lsl r1                            
            memcpy(fs_info->sec_buf,                                  
                   fs_info->c.buf->buffer + blk_ofs,                  
   11fbc:	e594208c 	ldr	r2, [r4, #140]	; 0x8c                         
        uint32_t blk_ofs = fat_sector_offset_to_block_offset(fs_info, 
                                                             sec_num, 
                                                             0);      
                                                                      
        if (sec_of_fat && !fs_info->vol.mirror)                       
            memcpy(fs_info->sec_buf,                                  
   11fc0:	e592201c 	ldr	r2, [r2, #28]                                 
   11fc4:	e5940090 	ldr	r0, [r4, #144]	; 0x90                         
   11fc8:	e0821311 	add	r1, r2, r1, lsl r3                            
   11fcc:	e1d420b0 	ldrh	r2, [r4]                                     
   11fd0:	eb0020de 	bl	1a350 <memcpy>                                 
        return RC_OK;                                                 
                                                                      
    if (fs_info->c.modified)                                          
    {                                                                 
        uint32_t sec_num = fs_info->c.blk_num;                        
        bool     sec_of_fat = ((sec_num >= fs_info->vol.fat_loc) &&   
   11fd4:	e3a05001 	mov	r5, #1                                        
   11fd8:	eaffffac 	b	11e90 <fat_buf_release+0x44>                    
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
                memcpy(bd->buffer + blk_ofs, fs_info->sec_buf, fs_info->vol.bps);
                sc = rtems_bdbuf_release_modified(bd);                
                if ( sc != RTEMS_SUCCESSFUL)                          
                    rtems_set_errno_and_return_minus_one(ENOMEM);     
   11fdc:	eb001e34 	bl	198b4 <__errno>                                <== NOT EXECUTED
   11fe0:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   11fe4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   11fe8:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   11fec:	eaffffe4 	b	11f84 <fat_buf_release+0x138>                   <== NOT EXECUTED
                                                                      

000121e4 <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) {
   121e4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
   121e8:	e1d070b6 	ldrh	r7, [r0, #6]                                 
   121ec:	e0627007 	rsb	r7, r2, r7                                    
     fat_fs_info_t                        *fs_info,                   
     const uint32_t                        start_cln,                 
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
   121f0:	e24dd004 	sub	sp, sp, #4                                    
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
   121f4:	e1530007 	cmp	r3, r7                                        
   121f8:	31a07003 	movcc	r7, r3                                      
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,           
                              uint32_t             cln)               
{                                                                     
    uint32_t blk;                                                     
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   121fc:	e3510000 	cmp	r1, #0                                        
     fat_fs_info_t                        *fs_info,                   
     const uint32_t                        start_cln,                 
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
   12200:	e1a04000 	mov	r4, r0                                        
   12204:	e5ddb028 	ldrb	fp, [sp, #40]	; 0x28                         
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,           
                              uint32_t             cln)               
{                                                                     
    uint32_t blk;                                                     
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   12208:	1a000002 	bne	12218 <fat_cluster_set+0x34>                  
   1220c:	e5d0300e 	ldrb	r3, [r0, #14]                                <== NOT EXECUTED
   12210:	e3130003 	tst	r3, #3                                        <== NOT EXECUTED
   12214:	1a000040 	bne	1231c <fat_cluster_set+0x138>                 <== NOT EXECUTED
        blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
    else                                                              
    {                                                                 
        cln -= FAT_RSRVD_CLN;                                         
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
   12218:	e5d4800c 	ldrb	r8, [r4, #12]                                
   1221c:	e5d43008 	ldrb	r3, [r4, #8]                                 
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
    else                                                              
    {                                                                 
        cln -= FAT_RSRVD_CLN;                                         
   12220:	e2411002 	sub	r1, r1, #2                                    
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
   12224:	e0683003 	rsb	r3, r8, r3                                    
   12228:	e1a01311 	lsl	r1, r1, r3                                    
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   1222c:	e5d4a002 	ldrb	sl, [r4, #2]                                 
   12230:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          
   12234:	e06aa008 	rsb	sl, sl, r8                                    
        blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);
   12238:	e081aa33 	add	sl, r1, r3, lsr sl                            
     const uint8_t                         pattern)                   
{                                                                     
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
   1223c:	e1a03832 	lsr	r3, r2, r8                                    
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
  ssize_t             bytes_written    = 0;                           
   12240:	e3a09000 	mov	r9, #0                                        
{                                                                     
  ssize_t             rc               = RC_OK;                       
  uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
  uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
  uint32_t            blocks_in_offset = offset >> fs_info->vol.bytes_per_block_log2;
  uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
   12244:	e0428813 	sub	r8, r2, r3, lsl r8                            
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
   12248:	e083a00a 	add	sl, r3, sl                                    
     const uint32_t                        start_cln,                 
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
  ssize_t             rc               = RC_OK;                       
   1224c:	e1a03009 	mov	r3, r9                                        
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
                                                                      
  while (   (RC_OK == rc)                                             
   12250:	ea000010 	b	12298 <fat_cluster_set+0xb4>                    
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
    {                                                                 
        if (bytes_to_write == fs_info->vol.bytes_per_block)           
   12254:	e1530005 	cmp	r3, r5                                        
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   12258:	e0621001 	rsb	r1, r2, r1                                    
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
   1225c:	e1a00004 	mov	r0, r4                                        
   12260:	03a02002 	moveq	r2, #2                                      
        }                                                             
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
   12264:	13a02001 	movne	r2, #1                                      
   12268:	e1a0111a 	lsl	r1, sl, r1                                    
   1226c:	e1a0300d 	mov	r3, sp                                        
   12270:	ebffff5e 	bl	11ff0 <fat_buf_access>                         
                                                                      
        if (RC_OK == rc)                                              
   12274:	e3500000 	cmp	r0, #0                                        
   12278:	0a000019 	beq	122e4 <fat_cluster_set+0x100>                 
        fs_info,                                                      
        cur_blk,                                                      
        ofs_blk,                                                      
        c,                                                            
        pattern);                                                     
    if (c != ret)                                                     
   1227c:	e1500006 	cmp	r0, r6                                        
      rc = -1;                                                        
    else                                                              
    {                                                                 
        bytes_to_write -= ret;                                        
   12280:	00607007 	rsbeq	r7, r0, r7                                  
        bytes_written  += ret;                                        
   12284:	00899000 	addeq	r9, r9, r0                                  
        ++cur_blk;                                                    
   12288:	028aa001 	addeq	sl, sl, #1                                  
   1228c:	03a03000 	moveq	r3, #0                                      
        cur_blk,                                                      
        ofs_blk,                                                      
        c,                                                            
        pattern);                                                     
    if (c != ret)                                                     
      rc = -1;                                                        
   12290:	13e03000 	mvnne	r3, #0                                      
    else                                                              
    {                                                                 
        bytes_to_write -= ret;                                        
        bytes_written  += ret;                                        
        ++cur_blk;                                                    
   12294:	e3a08000 	mov	r8, #0                                        
  ssize_t             bytes_written    = 0;                           
  ssize_t             ret;                                            
                                                                      
  cur_blk += blocks_in_offset;                                        
                                                                      
  while (   (RC_OK == rc)                                             
   12298:	e2832001 	add	r2, r3, #1                                    
   1229c:	e3570000 	cmp	r7, #0                                        
   122a0:	03a02000 	moveq	r2, #0                                      
   122a4:	12022001 	andne	r2, r2, #1                                  
   122a8:	e3520000 	cmp	r2, #0                                        
   122ac:	0a000015 	beq	12308 <fat_cluster_set+0x124>                 
         && (0 < bytes_to_write))                                     
  {                                                                   
    uint32_t c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));
   122b0:	e1d430ba 	ldrh	r3, [r4, #10]                                
   122b4:	e0685003 	rsb	r5, r8, r3                                    
   122b8:	e1550007 	cmp	r5, r7                                        
   122bc:	31a06005 	movcc	r6, r5                                      
   122c0:	21a06007 	movcs	r6, r7                                      
     const uint32_t                        offset,                    
     const uint32_t                        count,                     
     const uint8_t                         pattern)                   
{                                                                     
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
   122c4:	e1560005 	cmp	r6, r5                                        
   122c8:	31a05006 	movcc	r5, r6                                      
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
   122cc:	e3550000 	cmp	r5, #0                                        
    uint32_t                              ino                         
    )                                                                 
{                                                                     
                                                                      
    return (ino >= fs_info->uino_base);                               
}                                                                     
   122d0:	e5d42002 	ldrb	r2, [r4, #2]                                 
   122d4:	e5d4100c 	ldrb	r1, [r4, #12]                                
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
   122d8:	1affffdd 	bne	12254 <fat_cluster_set+0x70>                  
        }                                                             
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return bytes_to_write;                                        
   122dc:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   122e0:	eaffffe5 	b	1227c <fat_cluster_set+0x98>                    <== NOT EXECUTED
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
                                                                      
        if (RC_OK == rc)                                              
        {                                                             
            memset(blk_buf + offset, pattern, bytes_to_write);        
   122e4:	e59d0000 	ldr	r0, [sp]                                      
   122e8:	e1a0100b 	mov	r1, fp                                        
   122ec:	e0800008 	add	r0, r0, r8                                    
   122f0:	e1a02005 	mov	r2, r5                                        
   122f4:	eb00204b 	bl	1a428 <memset>                                 
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
   122f8:	e3a03001 	mov	r3, #1                                        
   122fc:	e5c43088 	strb	r3, [r4, #136]	; 0x88                        
        }                                                             
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return bytes_to_write;                                        
   12300:	e1a00005 	mov	r0, r5                                        
   12304:	eaffffdc 	b	1227c <fat_cluster_set+0x98>                    
        bytes_written  += ret;                                        
        ++cur_blk;                                                    
    }                                                                 
    ofs_blk = 0;                                                      
  }                                                                   
  if (RC_OK != rc)                                                    
   12308:	e3530000 	cmp	r3, #0                                        
    return rc;                                                        
  else                                                                
    return bytes_written;                                             
}                                                                     
   1230c:	01a00009 	moveq	r0, r9                                      
   12310:	13e00000 	mvnne	r0, #0                                      
   12314:	e28dd004 	add	sp, sp, #4                                    
   12318:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   1231c:	e5d0800c 	ldrb	r8, [r0, #12]                                <== NOT EXECUTED
   12320:	e5d03002 	ldrb	r3, [r0, #2]                                 <== NOT EXECUTED
   12324:	e590a020 	ldr	sl, [r0, #32]                                 <== NOT EXECUTED
   12328:	e0633008 	rsb	r3, r3, r8                                    <== NOT EXECUTED
   1232c:	e1a0a33a 	lsr	sl, sl, r3                                    <== NOT EXECUTED
   12330:	eaffffc1 	b	1223c <fat_cluster_set+0x58>                    <== NOT EXECUTED
                                                                      

00012334 <fat_cluster_write>: const uint32_t start_cln, const uint32_t offset, const uint32_t count, const void *buff, const bool overwrite_cluster) {
   12334:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
   12338:	e1d070b6 	ldrh	r7, [r0, #6]                                 
   1233c:	e0627007 	rsb	r7, r2, r7                                    
    const uint32_t                        start_cln,                  
    const uint32_t                        offset,                     
    const uint32_t                        count,                      
    const void                           *buff,                       
    const bool                            overwrite_cluster)          
{                                                                     
   12340:	e24dd004 	sub	sp, sp, #4                                    
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
   12344:	e1530007 	cmp	r3, r7                                        
   12348:	31a07003 	movcc	r7, r3                                      
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,           
                              uint32_t             cln)               
{                                                                     
    uint32_t blk;                                                     
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   1234c:	e3510000 	cmp	r1, #0                                        
    const uint32_t                        start_cln,                  
    const uint32_t                        offset,                     
    const uint32_t                        count,                      
    const void                           *buff,                       
    const bool                            overwrite_cluster)          
{                                                                     
   12350:	e1a04000 	mov	r4, r0                                        
   12354:	e5ddb02c 	ldrb	fp, [sp, #44]	; 0x2c                         
fat_cluster_num_to_block_num (const fat_fs_info_t *fs_info,           
                              uint32_t             cln)               
{                                                                     
    uint32_t blk;                                                     
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   12358:	1a000002 	bne	12368 <fat_cluster_write+0x34>                
   1235c:	e5d0300e 	ldrb	r3, [r0, #14]                                
   12360:	e3130003 	tst	r3, #3                                        
   12364:	1a000048 	bne	1248c <fat_cluster_write+0x158>               
        blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
    else                                                              
    {                                                                 
        cln -= FAT_RSRVD_CLN;                                         
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
   12368:	e5d4800c 	ldrb	r8, [r4, #12]                                
   1236c:	e5d43008 	ldrb	r3, [r4, #8]                                 
                                                                      
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        blk = fat_sector_num_to_block_num(fs_info, fs_info->vol.rdir_loc);
    else                                                              
    {                                                                 
        cln -= FAT_RSRVD_CLN;                                         
   12370:	e2411002 	sub	r1, r1, #2                                    
        blk = cln << (fs_info->vol.bpc_log2 - fs_info->vol.bytes_per_block_log2);
   12374:	e0683003 	rsb	r3, r8, r3                                    
   12378:	e1a01311 	lsl	r1, r1, r3                                    
   1237c:	e5d4a002 	ldrb	sl, [r4, #2]                                 
   12380:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          
   12384:	e06aa008 	rsb	sl, sl, r8                                    
        blk += fat_sector_num_to_block_num(fs_info, fs_info->vol.data_fsec);
   12388:	e081aa33 	add	sl, r1, r3, lsr sl                            
    const bool                            overwrite_cluster)          
{                                                                     
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
   1238c:	e1a03832 	lsr	r3, r2, r8                                    
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
    ssize_t             bytes_written    = 0;                         
   12390:	e3a09000 	mov	r9, #0                                        
{                                                                     
    ssize_t             rc               = RC_OK;                     
    uint32_t            bytes_to_write   = MIN(count, (fs_info->vol.bpc - offset));
    uint32_t            cur_blk          = fat_cluster_num_to_block_num(fs_info, start_cln);
    uint32_t            blocks_in_offset = (offset >> fs_info->vol.bytes_per_block_log2);
    uint32_t            ofs_blk          = offset - (blocks_in_offset << fs_info->vol.bytes_per_block_log2);
   12394:	e0428813 	sub	r8, r2, r3, lsl r8                            
    ssize_t             bytes_written    = 0;                         
    uint8_t             *buffer          = (uint8_t*)buff;            
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
   12398:	e083a00a 	add	sl, r3, sl                                    
    const uint32_t                        offset,                     
    const uint32_t                        count,                      
    const void                           *buff,                       
    const bool                            overwrite_cluster)          
{                                                                     
    ssize_t             rc               = RC_OK;                     
   1239c:	e1a03009 	mov	r3, r9                                        
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
                                                                      
    while (   (RC_OK == rc)                                           
   123a0:	ea000012 	b	123f0 <fat_cluster_write+0xbc>                  
                                                                      
static inline uint32_t                                                
 fat_block_num_to_sector_num (const fat_fs_info_t *fs_info,           
                              const uint32_t block_number)            
{                                                                     
  return block_number << (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   123a4:	e0621001 	rsb	r1, r2, r1                                    
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
    {                                                                 
        if (   overwrite_block                                        
   123a8:	e35b0000 	cmp	fp, #0                                        
            || (bytes_to_write == fs_info->vol.bytes_per_block))      
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
   123ac:	e1a00004 	mov	r0, r4                                        
   123b0:	e1a0111a 	lsl	r1, sl, r1                                    
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
    {                                                                 
        if (   overwrite_block                                        
   123b4:	1a000020 	bne	1243c <fat_cluster_write+0x108>               
            || (bytes_to_write == fs_info->vol.bytes_per_block))      
   123b8:	e1530006 	cmp	r3, r6                                        
   123bc:	0a00001e 	beq	1243c <fat_cluster_write+0x108>               
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
        }                                                             
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
   123c0:	e3a02001 	mov	r2, #1                                        
   123c4:	e1a0300d 	mov	r3, sp                                        
   123c8:	ebffff08 	bl	11ff0 <fat_buf_access>                         
                                                                      
        if (RC_OK == rc)                                              
   123cc:	e3500000 	cmp	r0, #0                                        
   123d0:	0a00001e 	beq	12450 <fat_cluster_write+0x11c>               
          cur_blk,                                                    
          ofs_blk,                                                    
          c,                                                          
          &buffer[bytes_written],                                     
          overwrite_cluster);                                         
      if (c != ret)                                                   
   123d4:	e1500005 	cmp	r0, r5                                        
        rc = -1;                                                      
      else                                                            
      {                                                               
          bytes_to_write -= ret;                                      
   123d8:	00607007 	rsbeq	r7, r0, r7                                  
          bytes_written  += ret;                                      
   123dc:	00899000 	addeq	r9, r9, r0                                  
          ++cur_blk;                                                  
   123e0:	028aa001 	addeq	sl, sl, #1                                  
   123e4:	03a03000 	moveq	r3, #0                                      
          ofs_blk,                                                    
          c,                                                          
          &buffer[bytes_written],                                     
          overwrite_cluster);                                         
      if (c != ret)                                                   
        rc = -1;                                                      
   123e8:	13e03000 	mvnne	r3, #0                                      
      else                                                            
      {                                                               
          bytes_to_write -= ret;                                      
          bytes_written  += ret;                                      
          ++cur_blk;                                                  
   123ec:	e3a08000 	mov	r8, #0                                        
    ssize_t             ret;                                          
    uint32_t            c;                                            
                                                                      
    cur_blk += blocks_in_offset;                                      
                                                                      
    while (   (RC_OK == rc)                                           
   123f0:	e2832001 	add	r2, r3, #1                                    
   123f4:	e3570000 	cmp	r7, #0                                        
   123f8:	03a02000 	moveq	r2, #0                                      
   123fc:	12022001 	andne	r2, r2, #1                                  
   12400:	e3520000 	cmp	r2, #0                                        
   12404:	0a00001b 	beq	12478 <fat_cluster_write+0x144>               
           && (0 < bytes_to_write))                                   
    {                                                                 
      c = MIN(bytes_to_write, (fs_info->vol.bytes_per_block - ofs_blk));
   12408:	e1d430ba 	ldrh	r3, [r4, #10]                                
   1240c:	e0686003 	rsb	r6, r8, r3                                    
   12410:	e1560007 	cmp	r6, r7                                        
   12414:	31a05006 	movcc	r5, r6                                      
   12418:	21a05007 	movcs	r5, r7                                      
    const uint32_t                        count,                      
    const void                           *buf,                        
    const bool                            overwrite_block)            
{                                                                     
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
   1241c:	e1550006 	cmp	r5, r6                                        
   12420:	31a06005 	movcc	r6, r5                                      
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
   12424:	e3560000 	cmp	r6, #0                                        
    uint32_t                              ino                         
    )                                                                 
{                                                                     
                                                                      
    return (ino >= fs_info->uino_base);                               
}                                                                     
   12428:	e5d42002 	ldrb	r2, [r4, #2]                                 
   1242c:	e5d4100c 	ldrb	r1, [r4, #12]                                
    int                 rc             = RC_OK;                       
    uint32_t            bytes_to_write = MIN(count, (fs_info->vol.bytes_per_block - offset));
    uint8_t            *blk_buf;                                      
    uint32_t            sec_num        = fat_block_num_to_sector_num(fs_info, start_blk);
                                                                      
    if (0 < bytes_to_write)                                           
   12430:	1affffdb 	bne	123a4 <fat_cluster_write+0x70>                
        }                                                             
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return bytes_to_write;                                        
   12434:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   12438:	eaffffe5 	b	123d4 <fat_cluster_write+0xa0>                  <== NOT EXECUTED
    if (0 < bytes_to_write)                                           
    {                                                                 
        if (   overwrite_block                                        
            || (bytes_to_write == fs_info->vol.bytes_per_block))      
        {                                                             
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &blk_buf);
   1243c:	e3a02002 	mov	r2, #2                                        
   12440:	e1a0300d 	mov	r3, sp                                        
   12444:	ebfffee9 	bl	11ff0 <fat_buf_access>                         
        }                                                             
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &blk_buf);
                                                                      
        if (RC_OK == rc)                                              
   12448:	e3500000 	cmp	r0, #0                                        
   1244c:	1affffe0 	bne	123d4 <fat_cluster_write+0xa0>                
        {                                                             
            memcpy(blk_buf + offset, buf, bytes_to_write);            
   12450:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
   12454:	e59d0000 	ldr	r0, [sp]                                      
   12458:	e0831009 	add	r1, r3, r9                                    
   1245c:	e0800008 	add	r0, r0, r8                                    
   12460:	e1a02006 	mov	r2, r6                                        
   12464:	eb001fb9 	bl	1a350 <memcpy>                                 
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
   12468:	e3a03001 	mov	r3, #1                                        
   1246c:	e5c43088 	strb	r3, [r4, #136]	; 0x88                        
        }                                                             
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return bytes_to_write;                                        
   12470:	e1a00006 	mov	r0, r6                                        
   12474:	eaffffd6 	b	123d4 <fat_cluster_write+0xa0>                  
          bytes_written  += ret;                                      
          ++cur_blk;                                                  
      }                                                               
      ofs_blk = 0;                                                    
    }                                                                 
    if (RC_OK != rc)                                                  
   12478:	e3530000 	cmp	r3, #0                                        
      return rc;                                                      
    else                                                              
      return bytes_written;                                           
}                                                                     
   1247c:	01a00009 	moveq	r0, r9                                      
   12480:	13e00000 	mvnne	r0, #0                                      
   12484:	e28dd004 	add	sp, sp, #4                                    
   12488:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
static inline uint32_t                                                
 fat_sector_num_to_block_num (const fat_fs_info_t *fs_info,           
                              const uint32_t sector_number)           
{                                                                     
  return sector_number >> (fs_info->vol.bytes_per_block_log2 - fs_info->vol.sec_log2);
   1248c:	e5d0800c 	ldrb	r8, [r0, #12]                                
   12490:	e5d03002 	ldrb	r3, [r0, #2]                                 
   12494:	e590a020 	ldr	sl, [r0, #32]                                 
   12498:	e0633008 	rsb	r3, r3, r8                                    
   1249c:	e1a0a33a 	lsr	sl, sl, r3                                    
   124a0:	eaffffb9 	b	1238c <fat_cluster_write+0x58>                  
                                                                      

0001172c <fat_file_close>: /* * if links_num field of fat-file descriptor is greater than 1 * decrement the count of links and return */ if (fat_fd->links_num > 1)
   1172c:	e5913008 	ldr	r3, [r1, #8]                                  
   11730:	e3530001 	cmp	r3, #1                                        
    {                                                                 
        fat_fd->links_num--;                                          
   11734:	82433001 	subhi	r3, r3, #1                                  
int                                                                   
fat_file_close(                                                       
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
   11738:	e92d4070 	push	{r4, r5, r6, lr}                             
   1173c:	e1a05000 	mov	r5, r0                                        
   11740:	e1a04001 	mov	r4, r1                                        
     * if links_num field of fat-file descriptor is greater than 1    
     * decrement the count of links and return                        
     */                                                               
    if (fat_fd->links_num > 1)                                        
    {                                                                 
        fat_fd->links_num--;                                          
   11744:	85813008 	strhi	r3, [r1, #8]                                
        return rc;                                                    
   11748:	83a00000 	movhi	r0, #0                                      
                                                                      
    /*                                                                
     * if links_num field of fat-file descriptor is greater than 1    
     * decrement the count of links and return                        
     */                                                               
    if (fat_fd->links_num > 1)                                        
   1174c:	88bd8070 	pophi	{r4, r5, r6, pc}                            
        return rc;                                                    
    }                                                                 
                                                                      
    key = fat_construct_key(fs_info, &fat_fd->dir_pos.sname);         
                                                                      
    if (fat_fd->flags & FAT_FILE_REMOVED)                             
   11750:	e5d16030 	ldrb	r6, [r1, #48]	; 0x30                         
   11754:	e2166001 	ands	r6, r6, #1                                   
   11758:	0a00000d 	beq	11794 <fat_file_close+0x68>                   
    {                                                                 
        rc = fat_file_truncate(fs_info, fat_fd, 0);                   
   1175c:	e3a02000 	mov	r2, #0                                        
   11760:	ebffffb0 	bl	11628 <fat_file_truncate>                      
        if ( rc != RC_OK )                                            
   11764:	e3500000 	cmp	r0, #0                                        
   11768:	18bd8070 	popne	{r4, r5, r6, pc}                            
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
   1176c:	e1a00004 	mov	r0, r4                                        
   11770:	eb000cd6 	bl	14ad0 <_Chain_Extract>                         
            return rc;                                                
                                                                      
        _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);       
                                                                      
        if ( fat_ino_is_unique(fs_info, fat_fd->ino) )                
   11774:	e1a00005 	mov	r0, r5                                        
   11778:	e594100c 	ldr	r1, [r4, #12]                                 
   1177c:	eb0005da 	bl	12eec <fat_ino_is_unique>                      
   11780:	e3500000 	cmp	r0, #0                                        
   11784:	1a00000d 	bne	117c0 <fat_file_close+0x94>                   
            fat_fd->links_num = 0;                                    
        }                                                             
        else                                                          
        {                                                             
            _hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);   
            free(fat_fd);                                             
   11788:	e1a00004 	mov	r0, r4                                        
   1178c:	ebffcaf2 	bl	435c <free>                                    
   11790:	ea000004 	b	117a8 <fat_file_close+0x7c>                     
                                                                      
        free(fat_fd);                                                 
    }                                                                 
    else                                                              
    {                                                                 
        if (fat_ino_is_unique(fs_info, fat_fd->ino))                  
   11794:	e591100c 	ldr	r1, [r1, #12]                                 
   11798:	eb0005d3 	bl	12eec <fat_ino_is_unique>                      
   1179c:	e3500000 	cmp	r0, #0                                        
        {                                                             
            fat_fd->links_num = 0;                                    
   117a0:	15846008 	strne	r6, [r4, #8]                                
                                                                      
        free(fat_fd);                                                 
    }                                                                 
    else                                                              
    {                                                                 
        if (fat_ino_is_unique(fs_info, fat_fd->ino))                  
   117a4:	0a000002 	beq	117b4 <fat_file_close+0x88>                   
        }                                                             
    }                                                                 
    /*                                                                
     * flush any modified "cached" buffer back to disk                
     */                                                               
    rc = fat_buf_release(fs_info);                                    
   117a8:	e1a00005 	mov	r0, r5                                        
                                                                      
    return rc;                                                        
}                                                                     
   117ac:	e8bd4070 	pop	{r4, r5, r6, lr}                              
        }                                                             
    }                                                                 
    /*                                                                
     * flush any modified "cached" buffer back to disk                
     */                                                               
    rc = fat_buf_release(fs_info);                                    
   117b0:	ea0001a5 	b	11e4c <fat_buf_release>                         
   117b4:	e1a00004 	mov	r0, r4                                        
   117b8:	eb000cc4 	bl	14ad0 <_Chain_Extract>                         
   117bc:	eafffff1 	b	11788 <fat_file_close+0x5c>                     
            return rc;                                                
                                                                      
        _hash_delete(fs_info->rhash, key, fat_fd->ino, fat_fd);       
                                                                      
        if ( fat_ino_is_unique(fs_info, fat_fd->ino) )                
            fat_free_unique_ino(fs_info, fat_fd->ino);                
   117c0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   117c4:	e594100c 	ldr	r1, [r4, #12]                                 <== NOT EXECUTED
   117c8:	eb0005be 	bl	12ec8 <fat_free_unique_ino>                    <== NOT EXECUTED
   117cc:	eaffffed 	b	11788 <fat_file_close+0x5c>                     <== NOT EXECUTED
                                                                      

00011894 <fat_file_extend>: fat_file_fd_t *fat_fd, bool zero_fill, uint32_t new_length, uint32_t *a_length ) {
   11894:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   11898:	e24dd01c 	sub	sp, sp, #28                                   
    uint32_t       last_cl = 0;                                       
    uint32_t       bytes_remain = 0;                                  
    uint32_t       cls_added;                                         
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
   1189c:	e59dc040 	ldr	ip, [sp, #64]	; 0x40                          
   118a0:	e58c3000 	str	r3, [ip]                                      
    fat_file_fd_t                        *fat_fd,                     
    bool                                  zero_fill,                  
    uint32_t                              new_length,                 
    uint32_t                             *a_length                    
    )                                                                 
{                                                                     
   118a4:	e1a04003 	mov	r4, r3                                        
    uint32_t       cls_added;                                         
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
   118a8:	e5913018 	ldr	r3, [r1, #24]                                 
    uint32_t                              new_length,                 
    uint32_t                             *a_length                    
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       chain = 0;                                         
   118ac:	e3a07000 	mov	r7, #0                                        
    uint32_t       cls_added;                                         
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
   118b0:	e1540003 	cmp	r4, r3                                        
    fat_file_fd_t                        *fat_fd,                     
    bool                                  zero_fill,                  
    uint32_t                              new_length,                 
    uint32_t                             *a_length                    
    )                                                                 
{                                                                     
   118b4:	e1a05001 	mov	r5, r1                                        
   118b8:	e1a06000 	mov	r6, r0                                        
   118bc:	e202a0ff 	and	sl, r2, #255	; 0xff                           
    int            rc = RC_OK;                                        
    uint32_t       chain = 0;                                         
   118c0:	e58d7008 	str	r7, [sp, #8]                                  
    uint32_t       bytes2add = 0;                                     
    uint32_t       cls2add = 0;                                       
    uint32_t       old_last_cl;                                       
    uint32_t       last_cl = 0;                                       
   118c4:	e58d7010 	str	r7, [sp, #16]                                 
    uint32_t       cls_added;                                         
    ssize_t        bytes_written;                                     
                                                                      
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
   118c8:	9a000012 	bls	11918 <fat_file_extend+0x84>                  
        return RC_OK;                                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   118cc:	e5912020 	ldr	r2, [r1, #32]                                 
   118d0:	e3520001 	cmp	r2, #1                                        
   118d4:	0a00003e 	beq	119d4 <fat_file_extend+0x140>                 
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
        rtems_set_errno_and_return_minus_one( ENOSPC );               
                                                                      
    bytes_remain = (fs_info->vol.bpc -                                
   118d8:	e1d680b6 	ldrh	r8, [r6, #6]                                 
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
   118dc:	e2482001 	sub	r2, r8, #1                                    
   118e0:	e002b003 	and	fp, r2, r3                                    
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
        rtems_set_errno_and_return_minus_one( ENOSPC );               
                                                                      
    bytes_remain = (fs_info->vol.bpc -                                
   118e4:	e06b8008 	rsb	r8, fp, r8                                    
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
                   (fs_info->vol.bpc - 1);                            
                                                                      
    bytes2add = new_length - fat_fd->fat_file_size;                   
   118e8:	e0639004 	rsb	r9, r3, r4                                    
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
        rtems_set_errno_and_return_minus_one( ENOSPC );               
                                                                      
    bytes_remain = (fs_info->vol.bpc -                                
   118ec:	e0088002 	and	r8, r8, r2                                    
                   (fat_fd->fat_file_size & (fs_info->vol.bpc - 1))) &
                   (fs_info->vol.bpc - 1);                            
                                                                      
    bytes2add = new_length - fat_fd->fat_file_size;                   
                                                                      
    if (bytes2add > bytes_remain)                                     
   118f0:	e1580009 	cmp	r8, r9                                        
        bytes2add -= bytes_remain;                                    
   118f4:	30689009 	rsbcc	r9, r8, r9                                  
    else                                                              
        bytes2add = 0;                                                
   118f8:	23a09000 	movcs	r9, #0                                      
                                                                      
    if (zero_fill && bytes_remain > 0) {                              
   118fc:	e35a0000 	cmp	sl, #0                                        
   11900:	0a000001 	beq	1190c <fat_file_extend+0x78>                  
   11904:	e3580000 	cmp	r8, #0                                        
   11908:	1a00003c 	bne	11a00 <fat_file_extend+0x16c>                 
    /*                                                                
     * if in last cluster allocated for the file there is enough room to
     * handle extention (hence we don't need to add even one cluster to the
     * file ) - return                                                
     */                                                               
    if (bytes2add == 0)                                               
   1190c:	e3590000 	cmp	r9, #0                                        
        return RC_OK;                                                 
   11910:	01a07009 	moveq	r7, r9                                      
    /*                                                                
     * if in last cluster allocated for the file there is enough room to
     * handle extention (hence we don't need to add even one cluster to the
     * file ) - return                                                
     */                                                               
    if (bytes2add == 0)                                               
   11914:	1a000002 	bne	11924 <fat_file_extend+0x90>                  
                                                                      
    *a_length = new_length;                                           
    fat_fd->fat_file_size = new_length;                               
                                                                      
    return RC_OK;                                                     
}                                                                     
   11918:	e1a00007 	mov	r0, r7                                        
   1191c:	e28dd01c 	add	sp, sp, #28                                   
   11920:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     * file ) - return                                                
     */                                                               
    if (bytes2add == 0)                                               
        return RC_OK;                                                 
                                                                      
    cls2add = ((bytes2add - 1) >> fs_info->vol.bpc_log2) + 1;         
   11924:	e5d63008 	ldrb	r3, [r6, #8]                                 
   11928:	e249b001 	sub	fp, r9, #1                                    
   1192c:	e1a0b33b 	lsr	fp, fp, r3                                    
   11930:	e28bb001 	add	fp, fp, #1                                    
                                                                      
    rc = fat_scan_fat_for_free_clusters(fs_info, &chain, cls2add,     
   11934:	e28dc010 	add	ip, sp, #16                                   
   11938:	e1a00006 	mov	r0, r6                                        
   1193c:	e28d1008 	add	r1, sp, #8                                    
   11940:	e1a0200b 	mov	r2, fp                                        
   11944:	e28d3014 	add	r3, sp, #20                                   
   11948:	e58dc000 	str	ip, [sp]                                      
   1194c:	e58da004 	str	sl, [sp, #4]                                  
   11950:	eb001a07 	bl	18174 <fat_scan_fat_for_free_clusters>         
                                        &cls_added, &last_cl, zero_fill);
                                                                      
    /* this means that low level I/O error occured */                 
    if (rc != RC_OK)                                                  
   11954:	e2507000 	subs	r7, r0, #0                                   
   11958:	1affffee 	bne	11918 <fat_file_extend+0x84>                  
        return rc;                                                    
                                                                      
    /* this means that no space left on device */                     
    if ((cls_added == 0) && (bytes_remain == 0))                      
   1195c:	e59d2014 	ldr	r2, [sp, #20]                                 
   11960:	e1988002 	orrs	r8, r8, r2                                   
   11964:	0a000020 	beq	119ec <fat_file_extend+0x158>                 
        rtems_set_errno_and_return_minus_one(ENOSPC);                 
                                                                      
    /*  check wether we satisfied request for 'cls2add' clusters */   
    if (cls2add != cls_added)                                         
   11968:	e15b0002 	cmp	fp, r2                                        
   1196c:	0a000006 	beq	1198c <fat_file_extend+0xf8>                  
    {                                                                 
        new_length -= bytes2add & (fs_info->vol.bpc - 1);             
   11970:	e1d630b6 	ldrh	r3, [r6, #6]                                 <== NOT EXECUTED
   11974:	e2433001 	sub	r3, r3, #1                                    <== NOT EXECUTED
   11978:	e0099003 	and	r9, r9, r3                                    <== NOT EXECUTED
        new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2; 
   1197c:	e5d63008 	ldrb	r3, [r6, #8]                                 <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENOSPC);                 
                                                                      
    /*  check wether we satisfied request for 'cls2add' clusters */   
    if (cls2add != cls_added)                                         
    {                                                                 
        new_length -= bytes2add & (fs_info->vol.bpc - 1);             
   11980:	e0694004 	rsb	r4, r9, r4                                    <== NOT EXECUTED
        new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2; 
   11984:	e062b00b 	rsb	fp, r2, fp                                    <== NOT EXECUTED
   11988:	e044431b 	sub	r4, r4, fp, lsl r3                            <== NOT EXECUTED
    }                                                                 
                                                                      
    /* add new chain to the end of existed */                         
    if ( fat_fd->fat_file_size == 0 )                                 
   1198c:	e5953018 	ldr	r3, [r5, #24]                                 
   11990:	e3530000 	cmp	r3, #0                                        
   11994:	1a00002b 	bne	11a48 <fat_file_extend+0x1b4>                 
    {                                                                 
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
   11998:	e59d1008 	ldr	r1, [sp, #8]                                  
        fat_fd->map.file_cln = 0;                                     
   1199c:	e5853034 	str	r3, [r5, #52]	; 0x34                          
    }                                                                 
                                                                      
    /* add new chain to the end of existed */                         
    if ( fat_fd->fat_file_size == 0 )                                 
    {                                                                 
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
   119a0:	e585101c 	str	r1, [r5, #28]                                 
   119a4:	e5851038 	str	r1, [r5, #56]	; 0x38                          
        }                                                             
        fat_buf_release(fs_info);                                     
    }                                                                 
                                                                      
    /* update number of the last cluster of the file if it changed */ 
    if (cls_added != 0)                                               
   119a8:	e3520000 	cmp	r2, #0                                        
   119ac:	0a000004 	beq	119c4 <fat_file_extend+0x130>                 
    {                                                                 
        fat_fd->map.last_cln = last_cl;                               
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
   119b0:	e5953010 	ldr	r3, [r5, #16]                                 
   119b4:	e3530000 	cmp	r3, #0                                        
    }                                                                 
                                                                      
    /* update number of the last cluster of the file if it changed */ 
    if (cls_added != 0)                                               
    {                                                                 
        fat_fd->map.last_cln = last_cl;                               
   119b8:	e59d3010 	ldr	r3, [sp, #16]                                 
   119bc:	e585303c 	str	r3, [r5, #60]	; 0x3c                          
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
   119c0:	0a00002d 	beq	11a7c <fat_file_extend+0x1e8>                 
                return rc;                                            
            }                                                         
        }                                                             
    }                                                                 
                                                                      
    *a_length = new_length;                                           
   119c4:	e59dc040 	ldr	ip, [sp, #64]	; 0x40                          
   119c8:	e58c4000 	str	r4, [ip]                                      
    fat_fd->fat_file_size = new_length;                               
   119cc:	e5854018 	str	r4, [r5, #24]                                 
                                                                      
    return RC_OK;                                                     
   119d0:	eaffffd0 	b	11918 <fat_file_extend+0x84>                    
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
        return RC_OK;                                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   119d4:	e5912024 	ldr	r2, [r1, #36]	; 0x24                          
   119d8:	e1520007 	cmp	r2, r7                                        
   119dc:	1affffbd 	bne	118d8 <fat_file_extend+0x44>                  
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
   119e0:	e5d0200e 	ldrb	r2, [r0, #14]                                
    *a_length = new_length;                                           
                                                                      
    if (new_length <= fat_fd->fat_file_size)                          
        return RC_OK;                                                 
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   119e4:	e3120003 	tst	r2, #3                                        
   119e8:	0affffba 	beq	118d8 <fat_file_extend+0x44>                  
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    /* this means that no space left on device */                     
    if ((cls_added == 0) && (bytes_remain == 0))                      
        rtems_set_errno_and_return_minus_one(ENOSPC);                 
   119ec:	eb001fb0 	bl	198b4 <__errno>                                
   119f0:	e3a0301c 	mov	r3, #28                                       
   119f4:	e5803000 	str	r3, [r0]                                      
   119f8:	e3e07000 	mvn	r7, #0                                        
   119fc:	eaffffc5 	b	11918 <fat_file_extend+0x84>                    
    else                                                              
        bytes2add = 0;                                                
                                                                      
    if (zero_fill && bytes_remain > 0) {                              
        uint32_t start = fat_fd->fat_file_size;                       
        uint32_t cl_start = start >> fs_info->vol.bpc_log2;           
   11a00:	e5d62008 	ldrb	r2, [r6, #8]                                 
        uint32_t ofs = start & (fs_info->vol.bpc - 1);                
        uint32_t cur_cln;                                             
                                                                      
        rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);     
   11a04:	e1a00006 	mov	r0, r6                                        
   11a08:	e1a02233 	lsr	r2, r3, r2                                    
   11a0c:	e1a01005 	mov	r1, r5                                        
   11a10:	e28d3018 	add	r3, sp, #24                                   
   11a14:	ebfffdbd 	bl	11110 <fat_file_lseek>                         
        if (rc != RC_OK)                                              
   11a18:	e2507000 	subs	r7, r0, #0                                   
   11a1c:	1affffbd 	bne	11918 <fat_file_extend+0x84>                  
            return rc;                                                
                                                                      
        bytes_written = fat_cluster_set (fs_info, cur_cln, ofs, bytes_remain, 0);
   11a20:	e1a00006 	mov	r0, r6                                        
   11a24:	e59d1018 	ldr	r1, [sp, #24]                                 
   11a28:	e1a0200b 	mov	r2, fp                                        
   11a2c:	e1a03008 	mov	r3, r8                                        
   11a30:	e58d7000 	str	r7, [sp]                                      
   11a34:	eb0001ea 	bl	121e4 <fat_cluster_set>                        
        if (bytes_remain != bytes_written)                            
   11a38:	e1500008 	cmp	r0, r8                                        
            return -1;                                                
   11a3c:	13e07000 	mvnne	r7, #0                                      
        rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);     
        if (rc != RC_OK)                                              
            return rc;                                                
                                                                      
        bytes_written = fat_cluster_set (fs_info, cur_cln, ofs, bytes_remain, 0);
        if (bytes_remain != bytes_written)                            
   11a40:	0affffb1 	beq	1190c <fat_file_extend+0x78>                  
   11a44:	eaffffb3 	b	11918 <fat_file_extend+0x84>                    <== NOT EXECUTED
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
        fat_fd->map.file_cln = 0;                                     
    }                                                                 
    else                                                              
    {                                                                 
        if (fat_fd->map.last_cln != FAT_UNDEFINED_VALUE)              
   11a48:	e595103c 	ldr	r1, [r5, #60]	; 0x3c                          
   11a4c:	e3710001 	cmn	r1, #1                                        
        {                                                             
            old_last_cl = fat_fd->map.last_cln;                       
   11a50:	158d100c 	strne	r1, [sp, #12]                               
        fat_fd->map.disk_cln = fat_fd->cln = chain;                   
        fat_fd->map.file_cln = 0;                                     
    }                                                                 
    else                                                              
    {                                                                 
        if (fat_fd->map.last_cln != FAT_UNDEFINED_VALUE)              
   11a54:	0a000012 	beq	11aa4 <fat_file_extend+0x210>                 
                fat_free_fat_clusters_chain(fs_info, chain);          
                return rc;                                            
            }                                                         
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);        
   11a58:	e1a00006 	mov	r0, r6                                        
   11a5c:	e59d2008 	ldr	r2, [sp, #8]                                  
   11a60:	eb001907 	bl	17e84 <fat_set_fat_cluster>                    
        if ( rc != RC_OK )                                            
   11a64:	e2508000 	subs	r8, r0, #0                                   
        {                                                             
            fat_free_fat_clusters_chain(fs_info, chain);              
   11a68:	e1a00006 	mov	r0, r6                                        
                return rc;                                            
            }                                                         
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, old_last_cl, chain);        
        if ( rc != RC_OK )                                            
   11a6c:	1a000008 	bne	11a94 <fat_file_extend+0x200>                 
        {                                                             
            fat_free_fat_clusters_chain(fs_info, chain);              
            return rc;                                                
        }                                                             
        fat_buf_release(fs_info);                                     
   11a70:	eb0000f5 	bl	11e4c <fat_buf_release>                        
   11a74:	e59d2014 	ldr	r2, [sp, #20]                                 
   11a78:	eaffffca 	b	119a8 <fat_file_extend+0x114>                   
    if (cls_added != 0)                                               
    {                                                                 
        fat_fd->map.last_cln = last_cl;                               
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
        {                                                             
            rc = fat_init_clusters_chain(fs_info, chain);             
   11a7c:	e1a00006 	mov	r0, r6                                        
   11a80:	e59d1008 	ldr	r1, [sp, #8]                                  
   11a84:	eb0004b5 	bl	12d60 <fat_init_clusters_chain>                
            if ( rc != RC_OK )                                        
   11a88:	e2508000 	subs	r8, r0, #0                                   
   11a8c:	0affffcc 	beq	119c4 <fat_file_extend+0x130>                 
            {                                                         
                fat_free_fat_clusters_chain(fs_info, chain);          
   11a90:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   11a94:	e59d1008 	ldr	r1, [sp, #8]                                  <== NOT EXECUTED
   11a98:	eb001981 	bl	180a4 <fat_free_fat_clusters_chain>            <== NOT EXECUTED
                return rc;                                            
   11a9c:	e1a07008 	mov	r7, r8                                        <== NOT EXECUTED
   11aa0:	eaffff9c 	b	11918 <fat_file_extend+0x84>                    <== NOT EXECUTED
        {                                                             
            old_last_cl = fat_fd->map.last_cln;                       
        }                                                             
        else                                                          
        {                                                             
            rc = fat_file_ioctl(fs_info, fat_fd, F_CLU_NUM,           
   11aa4:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   11aa8:	e28dc00c 	add	ip, sp, #12                                   <== NOT EXECUTED
   11aac:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   11ab0:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
   11ab4:	e2433001 	sub	r3, r3, #1                                    <== NOT EXECUTED
   11ab8:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   11abc:	ebffff43 	bl	117d0 <fat_file_ioctl>                         <== NOT EXECUTED
                                (fat_fd->fat_file_size - 1), &old_last_cl);
            if ( rc != RC_OK )                                        
   11ac0:	e2508000 	subs	r8, r0, #0                                   <== NOT EXECUTED
            {                                                         
                fat_free_fat_clusters_chain(fs_info, chain);          
                return rc;                                            
   11ac4:	059d100c 	ldreq	r1, [sp, #12]                               <== NOT EXECUTED
        }                                                             
        else                                                          
        {                                                             
            rc = fat_file_ioctl(fs_info, fat_fd, F_CLU_NUM,           
                                (fat_fd->fat_file_size - 1), &old_last_cl);
            if ( rc != RC_OK )                                        
   11ac8:	0affffe2 	beq	11a58 <fat_file_extend+0x1c4>                 <== NOT EXECUTED
        if (fat_fd->fat_file_type == FAT_DIRECTORY)                   
        {                                                             
            rc = fat_init_clusters_chain(fs_info, chain);             
            if ( rc != RC_OK )                                        
            {                                                         
                fat_free_fat_clusters_chain(fs_info, chain);          
   11acc:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   11ad0:	eaffffef 	b	11a94 <fat_file_extend+0x200>                   <== NOT EXECUTED
                                                                      

000117d0 <fat_file_ioctl>: fat_file_ioctl( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd, int cmd, ...) {
   117d0:	e92d000c 	push	{r2, r3}                                     
   117d4:	e92d4010 	push	{r4, lr}                                     
   117d8:	e24dd008 	sub	sp, sp, #8                                    
    uint32_t      *ret;                                               
    va_list        ap;                                                
                                                                      
    va_start(ap, cmd);                                                
                                                                      
    switch (cmd)                                                      
   117dc:	e59d2010 	ldr	r2, [sp, #16]                                 
    uint32_t       cl_start = 0;                                      
    uint32_t       pos = 0;                                           
    uint32_t      *ret;                                               
    va_list        ap;                                                
                                                                      
    va_start(ap, cmd);                                                
   117e0:	e28d3014 	add	r3, sp, #20                                   
                                                                      
    switch (cmd)                                                      
   117e4:	e3520001 	cmp	r2, #1                                        
    fat_file_fd_t                        *fat_fd,                     
    int                                   cmd,                        
    ...)                                                              
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = 0;                                       
   117e8:	e3a02000 	mov	r2, #0                                        
    uint32_t       cl_start = 0;                                      
    uint32_t       pos = 0;                                           
    uint32_t      *ret;                                               
    va_list        ap;                                                
                                                                      
    va_start(ap, cmd);                                                
   117ec:	e88d000c 	stm	sp, {r2, r3}                                  
                                                                      
    switch (cmd)                                                      
   117f0:	0a000007 	beq	11814 <fat_file_ioctl+0x44>                   
                                                                      
            *ret = cur_cln;                                           
            break;                                                    
                                                                      
        default:                                                      
            errno = EINVAL;                                           
   117f4:	eb00202e 	bl	198b4 <__errno>                                <== NOT EXECUTED
   117f8:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   117fc:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
            rc = -1;                                                  
   11800:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
            break;                                                    
    }                                                                 
    va_end(ap);                                                       
    return rc;                                                        
}                                                                     
   11804:	e28dd008 	add	sp, sp, #8                                    
   11808:	e8bd4010 	pop	{r4, lr}                                      
   1180c:	e28dd008 	add	sp, sp, #8                                    
   11810:	e12fff1e 	bx	lr                                             
    va_start(ap, cmd);                                                
                                                                      
    switch (cmd)                                                      
    {                                                                 
        case F_CLU_NUM:                                               
            pos = va_arg(ap, uint32_t);                               
   11814:	e1a0c003 	mov	ip, r3                                        
   11818:	e49c2008 	ldr	r2, [ip], #8                                  
            ret = va_arg(ap, uint32_t *);                             
                                                                      
            /* sanity check */                                        
            if ( pos >= fat_fd->fat_file_size ) {                     
   1181c:	e5914018 	ldr	r4, [r1, #24]                                 
   11820:	e1520004 	cmp	r2, r4                                        
                                                                      
    switch (cmd)                                                      
    {                                                                 
        case F_CLU_NUM:                                               
            pos = va_arg(ap, uint32_t);                               
            ret = va_arg(ap, uint32_t *);                             
   11824:	e58dc004 	str	ip, [sp, #4]                                  
   11828:	e59d4018 	ldr	r4, [sp, #24]                                 
                                                                      
            /* sanity check */                                        
            if ( pos >= fat_fd->fat_file_size ) {                     
   1182c:	2a000013 	bcs	11880 <fat_file_ioctl+0xb0>                   
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
   11830:	e5913020 	ldr	r3, [r1, #32]                                 
   11834:	e3530001 	cmp	r3, #1                                        
   11838:	0a000007 	beq	1185c <fat_file_ioctl+0x8c>                   
                *ret  = 0;                                            
                rc = RC_OK;                                           
                break;                                                
            }                                                         
                                                                      
            cl_start = pos >> fs_info->vol.bpc_log2;                  
   1183c:	e5d03008 	ldrb	r3, [r0, #8]                                 
                                                                      
            rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln); 
   11840:	e1a02332 	lsr	r2, r2, r3                                    
   11844:	e1a0300d 	mov	r3, sp                                        
   11848:	ebfffe30 	bl	11110 <fat_file_lseek>                         
            if ( rc != RC_OK )                                        
   1184c:	e3500000 	cmp	r0, #0                                        
                break;                                                
                                                                      
            *ret = cur_cln;                                           
   11850:	059d3000 	ldreq	r3, [sp]                                    
   11854:	05843000 	streq	r3, [r4]                                    
            break;                                                    
   11858:	eaffffe9 	b	11804 <fat_file_ioctl+0x34>                     
            if ( pos >= fat_fd->fat_file_size ) {                     
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
   1185c:	e5913024 	ldr	r3, [r1, #36]	; 0x24                          
   11860:	e3530000 	cmp	r3, #0                                        
   11864:	1afffff4 	bne	1183c <fat_file_ioctl+0x6c>                   
                (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))        
   11868:	e5d0c00e 	ldrb	ip, [r0, #14]                                
            if ( pos >= fat_fd->fat_file_size ) {                     
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
   1186c:	e31c0003 	tst	ip, #3                                        
                (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))        
            {                                                         
                /* cluster 0 (zero) reserved for root dir */          
                *ret  = 0;                                            
   11870:	15843000 	strne	r3, [r4]                                    
                rc = RC_OK;                                           
   11874:	11a00003 	movne	r0, r3                                      
            if ( pos >= fat_fd->fat_file_size ) {                     
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
            }                                                         
                                                                      
            if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                       
   11878:	1affffe1 	bne	11804 <fat_file_ioctl+0x34>                   
   1187c:	eaffffee 	b	1183c <fat_file_ioctl+0x6c>                     
            ret = va_arg(ap, uint32_t *);                             
                                                                      
            /* sanity check */                                        
            if ( pos >= fat_fd->fat_file_size ) {                     
                va_end(ap);                                           
                rtems_set_errno_and_return_minus_one( EIO );          
   11880:	eb00200b 	bl	198b4 <__errno>                                <== NOT EXECUTED
   11884:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   11888:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   1188c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   11890:	eaffffdb 	b	11804 <fat_file_ioctl+0x34>                     <== NOT EXECUTED
                                                                      

00011110 <fat_file_lseek>: fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd, uint32_t file_cln, uint32_t *disk_cln ) {
   11110:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
   11114:	e591a034 	ldr	sl, [r1, #52]	; 0x34                          
   11118:	e15a0002 	cmp	sl, r2                                        
    fat_fs_info_t                         *fs_info,                   
    fat_file_fd_t                         *fat_fd,                    
    uint32_t                               file_cln,                  
    uint32_t                              *disk_cln                   
    )                                                                 
{                                                                     
   1111c:	e24dd004 	sub	sp, sp, #4                                    
   11120:	e1a05001 	mov	r5, r1                                        
   11124:	e1a06002 	mov	r6, r2                                        
   11128:	e1a04000 	mov	r4, r0                                        
   1112c:	e1a07003 	mov	r7, r3                                        
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
   11130:	0a00001e 	beq	111b0 <fat_file_lseek+0xa0>                   
        uint32_t   count;                                             
        uint32_t   i;                                                 
                                                                      
        if (file_cln > fat_fd->map.file_cln)                          
        {                                                             
            cur_cln = fat_fd->map.disk_cln;                           
   11134:	35911038 	ldrcc	r1, [r1, #56]	; 0x38                        
            count = file_cln - fat_fd->map.file_cln;                  
        }                                                             
        else                                                          
        {                                                             
            cur_cln = fat_fd->cln;                                    
   11138:	2595101c 	ldrcs	r1, [r5, #28]                               
        uint32_t   i;                                                 
                                                                      
        if (file_cln > fat_fd->map.file_cln)                          
        {                                                             
            cur_cln = fat_fd->map.disk_cln;                           
            count = file_cln - fat_fd->map.file_cln;                  
   1113c:	306aa002 	rsbcc	sl, sl, r2                                  
        }                                                             
        else                                                          
        {                                                             
            cur_cln = fat_fd->cln;                                    
   11140:	21a0a002 	movcs	sl, r2                                      
        uint32_t   count;                                             
        uint32_t   i;                                                 
                                                                      
        if (file_cln > fat_fd->map.file_cln)                          
        {                                                             
            cur_cln = fat_fd->map.disk_cln;                           
   11144:	358d1000 	strcc	r1, [sp]                                    
            count = file_cln - fat_fd->map.file_cln;                  
        }                                                             
        else                                                          
        {                                                             
            cur_cln = fat_fd->cln;                                    
   11148:	258d1000 	strcs	r1, [sp]                                    
            count = file_cln;                                         
        }                                                             
                                                                      
        /* skip over the clusters */                                  
        for (i = 0; i < count; i++)                                   
   1114c:	e35a0000 	cmp	sl, #0                                        
   11150:	0a000010 	beq	11198 <fat_file_lseek+0x88>                   
   11154:	e3a08000 	mov	r8, #0                                        
   11158:	ea000002 	b	11168 <fat_file_lseek+0x58>                     
   1115c:	e158000a 	cmp	r8, sl                                        
   11160:	e59d1000 	ldr	r1, [sp]                                      
   11164:	0a00000b 	beq	11198 <fat_file_lseek+0x88>                   
        {                                                             
            rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);     
   11168:	e1a00004 	mov	r0, r4                                        
   1116c:	e1a0200d 	mov	r2, sp                                        
   11170:	eb001aed 	bl	17d2c <fat_get_fat_cluster>                    
            if ( rc != RC_OK )                                        
   11174:	e3500000 	cmp	r0, #0                                        
            cur_cln = fat_fd->cln;                                    
            count = file_cln;                                         
        }                                                             
                                                                      
        /* skip over the clusters */                                  
        for (i = 0; i < count; i++)                                   
   11178:	e2888001 	add	r8, r8, #1                                    
        {                                                             
            rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);     
            if ( rc != RC_OK )                                        
   1117c:	0afffff6 	beq	1115c <fat_file_lseek+0x4c>                   
                return rc;                                            
   11180:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   11184:	e1a03fc0 	asr	r3, r0, #31                                   <== NOT EXECUTED
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
}                                                                     
   11188:	e1a00002 	mov	r0, r2                                        
   1118c:	e1a01003 	mov	r1, r3                                        
   11190:	e28dd004 	add	sp, sp, #4                                    
   11194:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
            if ( rc != RC_OK )                                        
                return rc;                                            
        }                                                             
                                                                      
        /* update cache */                                            
        fat_fd->map.file_cln = file_cln;                              
   11198:	e5856034 	str	r6, [r5, #52]	; 0x34                          
        fat_fd->map.disk_cln = cur_cln;                               
   1119c:	e5851038 	str	r1, [r5, #56]	; 0x38                          
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
   111a0:	e3a02000 	mov	r2, #0                                        
                                                                      
        /* update cache */                                            
        fat_fd->map.file_cln = file_cln;                              
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
   111a4:	e5871000 	str	r1, [r7]                                      
    }                                                                 
    return RC_OK;                                                     
   111a8:	e3a03000 	mov	r3, #0                                        
   111ac:	eafffff5 	b	11188 <fat_file_lseek+0x78>                     
    )                                                                 
{                                                                     
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
        *disk_cln = fat_fd->map.disk_cln;                             
   111b0:	e5911038 	ldr	r1, [r1, #56]	; 0x38                          
        fat_fd->map.file_cln = file_cln;                              
        fat_fd->map.disk_cln = cur_cln;                               
                                                                      
        *disk_cln = cur_cln;                                          
    }                                                                 
    return RC_OK;                                                     
   111b4:	e3a02000 	mov	r2, #0                                        
   111b8:	e3a03000 	mov	r3, #0                                        
    )                                                                 
{                                                                     
    int rc = RC_OK;                                                   
                                                                      
    if (file_cln == fat_fd->map.file_cln)                             
        *disk_cln = fat_fd->map.disk_cln;                             
   111bc:	e5871000 	str	r1, [r7]                                      
   111c0:	eafffff0 	b	11188 <fat_file_lseek+0x78>                     
                                                                      

00011cf4 <fat_file_mark_removed>: void fat_file_mark_removed( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd ) {
   11cf4:	e92d4070 	push	{r4, r5, r6, lr}                             
   11cf8:	e5916020 	ldr	r6, [r1, #32]                                 
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
   11cfc:	e3560001 	cmp	r6, #1                                        
   11d00:	e1a04001 	mov	r4, r1                                        
   11d04:	e1a05000 	mov	r5, r0                                        
   11d08:	0a000007 	beq	11d2c <fat_file_mark_removed+0x38>            
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   11d0c:	e3560000 	cmp	r6, #0                                        
   11d10:	0a000017 	beq	11d74 <fat_file_mark_removed+0x80>            
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   11d14:	e5d53005 	ldrb	r3, [r5, #5]                                 <== NOT EXECUTED
   11d18:	e5952034 	ldr	r2, [r5, #52]	; 0x34                          <== NOT EXECUTED
   11d1c:	e2466002 	sub	r6, r6, #2                                    <== NOT EXECUTED
   11d20:	e0826316 	add	r6, r2, r6, lsl r3                            <== NOT EXECUTED
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
   11d24:	e5d53003 	ldrb	r3, [r5, #3]                                 
   11d28:	e1a06316 	lsl	r6, r6, r3                                    
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
   11d2c:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
   11d30:	e1a022a3 	lsr	r2, r3, #5                                    
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   11d34:	e08664a3 	add	r6, r6, r3, lsr #9                            
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
   11d38:	e202200f 	and	r2, r2, #15                                   
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   11d3c:	e0826206 	add	r6, r2, r6, lsl #4                            
   11d40:	e1a00004 	mov	r0, r4                                        
 */                                                                   
static inline void                                                    
_hash_insert(rtems_chain_control *hash, uint32_t   key1, uint32_t   key2,
             fat_file_fd_t *el)                                       
{                                                                     
    rtems_chain_append((hash) + ((key1) % FAT_HASH_MODULE), &(el)->link);
   11d44:	e2066001 	and	r6, r6, #1                                    
   11d48:	eb000b60 	bl	14ad0 <_Chain_Extract>                         
   11d4c:	e5953070 	ldr	r3, [r5, #112]	; 0x70                         
   11d50:	e1a02086 	lsl	r2, r6, #1                                    
   11d54:	e0826006 	add	r6, r2, r6                                    
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
   11d58:	e0830106 	add	r0, r3, r6, lsl #2                            
   11d5c:	e1a01004 	mov	r1, r4                                        
   11d60:	ebffdd5a 	bl	92d0 <_Chain_Append>                           
                                                                      
    _hash_delete(fs_info->vhash, key, fat_fd->ino, fat_fd);           
                                                                      
    _hash_insert(fs_info->rhash, key, fat_fd->ino, fat_fd);           
                                                                      
    fat_fd->flags |= FAT_FILE_REMOVED;                                
   11d64:	e5d43030 	ldrb	r3, [r4, #48]	; 0x30                         
   11d68:	e3833001 	orr	r3, r3, #1                                    
   11d6c:	e5c43030 	strb	r3, [r4, #48]	; 0x30                         
}                                                                     
   11d70:	e8bd8070 	pop	{r4, r5, r6, pc}                              
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   11d74:	e5d0300e 	ldrb	r3, [r0, #14]                                
   11d78:	e3130003 	tst	r3, #3                                        
        return fs_info->vol.rdir_loc;                                 
   11d7c:	15906020 	ldrne	r6, [r0, #32]                               
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   11d80:	1affffe7 	bne	11d24 <fat_file_mark_removed+0x30>            
   11d84:	eaffffe2 	b	11d14 <fat_file_mark_removed+0x20>              <== NOT EXECUTED
                                                                      

000111c4 <fat_file_open>: fat_file_open( fat_fs_info_t *fs_info, fat_dir_pos_t *dir_pos, fat_file_fd_t **fat_fd ) {
   111c4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   111c8:	e5915000 	ldr	r5, [r1]                                      
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
   111cc:	e3550001 	cmp	r5, #1                                        
   111d0:	e1a08001 	mov	r8, r1                                        
   111d4:	e1a04000 	mov	r4, r0                                        
   111d8:	e1a0a002 	mov	sl, r2                                        
   111dc:	0a000007 	beq	11200 <fat_file_open+0x3c>                    
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   111e0:	e3550000 	cmp	r5, #0                                        
   111e4:	0a000075 	beq	113c0 <fat_file_open+0x1fc>                   
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   111e8:	e5d42005 	ldrb	r2, [r4, #5]                                 
   111ec:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          
   111f0:	e2455002 	sub	r5, r5, #2                                    
   111f4:	e0835215 	add	r5, r3, r5, lsl r2                            
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
   111f8:	e5d43003 	ldrb	r3, [r4, #3]                                 
   111fc:	e1a05315 	lsl	r5, r5, r3                                    
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
   11200:	e5983004 	ldr	r3, [r8, #4]                                  
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
   11204:	e1a022a3 	lsr	r2, r3, #5                                    
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   11208:	e08554a3 	add	r5, r5, r3, lsr #9                            
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
   1120c:	e202200f 	and	r2, r2, #15                                   
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   11210:	e0825205 	add	r5, r2, r5, lsl #4                            
    uint32_t                               key1,                      
    uint32_t                               key2,                      
    fat_file_fd_t                          **ret                      
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
   11214:	e2052001 	and	r2, r5, #1                                    
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
   11218:	e1a07082 	lsl	r7, r2, #1                                    
   1121c:	e594306c 	ldr	r3, [r4, #108]	; 0x6c                         
   11220:	e0877002 	add	r7, r7, r2                                    
   11224:	e1a07107 	lsl	r7, r7, #2                                    
   11228:	e083c007 	add	ip, r3, r7                                    
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
   1122c:	e7933007 	ldr	r3, [r3, r7]                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
   11230:	e28cc004 	add	ip, ip, #4                                    
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
   11234:	e153000c 	cmp	r3, ip                                        
   11238:	0a000018 	beq	112a0 <fat_file_open+0xdc>                    
   1123c:	e5932020 	ldr	r2, [r3, #32]                                 
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
   11240:	e3520001 	cmp	r2, #1                                        
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   11244:	e2420002 	sub	r0, r2, #2                                    
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
   11248:	0a00000a 	beq	11278 <fat_file_open+0xb4>                    
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   1124c:	e3520000 	cmp	r2, #0                                        
   11250:	1a000003 	bne	11264 <fat_file_open+0xa0>                    
   11254:	e5d4200e 	ldrb	r2, [r4, #14]                                
   11258:	e3120003 	tst	r2, #3                                        
        return fs_info->vol.rdir_loc;                                 
   1125c:	15942020 	ldrne	r2, [r4, #32]                               
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   11260:	1a000002 	bne	11270 <fat_file_open+0xac>                    
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   11264:	e5d41005 	ldrb	r1, [r4, #5]                                 
   11268:	e5942034 	ldr	r2, [r4, #52]	; 0x34                          
   1126c:	e0822110 	add	r2, r2, r0, lsl r1                            
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
   11270:	e5d41003 	ldrb	r1, [r4, #3]                                 
   11274:	e1a02112 	lsl	r2, r2, r1                                    
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
   11278:	e5931024 	ldr	r1, [r3, #36]	; 0x24                          
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
   1127c:	e1a002a1 	lsr	r0, r1, #5                                    
   11280:	e200000f 	and	r0, r0, #15                                   
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   11284:	e08214a1 	add	r1, r2, r1, lsr #9                            
   11288:	e0801201 	add	r1, r0, r1, lsl #4                            
    {                                                                 
        fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;               
        uint32_t       ck =  fat_construct_key(fs_info, &ffd->dir_pos.sname);
                                                                      
        if ( (key1) == ck)                                            
   1128c:	e1550001 	cmp	r5, r1                                        
   11290:	0a000044 	beq	113a8 <fat_file_open+0x1e4>                   
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
            }                                                         
        }                                                             
        the_node = the_node->next;                                    
   11294:	e5933000 	ldr	r3, [r3]                                      
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
   11298:	e153000c 	cmp	r3, ip                                        
   1129c:	1affffe6 	bne	1123c <fat_file_open+0x78>                    
    uint32_t                               key2,                      
    fat_file_fd_t                          **ret                      
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
   112a0:	e5943070 	ldr	r3, [r4, #112]	; 0x70                         
   112a4:	e083c007 	add	ip, r3, r7                                    
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
   112a8:	e7933007 	ldr	r3, [r3, r7]                                  
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
   112ac:	e28cc004 	add	ip, ip, #4                                    
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
   112b0:	e15c0003 	cmp	ip, r3                                        
   112b4:	1a000003 	bne	112c8 <fat_file_open+0x104>                   
   112b8:	ea000045 	b	113d4 <fat_file_open+0x210>                     
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
            }                                                         
        }                                                             
        the_node = the_node->next;                                    
   112bc:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
    )                                                                 
{                                                                     
    uint32_t          mod = (key1) % FAT_HASH_MODULE;                 
    rtems_chain_node *the_node = rtems_chain_first(hash + mod);       
                                                                      
    for ( ; !rtems_chain_is_tail((hash) + mod, the_node) ; )          
   112c0:	e15c0003 	cmp	ip, r3                                        <== NOT EXECUTED
   112c4:	0a000042 	beq	113d4 <fat_file_open+0x210>                   <== NOT EXECUTED
   112c8:	e5932020 	ldr	r2, [r3, #32]                                 <== NOT EXECUTED
fat_cluster_num_to_sector512_num(                                     
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
   112cc:	e3520001 	cmp	r2, #1                                        <== NOT EXECUTED
   112d0:	0a00000b 	beq	11304 <fat_file_open+0x140>                   <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   112d4:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
   112d8:	1a000003 	bne	112ec <fat_file_open+0x128>                   <== NOT EXECUTED
   112dc:	e5d4100e 	ldrb	r1, [r4, #14]                                <== NOT EXECUTED
   112e0:	e3110003 	tst	r1, #3                                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
   112e4:	15942020 	ldrne	r2, [r4, #32]                               <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   112e8:	1a000003 	bne	112fc <fat_file_open+0x138>                   <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   112ec:	e5d41005 	ldrb	r1, [r4, #5]                                 <== NOT EXECUTED
   112f0:	e5940034 	ldr	r0, [r4, #52]	; 0x34                          <== NOT EXECUTED
   112f4:	e2422002 	sub	r2, r2, #2                                    <== NOT EXECUTED
   112f8:	e0802112 	add	r2, r0, r2, lsl r1                            <== NOT EXECUTED
    )                                                                 
{                                                                     
    if (cln == 1)                                                     
        return 1;                                                     
                                                                      
    return (fat_cluster_num_to_sector_num(fs_info, cln) <<            
   112fc:	e5d40003 	ldrb	r0, [r4, #3]                                 <== NOT EXECUTED
   11300:	e1a02012 	lsl	r2, r2, r0                                    <== NOT EXECUTED
              (pos->ofs >> FAT_SECTOR512_BITS)) << 4)              +  
   11304:	e5931024 	ldr	r1, [r3, #36]	; 0x24                          <== NOT EXECUTED
              ((pos->ofs >> 5) & (FAT_DIRENTRIES_PER_SEC512 - 1)) );  
   11308:	e1a002a1 	lsr	r0, r1, #5                                    <== NOT EXECUTED
   1130c:	e200000f 	and	r0, r0, #15                                   <== NOT EXECUTED
static inline uint32_t                                                
fat_construct_key(                                                    
    const fat_fs_info_t                  *fs_info,                    
    fat_pos_t                            *pos)                        
{                                                                     
    return ( ((fat_cluster_num_to_sector512_num(fs_info, pos->cln) +  
   11310:	e08214a1 	add	r1, r2, r1, lsr #9                            <== NOT EXECUTED
   11314:	e0801201 	add	r1, r0, r1, lsl #4                            <== NOT EXECUTED
    {                                                                 
        fat_file_fd_t *ffd = (fat_file_fd_t *)the_node;               
        uint32_t       ck =  fat_construct_key(fs_info, &ffd->dir_pos.sname);
                                                                      
        if ( (key1) == ck)                                            
   11318:	e1550001 	cmp	r5, r1                                        <== NOT EXECUTED
   1131c:	1affffe6 	bne	112bc <fat_file_open+0xf8>                    <== NOT EXECUTED
        {                                                             
            if ( ((key2) == 0) || ((key2) == ffd->ino) )              
   11320:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   11324:	0a000038 	beq	1140c <fat_file_open+0x248>                   <== NOT EXECUTED
   11328:	e593200c 	ldr	r2, [r3, #12]                                 <== NOT EXECUTED
   1132c:	e1550002 	cmp	r5, r2                                        <== NOT EXECUTED
   11330:	1affffe1 	bne	112bc <fat_file_open+0xf8>                    <== NOT EXECUTED
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
   11334:	e3a0b000 	mov	fp, #0                                        <== NOT EXECUTED
    }                                                                 
                                                                      
    /* access "removed-but-still-open" hash table */                  
    rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);   
                                                                      
    lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
   11338:	e3a00044 	mov	r0, #68	; 0x44                                
   1133c:	ebffcd48 	bl	4864 <malloc>                                  
    if ( lfat_fd == NULL )                                            
   11340:	e3500000 	cmp	r0, #0                                        
    }                                                                 
                                                                      
    /* access "removed-but-still-open" hash table */                  
    rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);   
                                                                      
    lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
   11344:	e1a06000 	mov	r6, r0                                        
   11348:	e58a0000 	str	r0, [sl]                                      
    if ( lfat_fd == NULL )                                            
   1134c:	0a000030 	beq	11414 <fat_file_open+0x250>                   
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
   11350:	e3a01000 	mov	r1, #0                                        
   11354:	e3a02044 	mov	r2, #68	; 0x44                                
   11358:	eb002432 	bl	1a428 <memset>                                 
                                                                      
    lfat_fd->links_num = 1;                                           
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
   1135c:	e5d6c030 	ldrb	ip, [r6, #48]	; 0x30                         
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
                                                                      
    lfat_fd->dir_pos = *dir_pos;                                      
   11360:	e898000f 	ldm	r8, {r0, r1, r2, r3}                          
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
                                                                      
    lfat_fd->links_num = 1;                                           
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
   11364:	e3cce001 	bic	lr, ip, #1                                    
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
   11368:	e3e09000 	mvn	r9, #0                                        
                                                                      
    lfat_fd->dir_pos = *dir_pos;                                      
   1136c:	e2868020 	add	r8, r6, #32                                   
                                                                      
    if ( rc != RC_OK )                                                
   11370:	e35b0000 	cmp	fp, #0                                        
    if ( lfat_fd == NULL )                                            
        rtems_set_errno_and_return_minus_one( ENOMEM );               
                                                                      
    memset(lfat_fd, 0, sizeof(fat_file_fd_t));                        
                                                                      
    lfat_fd->links_num = 1;                                           
   11374:	e3a0c001 	mov	ip, #1                                        
   11378:	e586c008 	str	ip, [r6, #8]                                  
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
   1137c:	e5c6e030 	strb	lr, [r6, #48]	; 0x30                         
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
   11380:	e586903c 	str	r9, [r6, #60]	; 0x3c                          
                                                                      
    lfat_fd->dir_pos = *dir_pos;                                      
   11384:	e888000f 	stm	r8, {r0, r1, r2, r3}                          
                                                                      
    if ( rc != RC_OK )                                                
        lfat_fd->ino = key;                                           
   11388:	1586500c 	strne	r5, [r6, #12]                               
    lfat_fd->flags &= ~FAT_FILE_REMOVED;                              
    lfat_fd->map.last_cln = FAT_UNDEFINED_VALUE;                      
                                                                      
    lfat_fd->dir_pos = *dir_pos;                                      
                                                                      
    if ( rc != RC_OK )                                                
   1138c:	0a000012 	beq	113dc <fat_file_open+0x218>                   
 */                                                                   
static inline void                                                    
_hash_insert(rtems_chain_control *hash, uint32_t   key1, uint32_t   key2,
             fat_file_fd_t *el)                                       
{                                                                     
    rtems_chain_append((hash) + ((key1) % FAT_HASH_MODULE), &(el)->link);
   11390:	e594006c 	ldr	r0, [r4, #108]	; 0x6c                         
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
   11394:	e1a01006 	mov	r1, r6                                        
   11398:	e0800007 	add	r0, r0, r7                                    
   1139c:	ebffdfcb 	bl	92d0 <_Chain_Append>                           
    /*                                                                
     * other fields of fat-file descriptor will be initialized on upper
     * level                                                          
     */                                                               
                                                                      
    return RC_OK;                                                     
   113a0:	e3a00000 	mov	r0, #0                                        
}                                                                     
   113a4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);     
    if ( rc == RC_OK )                                                
    {                                                                 
        /* return pointer to fat_file_descriptor allocated before */  
        (*fat_fd) = lfat_fd;                                          
        lfat_fd->links_num++;                                         
   113a8:	e5932008 	ldr	r2, [r3, #8]                                  
   113ac:	e2822001 	add	r2, r2, #1                                    
    /* access "valid" hash table */                                   
    rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);     
    if ( rc == RC_OK )                                                
    {                                                                 
        /* return pointer to fat_file_descriptor allocated before */  
        (*fat_fd) = lfat_fd;                                          
   113b0:	e58a3000 	str	r3, [sl]                                      
        lfat_fd->links_num++;                                         
        return rc;                                                    
   113b4:	e3a00000 	mov	r0, #0                                        
    rc = _hash_search(fs_info, fs_info->vhash, key, 0, &lfat_fd);     
    if ( rc == RC_OK )                                                
    {                                                                 
        /* return pointer to fat_file_descriptor allocated before */  
        (*fat_fd) = lfat_fd;                                          
        lfat_fd->links_num++;                                         
   113b8:	e5832008 	str	r2, [r3, #8]                                  
        return rc;                                                    
   113bc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   113c0:	e5d0300e 	ldrb	r3, [r0, #14]                                
   113c4:	e3130003 	tst	r3, #3                                        
        return fs_info->vol.rdir_loc;                                 
   113c8:	15905020 	ldrne	r5, [r0, #32]                               
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   113cc:	1affff89 	bne	111f8 <fat_file_open+0x34>                    
   113d0:	eaffff84 	b	111e8 <fat_file_open+0x24>                      <== NOT EXECUTED
                return 0;                                             
            }                                                         
        }                                                             
        the_node = the_node->next;                                    
    }                                                                 
    return -1;                                                        
   113d4:	e3e0b000 	mvn	fp, #0                                        
   113d8:	eaffffd6 	b	11338 <fat_file_open+0x174>                     
                                                                      
    if ( rc != RC_OK )                                                
        lfat_fd->ino = key;                                           
    else                                                              
    {                                                                 
        lfat_fd->ino = fat_get_unique_ino(fs_info);                   
   113dc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   113e0:	eb000681 	bl	12dec <fat_get_unique_ino>                     <== NOT EXECUTED
                                                                      
        if ( lfat_fd->ino == 0 )                                      
   113e4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                                                                      
    if ( rc != RC_OK )                                                
        lfat_fd->ino = key;                                           
    else                                                              
    {                                                                 
        lfat_fd->ino = fat_get_unique_ino(fs_info);                   
   113e8:	e586000c 	str	r0, [r6, #12]                                 <== NOT EXECUTED
                                                                      
        if ( lfat_fd->ino == 0 )                                      
   113ec:	1affffe7 	bne	11390 <fat_file_open+0x1cc>                   <== NOT EXECUTED
        {                                                             
            free((*fat_fd));                                          
   113f0:	e59a0000 	ldr	r0, [sl]                                      <== NOT EXECUTED
   113f4:	ebffcbd8 	bl	435c <free>                                    <== NOT EXECUTED
            /*                                                        
             * XXX: kernel resource is unsufficient, but not the memory,
             * but there is no suitable errno :(                      
             */                                                       
            rtems_set_errno_and_return_minus_one( ENOMEM );           
   113f8:	eb00212d 	bl	198b4 <__errno>                                <== NOT EXECUTED
   113fc:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   11400:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   11404:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   11408:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
        if ( (key1) == ck)                                            
        {                                                             
            if ( ((key2) == 0) || ((key2) == ffd->ino) )              
            {                                                         
                *ret = (void *)the_node;                              
                return 0;                                             
   1140c:	e1a0b005 	mov	fp, r5                                        <== NOT EXECUTED
   11410:	eaffffc8 	b	11338 <fat_file_open+0x174>                     <== NOT EXECUTED
    /* access "removed-but-still-open" hash table */                  
    rc = _hash_search(fs_info, fs_info->rhash, key, key, &lfat_fd);   
                                                                      
    lfat_fd = (*fat_fd) = (fat_file_fd_t*)malloc(sizeof(fat_file_fd_t));
    if ( lfat_fd == NULL )                                            
        rtems_set_errno_and_return_minus_one( ENOMEM );               
   11414:	eb002126 	bl	198b4 <__errno>                                <== NOT EXECUTED
   11418:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   1141c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   11420:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   11424:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
                                                                      

0001143c <fat_file_read>: fat_file_fd_t *fat_fd, uint32_t start, uint32_t count, uint8_t *buf ) {
   1143c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    int            rc = RC_OK;                                        
    ssize_t        ret = 0;                                           
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
   11440:	e3a07000 	mov	r7, #0                                        
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    uint8_t                              *buf                         
)                                                                     
{                                                                     
   11444:	e24dd00c 	sub	sp, sp, #12                                   
    uint32_t       sec = 0;                                           
    uint32_t       byte = 0;                                          
    uint32_t       c = 0;                                             
                                                                      
    /* it couldn't be removed - otherwise cache update will be broken */
    if (count == 0)                                                   
   11448:	e2535000 	subs	r5, r3, #0                                   
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    uint8_t                              *buf                         
)                                                                     
{                                                                     
   1144c:	e1a04000 	mov	r4, r0                                        
   11450:	e1a0a001 	mov	sl, r1                                        
   11454:	e1a06002 	mov	r6, r2                                        
   11458:	e59d9030 	ldr	r9, [sp, #48]	; 0x30                          
    int            rc = RC_OK;                                        
    ssize_t        ret = 0;                                           
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
   1145c:	e58d7008 	str	r7, [sp, #8]                                  
    uint32_t       byte = 0;                                          
    uint32_t       c = 0;                                             
                                                                      
    /* it couldn't be removed - otherwise cache update will be broken */
    if (count == 0)                                                   
        return cmpltd;                                                
   11460:	01a00005 	moveq	r0, r5                                      
    uint32_t       sec = 0;                                           
    uint32_t       byte = 0;                                          
    uint32_t       c = 0;                                             
                                                                      
    /* it couldn't be removed - otherwise cache update will be broken */
    if (count == 0)                                                   
   11464:	0a000044 	beq	1157c <fat_file_read+0x140>                   
                                                                      
    /*                                                                
     * >= because start is offset and computed from 0 and file_size   
     * computed from 1                                                
     */                                                               
    if ( start >= fat_fd->fat_file_size )                             
   11468:	e5913018 	ldr	r3, [r1, #24]                                 
   1146c:	e1530002 	cmp	r3, r2                                        
   11470:	9a000043 	bls	11584 <fat_file_read+0x148>                   
        return FAT_EOF;                                               
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
   11474:	e1550003 	cmp	r5, r3                                        
   11478:	9a000043 	bls	1158c <fat_file_read+0x150>                   
        (start > fat_fd->fat_file_size - count))                      
        count = fat_fd->fat_file_size - start;                        
   1147c:	e0665003 	rsb	r5, r6, r3                                    
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   11480:	e59a3020 	ldr	r3, [sl, #32]                                 
   11484:	e3530001 	cmp	r3, #1                                        
   11488:	0a000043 	beq	1159c <fat_file_read+0x160>                   
            return -1;                                                
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
   1148c:	e5d4b008 	ldrb	fp, [r4, #8]                                 
   11490:	e1a0bb36 	lsr	fp, r6, fp                                    
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
   11494:	e1a00004 	mov	r0, r4                                        
   11498:	e1a0100a 	mov	r1, sl                                        
   1149c:	e1a0200b 	mov	r2, fp                                        
   114a0:	e28d3008 	add	r3, sp, #8                                    
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
   114a4:	e1d480b6 	ldrh	r8, [r4, #6]                                 
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
   114a8:	ebffff18 	bl	11110 <fat_file_lseek>                         
    if (rc != RC_OK)                                                  
   114ac:	e2507000 	subs	r7, r0, #0                                   
   114b0:	1a000033 	bne	11584 <fat_file_read+0x148>                   
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
   114b4:	e3550000 	cmp	r5, #0                                        
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
   114b8:	e2488001 	sub	r8, r8, #1                                    
   114bc:	e0068008 	and	r8, r6, r8                                    
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
   114c0:	01a00005 	moveq	r0, r5                                      
                                                                      
        return ret;                                                   
    }                                                                 
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
   114c4:	e58d8004 	str	r8, [sp, #4]                                  
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
   114c8:	01a07000 	moveq	r7, r0                                      
   114cc:	01a08000 	moveq	r8, r0                                      
   114d0:	0a00004a 	beq	11600 <fat_file_read+0x1c4>                   
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
   114d4:	e5d48002 	ldrb	r8, [r4, #2]                                 
   114d8:	e1d420b0 	ldrh	r2, [r4]                                     
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
   114dc:	e59dc004 	ldr	ip, [sp, #4]                                  
   114e0:	ea000003 	b	114f4 <fat_file_read+0xb8>                      
   114e4:	e0555006 	subs	r5, r5, r6                                   
   114e8:	0a000043 	beq	115fc <fat_file_read+0x1c0>                   
   114ec:	e5d48002 	ldrb	r8, [r4, #2]                                 
   114f0:	e1d420b0 	ldrh	r2, [r4]                                     
    {                                                                 
        c = MIN(count, (fs_info->vol.bpc - ofs));                     
   114f4:	e1d460b6 	ldrh	r6, [r4, #6]                                 
                                                                      
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
   114f8:	e59d1008 	ldr	r1, [sp, #8]                                  
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    while (count > 0)                                                 
    {                                                                 
        c = MIN(count, (fs_info->vol.bpc - ofs));                     
   114fc:	e06c6006 	rsb	r6, ip, r6                                    
   11500:	e1560005 	cmp	r6, r5                                        
   11504:	21a06005 	movcs	r6, r5                                      
   11508:	e3510000 	cmp	r1, #0                                        
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   1150c:	e2411002 	sub	r1, r1, #2                                    
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   11510:	1a000003 	bne	11524 <fat_file_read+0xe8>                    
   11514:	e5d4300e 	ldrb	r3, [r4, #14]                                <== NOT EXECUTED
   11518:	e3130003 	tst	r3, #3                                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
   1151c:	15941020 	ldrne	r1, [r4, #32]                               <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   11520:	1a000002 	bne	11530 <fat_file_read+0xf4>                    <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   11524:	e5d40005 	ldrb	r0, [r4, #5]                                 
   11528:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          
   1152c:	e0831011 	add	r1, r3, r1, lsl r0                            
                                                                      
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
        sec += (ofs >> fs_info->vol.sec_log2);                        
        byte = ofs & (fs_info->vol.bps - 1);                          
   11530:	e2422001 	sub	r2, r2, #1                                    
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
   11534:	e089e007 	add	lr, r9, r7                                    
   11538:	e002200c 	and	r2, r2, ip                                    
   1153c:	e1a03006 	mov	r3, r6                                        
   11540:	e1a00004 	mov	r0, r4                                        
   11544:	e081183c 	add	r1, r1, ip, lsr r8                            
   11548:	e58de000 	str	lr, [sp]                                      
   1154c:	eb0002d2 	bl	1209c <_fat_block_read>                        
        if ( ret < 0 )                                                
   11550:	e3500000 	cmp	r0, #0                                        
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
   11554:	e0877006 	add	r7, r7, r6                                    
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
   11558:	e28d2008 	add	r2, sp, #8                                    
   1155c:	e1a00004 	mov	r0, r4                                        
        sec = fat_cluster_num_to_sector_num(fs_info, cur_cln);        
        sec += (ofs >> fs_info->vol.sec_log2);                        
        byte = ofs & (fs_info->vol.bps - 1);                          
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
        if ( ret < 0 )                                                
   11560:	ba00002e 	blt	11620 <fat_file_read+0x1e4>                   
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        save_cln = cur_cln;                                           
   11564:	e59d8008 	ldr	r8, [sp, #8]                                  
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
   11568:	e1a01008 	mov	r1, r8                                        
   1156c:	eb0019ee 	bl	17d2c <fat_get_fat_cluster>                    
        if ( rc != RC_OK )                                            
   11570:	e250c000 	subs	ip, r0, #0                                   
   11574:	0affffda 	beq	114e4 <fat_file_read+0xa8>                    
            return -1;                                                
                                                                      
        count -= c;                                                   
        cmpltd += c;                                                  
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
   11578:	e1a0000c 	mov	r0, ip                                        <== NOT EXECUTED
    fat_fd->map.file_cln = cl_start +                                 
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
    fat_fd->map.disk_cln = save_cln;                                  
                                                                      
    return cmpltd;                                                    
}                                                                     
   1157c:	e28dd00c 	add	sp, sp, #12                                   
   11580:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
    cl_start = start >> fs_info->vol.bpc_log2;                        
    save_ofs = ofs = start & (fs_info->vol.bpc - 1);                  
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
    if (rc != RC_OK)                                                  
   11584:	e1a00007 	mov	r0, r7                                        
   11588:	eafffffb 	b	1157c <fat_file_read+0x140>                     
     */                                                               
    if ( start >= fat_fd->fat_file_size )                             
        return FAT_EOF;                                               
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
        (start > fat_fd->fat_file_size - count))                      
   1158c:	e0652003 	rsb	r2, r5, r3                                    
     * computed from 1                                                
     */                                                               
    if ( start >= fat_fd->fat_file_size )                             
        return FAT_EOF;                                               
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
   11590:	e1560002 	cmp	r6, r2                                        
   11594:	9affffb9 	bls	11480 <fat_file_read+0x44>                    
   11598:	eaffffb7 	b	1147c <fat_file_read+0x40>                      
        (start > fat_fd->fat_file_size - count))                      
        count = fat_fd->fat_file_size - start;                        
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   1159c:	e59a3024 	ldr	r3, [sl, #36]	; 0x24                          
   115a0:	e3530000 	cmp	r3, #0                                        
   115a4:	1affffb8 	bne	1148c <fat_file_read+0x50>                    
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
   115a8:	e5d4300e 	ldrb	r3, [r4, #14]                                
                                                                      
    if ((count > fat_fd->fat_file_size) ||                            
        (start > fat_fd->fat_file_size - count))                      
        count = fat_fd->fat_file_size - start;                        
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   115ac:	e3130003 	tst	r3, #3                                        
   115b0:	0affffb5 	beq	1148c <fat_file_read+0x50>                    
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);    
   115b4:	e59a301c 	ldr	r3, [sl, #28]                                 
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   115b8:	e3530000 	cmp	r3, #0                                        
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   115bc:	15d41005 	ldrbne	r1, [r4, #5]                               
   115c0:	15942034 	ldrne	r2, [r4, #52]	; 0x34                        
   115c4:	12433002 	subne	r3, r3, #2                                  
   115c8:	10821113 	addne	r1, r2, r3, lsl r1                          
        sec += (start >> fs_info->vol.sec_log2);                      
        byte = start & (fs_info->vol.bps - 1);                        
   115cc:	e1d420b0 	ldrh	r2, [r4]                                     
                                                                      
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        sec = fat_cluster_num_to_sector_num(fs_info, fat_fd->cln);    
        sec += (start >> fs_info->vol.sec_log2);                      
   115d0:	e5d43002 	ldrb	r3, [r4, #2]                                 
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
        return fs_info->vol.rdir_loc;                                 
   115d4:	05941020 	ldreq	r1, [r4, #32]                               
        byte = start & (fs_info->vol.bps - 1);                        
   115d8:	e2422001 	sub	r2, r2, #1                                    
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, count, buf);        
   115dc:	e0811336 	add	r1, r1, r6, lsr r3                            
   115e0:	e1a00004 	mov	r0, r4                                        
   115e4:	e0062002 	and	r2, r6, r2                                    
   115e8:	e1a03005 	mov	r3, r5                                        
   115ec:	e58d9000 	str	r9, [sp]                                      
   115f0:	eb0002a9 	bl	1209c <_fat_block_read>                        
        if ( ret < 0 )                                                
            return -1;                                                
   115f4:	e1800fc0 	orr	r0, r0, r0, asr #31                           
   115f8:	eaffffdf 	b	1157c <fat_file_read+0x140>                     
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        ofs = 0;                                                      
   115fc:	e1a00007 	mov	r0, r7                                        
    }                                                                 
                                                                      
    /* update cache */                                                
    /* XXX: check this - I'm not sure :( */                           
    fat_fd->map.file_cln = cl_start +                                 
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
   11600:	e59d2004 	ldr	r2, [sp, #4]                                  
   11604:	e5d43008 	ldrb	r3, [r4, #8]                                 
   11608:	e2426001 	sub	r6, r2, #1                                    
   1160c:	e0867007 	add	r7, r6, r7                                    
        ofs = 0;                                                      
    }                                                                 
                                                                      
    /* update cache */                                                
    /* XXX: check this - I'm not sure :( */                           
    fat_fd->map.file_cln = cl_start +                                 
   11610:	e08bb337 	add	fp, fp, r7, lsr r3                            
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
    fat_fd->map.disk_cln = save_cln;                                  
   11614:	e58a8038 	str	r8, [sl, #56]	; 0x38                          
        ofs = 0;                                                      
    }                                                                 
                                                                      
    /* update cache */                                                
    /* XXX: check this - I'm not sure :( */                           
    fat_fd->map.file_cln = cl_start +                                 
   11618:	e58ab034 	str	fp, [sl, #52]	; 0x34                          
                           ((save_ofs + cmpltd - 1) >> fs_info->vol.bpc_log2);
    fat_fd->map.disk_cln = save_cln;                                  
                                                                      
    return cmpltd;                                                    
   1161c:	eaffffd6 	b	1157c <fat_file_read+0x140>                     
        sec += (ofs >> fs_info->vol.sec_log2);                        
        byte = ofs & (fs_info->vol.bps - 1);                          
                                                                      
        ret = _fat_block_read(fs_info, sec, byte, c, buf + cmpltd);   
        if ( ret < 0 )                                                
            return -1;                                                
   11620:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   11624:	eaffffd4 	b	1157c <fat_file_read+0x140>                     <== NOT EXECUTED
                                                                      

00011d88 <fat_file_size>: int fat_file_size( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd ) {
   11d88:	e92d4070 	push	{r4, r5, r6, lr}                             
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   11d8c:	e5913020 	ldr	r3, [r1, #32]                                 
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
   11d90:	e591601c 	ldr	r6, [r1, #28]                                 
int                                                                   
fat_file_size(                                                        
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
   11d94:	e24dd004 	sub	sp, sp, #4                                    
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   11d98:	e3530001 	cmp	r3, #1                                        
int                                                                   
fat_file_size(                                                        
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
   11d9c:	e1a05001 	mov	r5, r1                                        
   11da0:	e1a04000 	mov	r4, r0                                        
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
   11da4:	e58d6000 	str	r6, [sp]                                      
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   11da8:	0a00001e 	beq	11e28 <fat_file_size+0xa0>                    
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   11dac:	e5942010 	ldr	r2, [r4, #16]                                 
   11db0:	e5941014 	ldr	r1, [r4, #20]                                 
   11db4:	e0062002 	and	r2, r6, r2                                    
    {                                                                 
        fat_fd->fat_file_size = fs_info->vol.rdir_size;               
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
   11db8:	e3a03000 	mov	r3, #0                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   11dbc:	e1510002 	cmp	r1, r2                                        
    {                                                                 
        fat_fd->fat_file_size = fs_info->vol.rdir_size;               
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
   11dc0:	e5853018 	str	r3, [r5, #24]                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   11dc4:	8a00000b 	bhi	11df8 <fat_file_size+0x70>                    
   11dc8:	ea000012 	b	11e18 <fat_file_size+0x90>                      <== NOT EXECUTED
   11dcc:	e5940010 	ldr	r0, [r4, #16]                                 
   11dd0:	e59d3000 	ldr	r3, [sp]                                      
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
   11dd4:	e1d420b6 	ldrh	r2, [r4, #6]                                 
   11dd8:	e595c018 	ldr	ip, [r5, #24]                                 
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   11ddc:	e5941014 	ldr	r1, [r4, #20]                                 
   11de0:	e0030000 	and	r0, r3, r0                                    
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
   11de4:	e08c2002 	add	r2, ip, r2                                    
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   11de8:	e1500001 	cmp	r0, r1                                        
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
   11dec:	e5852018 	str	r2, [r5, #24]                                 
        return rc;                                                    
    }                                                                 
                                                                      
    fat_fd->fat_file_size = 0;                                        
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   11df0:	2a000009 	bcs	11e1c <fat_file_size+0x94>                    
   11df4:	e1a06003 	mov	r6, r3                                        <== NOT EXECUTED
    {                                                                 
        save_cln = cur_cln;                                           
        rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);         
   11df8:	e1a01006 	mov	r1, r6                                        
   11dfc:	e1a00004 	mov	r0, r4                                        
   11e00:	e1a0200d 	mov	r2, sp                                        
   11e04:	eb0017c8 	bl	17d2c <fat_get_fat_cluster>                    
        if ( rc != RC_OK )                                            
   11e08:	e3500000 	cmp	r0, #0                                        
   11e0c:	0affffee 	beq	11dcc <fat_file_size+0x44>                    
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
    }                                                                 
    fat_fd->map.last_cln = save_cln;                                  
    return rc;                                                        
}                                                                     
   11e10:	e28dd004 	add	sp, sp, #4                                    
   11e14:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    fat_file_fd_t                        *fat_fd                      
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
   11e18:	e1a06003 	mov	r6, r3                                        <== NOT EXECUTED
        if ( rc != RC_OK )                                            
            return rc;                                                
                                                                      
        fat_fd->fat_file_size += fs_info->vol.bpc;                    
    }                                                                 
    fat_fd->map.last_cln = save_cln;                                  
   11e1c:	e585603c 	str	r6, [r5, #60]	; 0x3c                          
    return rc;                                                        
   11e20:	e3a00000 	mov	r0, #0                                        
   11e24:	eafffff9 	b	11e10 <fat_file_size+0x88>                      
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   11e28:	e5910024 	ldr	r0, [r1, #36]	; 0x24                          
   11e2c:	e3500000 	cmp	r0, #0                                        
   11e30:	1affffdd 	bne	11dac <fat_file_size+0x24>                    
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
   11e34:	e5d4300e 	ldrb	r3, [r4, #14]                                
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = fat_fd->cln;                             
    uint32_t       save_cln = 0;                                      
                                                                      
    /* Have we requested root dir size for FAT12/16? */               
    if ((FAT_FD_OF_ROOT_DIR(fat_fd)) &&                               
   11e38:	e3130003 	tst	r3, #3                                        
   11e3c:	0affffda 	beq	11dac <fat_file_size+0x24>                    
        (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)))                
    {                                                                 
        fat_fd->fat_file_size = fs_info->vol.rdir_size;               
   11e40:	e594302c 	ldr	r3, [r4, #44]	; 0x2c                          <== NOT EXECUTED
   11e44:	e5813018 	str	r3, [r1, #24]                                 <== NOT EXECUTED
        return rc;                                                    
   11e48:	eafffff0 	b	11e10 <fat_file_size+0x88>                      <== NOT EXECUTED
                                                                      

00011628 <fat_file_truncate>: fat_file_truncate( fat_fs_info_t *fs_info, fat_file_fd_t *fat_fd, uint32_t new_length ) {
   11628:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
    uint32_t       cur_cln = 0;                                       
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
   1162c:	e5913018 	ldr	r3, [r1, #24]                                 
fat_file_truncate(                                                    
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              new_length                  
    )                                                                 
{                                                                     
   11630:	e24dd008 	sub	sp, sp, #8                                    
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = 0;                                       
   11634:	e3a0c000 	mov	ip, #0                                        
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
   11638:	e3e06000 	mvn	r6, #0                                        
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
   1163c:	e1530002 	cmp	r3, r2                                        
fat_file_truncate(                                                    
    fat_fs_info_t                        *fs_info,                    
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              new_length                  
    )                                                                 
{                                                                     
   11640:	e1a05001 	mov	r5, r1                                        
   11644:	e1a04000 	mov	r4, r0                                        
    int            rc = RC_OK;                                        
    uint32_t       cur_cln = 0;                                       
   11648:	e58dc000 	str	ip, [sp]                                      
    uint32_t       cl_start = 0;                                      
    uint32_t       new_last_cln = FAT_UNDEFINED_VALUE;                
   1164c:	e58d6004 	str	r6, [sp, #4]                                  
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
   11650:	9a000029 	bls	116fc <fat_file_truncate+0xd4>                
        return rc;                                                    
                                                                      
    assert(fat_fd->fat_file_size);                                    
   11654:	e153000c 	cmp	r3, ip                                        
   11658:	0a00002a 	beq	11708 <fat_file_truncate+0xe0>                
                                                                      
    cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;
   1165c:	e1d060b6 	ldrh	r6, [r0, #6]                                 
   11660:	e5d07008 	ldrb	r7, [r0, #8]                                 
   11664:	e2466001 	sub	r6, r6, #1                                    
   11668:	e0866002 	add	r6, r6, r2                                    
   1166c:	e1a06736 	lsr	r6, r6, r7                                    
                                                                      
    if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size) 
   11670:	e1530716 	cmp	r3, r6, lsl r7                                
   11674:	9a000020 	bls	116fc <fat_file_truncate+0xd4>                
        return RC_OK;                                                 
                                                                      
    if (cl_start != 0)                                                
   11678:	e3560000 	cmp	r6, #0                                        
   1167c:	0a000004 	beq	11694 <fat_file_truncate+0x6c>                
    {                                                                 
        rc = fat_file_lseek(fs_info, fat_fd, cl_start - 1, &new_last_cln);
   11680:	e2462001 	sub	r2, r6, #1                                    
   11684:	e28d3004 	add	r3, sp, #4                                    
   11688:	ebfffea0 	bl	11110 <fat_file_lseek>                         
        if (rc != RC_OK)                                              
   1168c:	e3500000 	cmp	r0, #0                                        
   11690:	1a00001a 	bne	11700 <fat_file_truncate+0xd8>                
            return rc;                                                
                                                                      
    }                                                                 
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, cl_start, &cur_cln);         
   11694:	e1a00004 	mov	r0, r4                                        
   11698:	e1a01005 	mov	r1, r5                                        
   1169c:	e1a02006 	mov	r2, r6                                        
   116a0:	e1a0300d 	mov	r3, sp                                        
   116a4:	ebfffe99 	bl	11110 <fat_file_lseek>                         
    if (rc != RC_OK)                                                  
   116a8:	e3500000 	cmp	r0, #0                                        
   116ac:	1a000013 	bne	11700 <fat_file_truncate+0xd8>                
        return rc;                                                    
                                                                      
    rc = fat_free_fat_clusters_chain(fs_info, cur_cln);               
   116b0:	e1a00004 	mov	r0, r4                                        
   116b4:	e59d1000 	ldr	r1, [sp]                                      
   116b8:	eb001a79 	bl	180a4 <fat_free_fat_clusters_chain>            
    if (rc != RC_OK)                                                  
   116bc:	e3500000 	cmp	r0, #0                                        
   116c0:	1a00000e 	bne	11700 <fat_file_truncate+0xd8>                
        return rc;                                                    
                                                                      
    if (cl_start != 0)                                                
   116c4:	e3560000 	cmp	r6, #0                                        
   116c8:	0a00000c 	beq	11700 <fat_file_truncate+0xd8>                
    {                                                                 
        rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
   116cc:	e1a00004 	mov	r0, r4                                        
   116d0:	e59d1004 	ldr	r1, [sp, #4]                                  
   116d4:	e3e02000 	mvn	r2, #0                                        
   116d8:	eb0019e9 	bl	17e84 <fat_set_fat_cluster>                    
        if ( rc != RC_OK )                                            
   116dc:	e3500000 	cmp	r0, #0                                        
   116e0:	1a000006 	bne	11700 <fat_file_truncate+0xd8>                
            return rc;                                                
        fat_fd->map.file_cln = cl_start - 1;                          
        fat_fd->map.disk_cln = new_last_cln;                          
   116e4:	e59d3004 	ldr	r3, [sp, #4]                                  
    if (cl_start != 0)                                                
    {                                                                 
        rc = fat_set_fat_cluster(fs_info, new_last_cln, FAT_GENFAT_EOC);
        if ( rc != RC_OK )                                            
            return rc;                                                
        fat_fd->map.file_cln = cl_start - 1;                          
   116e8:	e2466001 	sub	r6, r6, #1                                    
   116ec:	e5856034 	str	r6, [r5, #52]	; 0x34                          
        fat_fd->map.disk_cln = new_last_cln;                          
   116f0:	e5853038 	str	r3, [r5, #56]	; 0x38                          
        fat_fd->map.last_cln = new_last_cln;                          
   116f4:	e585303c 	str	r3, [r5, #60]	; 0x3c                          
   116f8:	ea000000 	b	11700 <fat_file_truncate+0xd8>                  
    assert(fat_fd->fat_file_size);                                    
                                                                      
    cl_start = (new_length + fs_info->vol.bpc - 1) >> fs_info->vol.bpc_log2;
                                                                      
    if ((cl_start << fs_info->vol.bpc_log2) >= fat_fd->fat_file_size) 
        return RC_OK;                                                 
   116fc:	e1a0000c 	mov	r0, ip                                        
        fat_fd->map.file_cln = cl_start - 1;                          
        fat_fd->map.disk_cln = new_last_cln;                          
        fat_fd->map.last_cln = new_last_cln;                          
    }                                                                 
    return RC_OK;                                                     
}                                                                     
   11700:	e28dd008 	add	sp, sp, #8                                    
   11704:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      
                                                                      
    if ( new_length >= fat_fd->fat_file_size )                        
        return rc;                                                    
                                                                      
    assert(fat_fd->fat_file_size);                                    
   11708:	e59f000c 	ldr	r0, [pc, #12]	; 1171c <fat_file_truncate+0xf4><== NOT EXECUTED
   1170c:	e59f100c 	ldr	r1, [pc, #12]	; 11720 <fat_file_truncate+0xf8><== NOT EXECUTED
   11710:	e59f200c 	ldr	r2, [pc, #12]	; 11724 <fat_file_truncate+0xfc><== NOT EXECUTED
   11714:	e59f300c 	ldr	r3, [pc, #12]	; 11728 <fat_file_truncate+0x100><== NOT EXECUTED
   11718:	eb00081d 	bl	13794 <__assert_func>                          <== NOT EXECUTED
                                                                      

00011ad4 <fat_file_write>: fat_file_fd_t *fat_fd, uint32_t start, uint32_t count, const uint8_t *buf ) {
   11ad4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    bool           zero_fill = start > fat_fd->fat_file_size;         
    uint32_t       file_cln_initial = fat_fd->map.file_cln;           
    uint32_t       cln;                                               
                                                                      
                                                                      
    if ( count == 0 )                                                 
   11ad8:	e3530000 	cmp	r3, #0                                        
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    const uint8_t                        *buf                         
    )                                                                 
{                                                                     
   11adc:	e24dd020 	sub	sp, sp, #32                                   
   11ae0:	e1a07002 	mov	r7, r2                                        
    int            rc = RC_OK;                                        
    ssize_t        ret;                                               
    uint32_t       cmpltd = 0;                                        
    uint32_t       byte;                                              
    uint32_t       c = 0;                                             
   11ae4:	e3a02000 	mov	r2, #0                                        
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    const uint8_t                        *buf                         
    )                                                                 
{                                                                     
   11ae8:	e1a06000 	mov	r6, r0                                        
    int            rc = RC_OK;                                        
    ssize_t        ret;                                               
    uint32_t       cmpltd = 0;                                        
    uint32_t       byte;                                              
    uint32_t       c = 0;                                             
   11aec:	e58d2018 	str	r2, [sp, #24]                                 
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              start,                      
    uint32_t                              count,                      
    const uint8_t                        *buf                         
    )                                                                 
{                                                                     
   11af0:	e1a05001 	mov	r5, r1                                        
    int            rc = RC_OK;                                        
    ssize_t        ret;                                               
    uint32_t       cmpltd = 0;                                        
    uint32_t       byte;                                              
    uint32_t       c = 0;                                             
    bool           zero_fill = start > fat_fd->fat_file_size;         
   11af4:	e5912018 	ldr	r2, [r1, #24]                                 
    uint32_t       file_cln_initial = fat_fd->map.file_cln;           
   11af8:	e5919034 	ldr	r9, [r1, #52]	; 0x34                          
    uint32_t       cln;                                               
                                                                      
                                                                      
    if ( count == 0 )                                                 
        return cmpltd;                                                
   11afc:	01a00003 	moveq	r0, r3                                      
    bool           zero_fill = start > fat_fd->fat_file_size;         
    uint32_t       file_cln_initial = fat_fd->map.file_cln;           
    uint32_t       cln;                                               
                                                                      
                                                                      
    if ( count == 0 )                                                 
   11b00:	0a000056 	beq	11c60 <fat_file_write+0x18c>                  
        return cmpltd;                                                
                                                                      
    if (start >= fat_fd->size_limit)                                  
   11b04:	e5914014 	ldr	r4, [r1, #20]                                 
   11b08:	e1570004 	cmp	r7, r4                                        
   11b0c:	2a00004f 	bcs	11c50 <fat_file_write+0x17c>                  
        rtems_set_errno_and_return_minus_one(EFBIG);                  
                                                                      
    if (count > fat_fd->size_limit - start)                           
   11b10:	e0674004 	rsb	r4, r7, r4                                    
                                                                      
    if ( count == 0 )                                                 
        return cmpltd;                                                
                                                                      
    if (start >= fat_fd->size_limit)                                  
        rtems_set_errno_and_return_minus_one(EFBIG);                  
   11b14:	e1540003 	cmp	r4, r3                                        
   11b18:	21a04003 	movcs	r4, r3                                      
                                                                      
    if (count > fat_fd->size_limit - start)                           
        count = fat_fd->size_limit - start;                           
                                                                      
    rc = fat_file_extend(fs_info, fat_fd, zero_fill, start + count, &c);
   11b1c:	e084a007 	add	sl, r4, r7                                    
   11b20:	e1520007 	cmp	r2, r7                                        
   11b24:	23a02000 	movcs	r2, #0                                      
   11b28:	33a02001 	movcc	r2, #1                                      
   11b2c:	e28dc018 	add	ip, sp, #24                                   
   11b30:	e1a0300a 	mov	r3, sl                                        
   11b34:	e58dc000 	str	ip, [sp]                                      
   11b38:	ebffff55 	bl	11894 <fat_file_extend>                        
    if (RC_OK == rc)                                                  
   11b3c:	e3500000 	cmp	r0, #0                                        
   11b40:	1a000046 	bne	11c60 <fat_file_write+0x18c>                  
    {                                                                 
        /*                                                            
         * check whether there was enough room on device to locate    
         * file of 'start + count' bytes                              
         */                                                           
        if (c != (start + count))                                     
   11b44:	e59d3018 	ldr	r3, [sp, #24]                                 
   11b48:	e15a0003 	cmp	sl, r3                                        
            count = c - start;                                        
   11b4c:	10674003 	rsbne	r4, r7, r3                                  
 */                                                                   
static bool                                                           
 fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,         
                                 const uint8_t volume_type)           
{                                                                     
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
   11b50:	e5953020 	ldr	r3, [r5, #32]                                 
   11b54:	e3530001 	cmp	r3, #1                                        
         */                                                           
        if (c != (start + count))                                     
            count = c - start;                                        
                                                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
   11b58:	e5d6300e 	ldrb	r3, [r6, #14]                                
 */                                                                   
static bool                                                           
 fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,         
                                 const uint8_t volume_type)           
{                                                                     
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
   11b5c:	0a000050 	beq	11ca4 <fat_file_write+0x1d0>                  
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
   11b60:	e5d6a008 	ldrb	sl, [r6, #8]                                 
   11b64:	e1a03a37 	lsr	r3, r7, sl                                    
     const uint8_t                        *buf,                       
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
   11b68:	e28de020 	add	lr, sp, #32                                   
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
   11b6c:	e58d3010 	str	r3, [sp, #16]                                 
     const uint8_t                        *buf,                       
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
   11b70:	e3a03000 	mov	r3, #0                                        
   11b74:	e52e3004 	str	r3, [lr, #-4]!                                
    uint32_t       file_cln_cnt;                                      
    ssize_t        ret;                                               
    uint32_t       c;                                                 
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
   11b78:	e1a00006 	mov	r0, r6                                        
   11b7c:	e1a01005 	mov	r1, r5                                        
   11b80:	e59d2010 	ldr	r2, [sp, #16]                                 
   11b84:	e1a0300e 	mov	r3, lr                                        
     const uint8_t                        *buf,                       
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
   11b88:	e58de008 	str	lr, [sp, #8]                                  
    uint32_t       file_cln_cnt;                                      
    ssize_t        ret;                                               
    uint32_t       c;                                                 
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
   11b8c:	ebfffd5f 	bl	11110 <fat_file_lseek>                         
    if (RC_OK == rc)                                                  
   11b90:	e3500000 	cmp	r0, #0                                        
   11b94:	1a00003e 	bne	11c94 <fat_file_write+0x1c0>                  
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
    uint32_t       ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
   11b98:	e59d1010 	ldr	r1, [sp, #16]                                 
   11b9c:	e0477a11 	sub	r7, r7, r1, lsl sl                            
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
   11ba0:	e595301c 	ldr	r3, [r5, #28]                                 
   11ba4:	e59da01c 	ldr	sl, [sp, #28]                                 
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
    uint32_t       start_cln = start >> fs_info->vol.bpc_log2;        
    uint32_t       ofs_cln = start - (start_cln << fs_info->vol.bpc_log2);
   11ba8:	e58d7014 	str	r7, [sp, #20]                                 
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
    uint32_t       cur_cln = 0;                                       
    uint32_t       save_cln = 0; /* FIXME: This might be incorrect, cf. below */
   11bac:	e58d000c 	str	r0, [sp, #12]                                 
    bool           overwrite_cluster = false;                         
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
   11bb0:	e063a00a 	rsb	sl, r3, sl                                    
    uint32_t       ofs_cln_save = ofs_cln;                            
    uint32_t       bytes_to_write = count;                            
    uint32_t       file_cln_cnt;                                      
    ssize_t        ret;                                               
    uint32_t       c;                                                 
    bool           overwrite_cluster = false;                         
   11bb4:	e1a0b000 	mov	fp, r0                                        
     const uint32_t                        count,                     
     const uint8_t                        *buf,                       
     const uint32_t                        file_cln_initial)          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cmpltd = 0;                                        
   11bb8:	e1a08000 	mov	r8, r0                                        
                                                                      
    rc = fat_file_lseek(fs_info, fat_fd, start_cln, &cur_cln);        
    if (RC_OK == rc)                                                  
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
        while (   (RC_OK == rc)                                       
   11bbc:	e2943000 	adds	r3, r4, #0                                   
   11bc0:	13a03001 	movne	r3, #1                                      
   11bc4:	e3500000 	cmp	r0, #0                                        
   11bc8:	13a03000 	movne	r3, #0                                      
   11bcc:	e3530000 	cmp	r3, #0                                        
   11bd0:	0a000024 	beq	11c68 <fat_file_write+0x194>                  
               && (bytes_to_write > 0))                               
        {                                                             
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));    
   11bd4:	e1d630b6 	ldrh	r3, [r6, #6]                                 
   11bd8:	e0673003 	rsb	r3, r7, r3                                    
                                                                      
            if (file_cln_initial < file_cln_cnt)                      
                overwrite_cluster = true;                             
                                                                      
            ret = fat_cluster_write(fs_info,                          
   11bdc:	e59d1044 	ldr	r1, [sp, #68]	; 0x44                          
    {                                                                 
        file_cln_cnt = cur_cln - fat_fd->cln;                         
        while (   (RC_OK == rc)                                       
               && (bytes_to_write > 0))                               
        {                                                             
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));    
   11be0:	e1530004 	cmp	r3, r4                                        
   11be4:	21a03004 	movcs	r3, r4                                      
                                                                      
            if (file_cln_initial < file_cln_cnt)                      
   11be8:	e159000a 	cmp	r9, sl                                        
   11bec:	33a0b001 	movcc	fp, #1                                      
                overwrite_cluster = true;                             
                                                                      
            ret = fat_cluster_write(fs_info,                          
   11bf0:	e081c008 	add	ip, r1, r8                                    
               && (bytes_to_write > 0))                               
        {                                                             
            c = MIN(bytes_to_write, (fs_info->vol.bpc - ofs_cln));    
                                                                      
            if (file_cln_initial < file_cln_cnt)                      
                overwrite_cluster = true;                             
   11bf4:	e1a0e00b 	mov	lr, fp                                        
                                                                      
            ret = fat_cluster_write(fs_info,                          
   11bf8:	e1a02007 	mov	r2, r7                                        
   11bfc:	e59d101c 	ldr	r1, [sp, #28]                                 
   11c00:	e1a00006 	mov	r0, r6                                        
   11c04:	e88d5000 	stm	sp, {ip, lr}                                  
   11c08:	eb0001c9 	bl	12334 <fat_cluster_write>                      
                                      cur_cln,                        
                                      ofs_cln,                        
                                      c,                              
                                      &buf[cmpltd],                   
                                      overwrite_cluster);             
            if (0 > ret)                                              
   11c0c:	e3500000 	cmp	r0, #0                                        
   11c10:	b3e00000 	mvnlt	r0, #0                                      
   11c14:	baffffe8 	blt	11bbc <fat_file_write+0xe8>                   
            if (RC_OK == rc)                                          
            {                                                         
                ++file_cln_cnt;                                       
                bytes_to_write -= ret;                                
                cmpltd += ret;                                        
                save_cln = cur_cln;                                   
   11c18:	e59d201c 	ldr	r2, [sp, #28]                                 
                if (0 < bytes_to_write)                               
   11c1c:	e0544000 	subs	r4, r4, r0                                   
                                                                      
            if (RC_OK == rc)                                          
            {                                                         
                ++file_cln_cnt;                                       
                bytes_to_write -= ret;                                
                cmpltd += ret;                                        
   11c20:	e0888000 	add	r8, r8, r0                                    
                save_cln = cur_cln;                                   
   11c24:	e58d200c 	str	r2, [sp, #12]                                 
            if (0 > ret)                                              
              rc = -1;                                                
                                                                      
            if (RC_OK == rc)                                          
            {                                                         
                ++file_cln_cnt;                                       
   11c28:	e28aa001 	add	sl, sl, #1                                    
                bytes_to_write -= ret;                                
                cmpltd += ret;                                        
                save_cln = cur_cln;                                   
                if (0 < bytes_to_write)                               
   11c2c:	01a00004 	moveq	r0, r4                                      
                  rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
                                                                      
                ofs_cln = 0;                                          
   11c30:	01a07004 	moveq	r7, r4                                      
            {                                                         
                ++file_cln_cnt;                                       
                bytes_to_write -= ret;                                
                cmpltd += ret;                                        
                save_cln = cur_cln;                                   
                if (0 < bytes_to_write)                               
   11c34:	0affffe0 	beq	11bbc <fat_file_write+0xe8>                   
                  rc = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);
   11c38:	e1a01002 	mov	r1, r2                                        
   11c3c:	e1a00006 	mov	r0, r6                                        
   11c40:	e59d2008 	ldr	r2, [sp, #8]                                  
   11c44:	eb001838 	bl	17d2c <fat_get_fat_cluster>                    
                                                                      
                ofs_cln = 0;                                          
   11c48:	e3a07000 	mov	r7, #0                                        
   11c4c:	eaffffda 	b	11bbc <fat_file_write+0xe8>                     
                                                                      
    if ( count == 0 )                                                 
        return cmpltd;                                                
                                                                      
    if (start >= fat_fd->size_limit)                                  
        rtems_set_errno_and_return_minus_one(EFBIG);                  
   11c50:	eb001f17 	bl	198b4 <__errno>                                <== NOT EXECUTED
   11c54:	e3a0301b 	mov	r3, #27                                       <== NOT EXECUTED
   11c58:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   11c5c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    }                                                                 
    if (RC_OK != rc)                                                  
        return rc;                                                    
    else                                                              
        return cmpltd;                                                
}                                                                     
   11c60:	e28dd020 	add	sp, sp, #32                                   
   11c64:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
        }                                                             
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
   11c68:	e59d1014 	ldr	r1, [sp, #20]                                 
   11c6c:	e5d62008 	ldrb	r2, [r6, #8]                                 
   11c70:	e2413001 	sub	r3, r1, #1                                    
            }                                                         
        }                                                             
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
   11c74:	e59d1010 	ldr	r1, [sp, #16]                                 
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
   11c78:	e0833008 	add	r3, r3, r8                                    
            }                                                         
        }                                                             
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
   11c7c:	e0813233 	add	r3, r1, r3, lsr r2                            
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
        fat_fd->map.disk_cln = save_cln;                              
   11c80:	e59d200c 	ldr	r2, [sp, #12]                                 
    }                                                                 
                                                                      
    if (RC_OK != rc)                                                  
      return rc;                                                      
    else                                                              
      return cmpltd;                                                  
   11c84:	e3500000 	cmp	r0, #0                                        
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
                               ((ofs_cln_save + cmpltd - 1) >> fs_info->vol.bpc_log2);
        fat_fd->map.disk_cln = save_cln;                              
   11c88:	e5852038 	str	r2, [r5, #56]	; 0x38                          
            }                                                         
        }                                                             
                                                                      
        /* update cache */                                            
        /* XXX: check this - I'm not sure :( */                       
        fat_fd->map.file_cln = start_cln +                            
   11c8c:	e5853034 	str	r3, [r5, #52]	; 0x34                          
    }                                                                 
                                                                      
    if (RC_OK != rc)                                                  
      return rc;                                                      
    else                                                              
      return cmpltd;                                                  
   11c90:	01a00008 	moveq	r0, r8                                      
                                                       fat_fd,        
                                                       start,         
                                                       count,         
                                                       buf,           
                                                       file_cln_initial);
            if (0 > ret)                                              
   11c94:	e3500000 	cmp	r0, #0                                        
   11c98:	aafffff0 	bge	11c60 <fat_file_write+0x18c>                  
              rc = -1;                                                
   11c9c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   11ca0:	eaffffee 	b	11c60 <fat_file_write+0x18c>                    <== NOT EXECUTED
 */                                                                   
static bool                                                           
 fat_is_fat12_or_fat16_root_dir (const fat_file_fd_t *fat_fd,         
                                 const uint8_t volume_type)           
{                                                                     
    return (FAT_FD_OF_ROOT_DIR(fat_fd)) && (volume_type & (FAT_FAT12 | FAT_FAT16));
   11ca4:	e595c024 	ldr	ip, [r5, #36]	; 0x24                          
   11ca8:	e35c0000 	cmp	ip, #0                                        
   11cac:	1affffab 	bne	11b60 <fat_file_write+0x8c>                   
   11cb0:	e3130003 	tst	r3, #3                                        
   11cb4:	0affffa9 	beq	11b60 <fat_file_write+0x8c>                   
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
            cln += (start >> fs_info->vol.bpc_log2);                  
            byte = start & (fs_info->vol.bpc -1);                     
   11cb8:	e1d620b6 	ldrh	r2, [r6, #6]                                 
            count = c - start;                                        
                                                                      
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
   11cbc:	e595301c 	ldr	r3, [r5, #28]                                 
            cln += (start >> fs_info->vol.bpc_log2);                  
   11cc0:	e5d61008 	ldrb	r1, [r6, #8]                                 
            byte = start & (fs_info->vol.bpc -1);                     
                                                                      
            ret = fat_cluster_write(fs_info,                          
   11cc4:	e59de044 	ldr	lr, [sp, #68]	; 0x44                          
        /* for the root directory of FAT12 and FAT16 we need this special handling */
        if (fat_is_fat12_or_fat16_root_dir(fat_fd, fs_info->vol.type))
        {                                                             
            cln = fat_fd->cln;                                        
            cln += (start >> fs_info->vol.bpc_log2);                  
            byte = start & (fs_info->vol.bpc -1);                     
   11cc8:	e2422001 	sub	r2, r2, #1                                    
                                                                      
            ret = fat_cluster_write(fs_info,                          
   11ccc:	e0831137 	add	r1, r3, r7, lsr r1                            
   11cd0:	e1a00006 	mov	r0, r6                                        
   11cd4:	e0072002 	and	r2, r7, r2                                    
   11cd8:	e1a03004 	mov	r3, r4                                        
   11cdc:	e58de000 	str	lr, [sp]                                      
   11ce0:	e58dc004 	str	ip, [sp, #4]                                  
   11ce4:	eb000192 	bl	12334 <fat_cluster_write>                      
                                      cln,                            
                                      byte,                           
                                      count,                          
                                      buf,                            
                                      false);                         
            if (0 > ret)                                              
   11ce8:	e3500000 	cmp	r0, #0                                        
   11cec:	aaffffdb 	bge	11c60 <fat_file_write+0x18c>                  
   11cf0:	eaffffe9 	b	11c9c <fat_file_write+0x1c8>                    <== NOT EXECUTED
                                                                      

000180a4 <fat_free_fat_clusters_chain>: int fat_free_fat_clusters_chain( fat_fs_info_t *fs_info, uint32_t chain ) {
   180a4:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   180a8:	e5903010 	ldr	r3, [r0, #16]                                 
   180ac:	e5902014 	ldr	r2, [r0, #20]                                 
   180b0:	e0013003 	and	r3, r1, r3                                    
int                                                                   
fat_free_fat_clusters_chain(                                          
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              chain                       
    )                                                                 
{                                                                     
   180b4:	e24dd004 	sub	sp, sp, #4                                    
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
   180b8:	e3a06000 	mov	r6, #0                                        
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   180bc:	e1530002 	cmp	r3, r2                                        
int                                                                   
fat_free_fat_clusters_chain(                                          
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              chain                       
    )                                                                 
{                                                                     
   180c0:	e1a04000 	mov	r4, r0                                        
   180c4:	e1a08001 	mov	r8, r1                                        
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
   180c8:	e58d6000 	str	r6, [sp]                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   180cc:	2a00001c 	bcs	18144 <fat_free_fat_clusters_chain+0xa0>      
   180d0:	e1a05001 	mov	r5, r1                                        
   180d4:	e1a07006 	mov	r7, r6                                        
   180d8:	ea000009 	b	18104 <fat_free_fat_clusters_chain+0x60>        
                                                                      
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
   180dc:	ebffff68 	bl	17e84 <fat_set_fat_cluster>                    
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   180e0:	e2842010 	add	r2, r4, #16                                   
   180e4:	e892000c 	ldm	r2, {r2, r3}                                  
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
        if ( rc != RC_OK )                                            
            rc1 = rc;                                                 
                                                                      
        freed_cls_cnt++;                                              
        cur_cln = next_cln;                                           
   180e8:	e59d5000 	ldr	r5, [sp]                                      
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
        if ( rc != RC_OK )                                            
   180ec:	e3500000 	cmp	r0, #0                                        
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   180f0:	e0052002 	and	r2, r5, r2                                    
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
        if ( rc != RC_OK )                                            
   180f4:	11a07000 	movne	r7, r0                                      
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   180f8:	e1520003 	cmp	r2, r3                                        
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
        if ( rc != RC_OK )                                            
            rc1 = rc;                                                 
                                                                      
        freed_cls_cnt++;                                              
   180fc:	e2866001 	add	r6, r6, #1                                    
    int            rc = RC_OK, rc1 = RC_OK;                           
    uint32_t       cur_cln = chain;                                   
    uint32_t       next_cln = 0;                                      
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   18100:	2a000010 	bcs	18148 <fat_free_fat_clusters_chain+0xa4>      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);        
   18104:	e1a01005 	mov	r1, r5                                        
   18108:	e1a0200d 	mov	r2, sp                                        
   1810c:	e1a00004 	mov	r0, r4                                        
   18110:	ebffff05 	bl	17d2c <fat_get_fat_cluster>                    
                                                                      
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
   18114:	e1a01005 	mov	r1, r5                                        
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);        
        if ( rc != RC_OK )                                            
   18118:	e2505000 	subs	r5, r0, #0                                   
                                                                      
            fat_buf_release(fs_info);                                 
            return rc;                                                
        }                                                             
                                                                      
        rc = fat_set_fat_cluster(fs_info, cur_cln, FAT_GENFAT_FREE);  
   1811c:	e1a02005 	mov	r2, r5                                        
   18120:	e1a00004 	mov	r0, r4                                        
    uint32_t       freed_cls_cnt = 0;                                 
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cur_cln, &next_cln);        
        if ( rc != RC_OK )                                            
   18124:	0affffec 	beq	180dc <fat_free_fat_clusters_chain+0x38>      
        {                                                             
              if(fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)        
   18128:	e5943044 	ldr	r3, [r4, #68]	; 0x44                          <== NOT EXECUTED
   1812c:	e3730001 	cmn	r3, #1                                        <== NOT EXECUTED
                fs_info->vol.free_cls += freed_cls_cnt;               
   18130:	10863003 	addne	r3, r6, r3                                  <== NOT EXECUTED
   18134:	15843044 	strne	r3, [r4, #68]	; 0x44                        <== NOT EXECUTED
                                                                      
            fat_buf_release(fs_info);                                 
   18138:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1813c:	ebffe742 	bl	11e4c <fat_buf_release>                        <== NOT EXECUTED
            return rc;                                                
   18140:	ea000008 	b	18168 <fat_free_fat_clusters_chain+0xc4>        <== NOT EXECUTED
fat_free_fat_clusters_chain(                                          
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              chain                       
    )                                                                 
{                                                                     
    int            rc = RC_OK, rc1 = RC_OK;                           
   18144:	e1a07006 	mov	r7, r6                                        <== NOT EXECUTED
        freed_cls_cnt++;                                              
        cur_cln = next_cln;                                           
    }                                                                 
                                                                      
        fs_info->vol.next_cl = chain;                                 
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
   18148:	e5943044 	ldr	r3, [r4, #68]	; 0x44                          
   1814c:	e3730001 	cmn	r3, #1                                        
            fs_info->vol.free_cls += freed_cls_cnt;                   
   18150:	10863003 	addne	r3, r6, r3                                  
                                                                      
        freed_cls_cnt++;                                              
        cur_cln = next_cln;                                           
    }                                                                 
                                                                      
        fs_info->vol.next_cl = chain;                                 
   18154:	e584804c 	str	r8, [r4, #76]	; 0x4c                          
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
            fs_info->vol.free_cls += freed_cls_cnt;                   
   18158:	15843044 	strne	r3, [r4, #68]	; 0x44                        
                                                                      
    fat_buf_release(fs_info);                                         
   1815c:	e1a00004 	mov	r0, r4                                        
   18160:	ebffe739 	bl	11e4c <fat_buf_release>                        
   18164:	e1a05007 	mov	r5, r7                                        
    if (rc1 != RC_OK)                                                 
        return rc1;                                                   
                                                                      
    return RC_OK;                                                     
}                                                                     
   18168:	e1a00005 	mov	r0, r5                                        
   1816c:	e28dd004 	add	sp, sp, #4                                    
   18170:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
                                                                      

00012ec8 <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);
   12ec8:	e5902080 	ldr	r2, [r0, #128]	; 0x80                         <== NOT EXECUTED
   12ecc:	e5903074 	ldr	r3, [r0, #116]	; 0x74                         <== NOT EXECUTED
   12ed0:	e0622001 	rsb	r2, r2, r1                                    <== NOT EXECUTED
   12ed4:	e7d301a2 	ldrb	r0, [r3, r2, lsr #3]                         <== NOT EXECUTED
   12ed8:	e2021007 	and	r1, r2, #7                                    <== NOT EXECUTED
   12edc:	e3a0c001 	mov	ip, #1                                        <== NOT EXECUTED
   12ee0:	e1c0111c 	bic	r1, r0, ip, lsl r1                            <== NOT EXECUTED
   12ee4:	e7c311a2 	strb	r1, [r3, r2, lsr #3]                         <== NOT EXECUTED
}                                                                     
   12ee8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00017d2c <fat_get_fat_cluster>: fat_get_fat_cluster( fat_fs_info_t *fs_info, uint32_t cln, uint32_t *ret_val ) {
   17d2c:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
    uint8_t                *sec_buf;                                  
    uint32_t                sec = 0;                                  
    uint32_t                ofs = 0;                                  
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
   17d30:	e3510001 	cmp	r1, #1                                        
fat_get_fat_cluster(                                                  
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              cln,                        
    uint32_t                             *ret_val                     
    )                                                                 
{                                                                     
   17d34:	e24dd004 	sub	sp, sp, #4                                    
   17d38:	e1a05001 	mov	r5, r1                                        
   17d3c:	e1a04000 	mov	r4, r0                                        
   17d40:	e1a09002 	mov	r9, r2                                        
    uint8_t                *sec_buf;                                  
    uint32_t                sec = 0;                                  
    uint32_t                ofs = 0;                                  
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
   17d44:	9a00001d 	bls	17dc0 <fat_get_fat_cluster+0x94>              
   17d48:	e5903038 	ldr	r3, [r0, #56]	; 0x38                          
   17d4c:	e2833001 	add	r3, r3, #1                                    
   17d50:	e1510003 	cmp	r1, r3                                        
   17d54:	8a000019 	bhi	17dc0 <fat_get_fat_cluster+0x94>              
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
   17d58:	e5d0300e 	ldrb	r3, [r0, #14]                                
   17d5c:	e3130001 	tst	r3, #1                                        
   17d60:	e5d0a002 	ldrb	sl, [r0, #2]                                 
   17d64:	1a00001c 	bne	17ddc <fat_get_fat_cluster+0xb0>              
   17d68:	e3130002 	tst	r3, #2                                        
   17d6c:	e5903058 	ldr	r3, [r0, #88]	; 0x58                          
   17d70:	11a08081 	lslne	r8, r1, #1                                  
   17d74:	01a08101 	lsleq	r8, r1, #2                                  
   17d78:	e083aa38 	add	sl, r3, r8, lsr sl                            
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
   17d7c:	e1a00004 	mov	r0, r4                                        
   17d80:	e1a0100a 	mov	r1, sl                                        
   17d84:	e3a02001 	mov	r2, #1                                        
   17d88:	e1a0300d 	mov	r3, sp                                        
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
   17d8c:	e1d470b0 	ldrh	r7, [r4]                                     
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
   17d90:	ebffe896 	bl	11ff0 <fat_buf_access>                         
    if (rc != RC_OK)                                                  
   17d94:	e2506000 	subs	r6, r0, #0                                   
   17d98:	1a00000c 	bne	17dd0 <fat_get_fat_cluster+0xa4>              
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
   17d9c:	e5d4200e 	ldrb	r2, [r4, #14]                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
   17da0:	e2477001 	sub	r7, r7, #1                                    
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
   17da4:	e3520002 	cmp	r2, #2                                        
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
   17da8:	e0088007 	and	r8, r8, r7                                    
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
   17dac:	0a00000e 	beq	17dec <fat_get_fat_cluster+0xc0>              
   17db0:	e3520004 	cmp	r2, #4                                        
   17db4:	0a000021 	beq	17e40 <fat_get_fat_cluster+0x114>             
   17db8:	e3520001 	cmp	r2, #1                                        
   17dbc:	0a00000e 	beq	17dfc <fat_get_fat_cluster+0xd0>              
            *ret_val = *((uint32_t   *)(sec_buf + ofs));              
            *ret_val = CF_LE_L(*ret_val);                             
            break;                                                    
                                                                      
        default:                                                      
            rtems_set_errno_and_return_minus_one(EIO);                
   17dc0:	eb0006bb 	bl	198b4 <__errno>                                <== NOT EXECUTED
   17dc4:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   17dc8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   17dcc:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
            break;                                                    
    }                                                                 
                                                                      
    return RC_OK;                                                     
}                                                                     
   17dd0:	e1a00006 	mov	r0, r6                                        
   17dd4:	e28dd004 	add	sp, sp, #4                                    
   17dd8:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
   17ddc:	e5903058 	ldr	r3, [r0, #88]	; 0x58                          
   17de0:	e08180a1 	add	r8, r1, r1, lsr #1                            
   17de4:	e083aa38 	add	sl, r3, r8, lsr sl                            
   17de8:	eaffffe3 	b	17d7c <fat_get_fat_cluster+0x50>                
            else                                                      
                *ret_val = (*ret_val) & FAT_FAT12_MASK;               
            break;                                                    
                                                                      
        case FAT_FAT16:                                               
            *ret_val = *((uint16_t   *)(sec_buf + ofs));              
   17dec:	e59d3000 	ldr	r3, [sp]                                      
   17df0:	e19330b8 	ldrh	r3, [r3, r8]                                 
   17df4:	e5893000 	str	r3, [r9]                                      
            *ret_val = CF_LE_W(*ret_val);                             
            break;                                                    
   17df8:	eafffff4 	b	17dd0 <fat_get_fat_cluster+0xa4>                
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
            if ( ofs == (fs_info->vol.bps - 1) )                      
   17dfc:	e1d400b0 	ldrh	r0, [r4]                                     
        case FAT_FAT12:                                               
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
   17e00:	e59d1000 	ldr	r1, [sp]                                      
            if ( ofs == (fs_info->vol.bps - 1) )                      
   17e04:	e2400001 	sub	r0, r0, #1                                    
        case FAT_FAT12:                                               
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
   17e08:	e7d13008 	ldrb	r3, [r1, r8]                                 
            if ( ofs == (fs_info->vol.bps - 1) )                      
   17e0c:	e1500008 	cmp	r0, r8                                        
        case FAT_FAT12:                                               
            /*                                                        
             * we are enforced in complex computations for FAT12 to escape CPU
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
   17e10:	e5893000 	str	r3, [r9]                                      
            if ( ofs == (fs_info->vol.bps - 1) )                      
   17e14:	0a00000d 	beq	17e50 <fat_get_fat_cluster+0x124>             
                                                                      
                *ret_val |= *sec_buf << 8;                            
            }                                                         
            else                                                      
            {                                                         
                *ret_val |= *(sec_buf + ofs + 1) << 8;                
   17e18:	e0818008 	add	r8, r1, r8                                    
   17e1c:	e5d82001 	ldrb	r2, [r8, #1]                                 
   17e20:	e1833402 	orr	r3, r3, r2, lsl #8                            
   17e24:	e5893000 	str	r3, [r9]                                      
            }                                                         
                                                                      
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
   17e28:	e3150001 	tst	r5, #1                                        
                *ret_val = (*ret_val) >> FAT12_SHIFT;                 
            else                                                      
                *ret_val = (*ret_val) & FAT_FAT12_MASK;               
   17e2c:	01a03a03 	lsleq	r3, r3, #20                                 
            {                                                         
                *ret_val |= *(sec_buf + ofs + 1) << 8;                
            }                                                         
                                                                      
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
                *ret_val = (*ret_val) >> FAT12_SHIFT;                 
   17e30:	11a03223 	lsrne	r3, r3, #4                                  
            else                                                      
                *ret_val = (*ret_val) & FAT_FAT12_MASK;               
   17e34:	01a03a23 	lsreq	r3, r3, #20                                 
   17e38:	e5893000 	str	r3, [r9]                                      
   17e3c:	eaffffe3 	b	17dd0 <fat_get_fat_cluster+0xa4>                
            *ret_val = *((uint16_t   *)(sec_buf + ofs));              
            *ret_val = CF_LE_W(*ret_val);                             
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            *ret_val = *((uint32_t   *)(sec_buf + ofs));              
   17e40:	e59d3000 	ldr	r3, [sp]                                      
   17e44:	e7933008 	ldr	r3, [r3, r8]                                  
   17e48:	e5893000 	str	r3, [r9]                                      
            *ret_val = CF_LE_L(*ret_val);                             
            break;                                                    
   17e4c:	eaffffdf 	b	17dd0 <fat_get_fat_cluster+0xa4>                
             * align problems for some architectures                  
             */                                                       
            *ret_val = (*(sec_buf + ofs));                            
            if ( ofs == (fs_info->vol.bps - 1) )                      
            {                                                         
                rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
   17e50:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   17e54:	e28a1001 	add	r1, sl, #1                                    <== NOT EXECUTED
   17e58:	e1a0300d 	mov	r3, sp                                        <== NOT EXECUTED
   17e5c:	ebffe863 	bl	11ff0 <fat_buf_access>                         <== NOT EXECUTED
                                    &sec_buf);                        
                if (rc != RC_OK)                                      
   17e60:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   17e64:	11a06000 	movne	r6, r0                                      <== NOT EXECUTED
   17e68:	1affffd8 	bne	17dd0 <fat_get_fat_cluster+0xa4>              <== NOT EXECUTED
                    return rc;                                        
                                                                      
                *ret_val |= *sec_buf << 8;                            
   17e6c:	e59d2000 	ldr	r2, [sp]                                      <== NOT EXECUTED
   17e70:	e5993000 	ldr	r3, [r9]                                      <== NOT EXECUTED
   17e74:	e5d22000 	ldrb	r2, [r2]                                     <== NOT EXECUTED
   17e78:	e1833402 	orr	r3, r3, r2, lsl #8                            <== NOT EXECUTED
   17e7c:	e5893000 	str	r3, [r9]                                      <== NOT EXECUTED
   17e80:	eaffffe8 	b	17e28 <fat_get_fat_cluster+0xfc>                <== NOT EXECUTED
                                                                      

00012dec <fat_get_unique_ino>: resrc_unsuff = true; } else resrc_unsuff = true; } return 0;
   12dec:	e590107c 	ldr	r1, [r0, #124]	; 0x7c                         <== NOT EXECUTED
 *     0 means FAILED !!!                                             
 *                                                                    
 */                                                                   
uint32_t                                                              
fat_get_unique_ino(fat_fs_info_t *fs_info)                            
{                                                                     
   12df0:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         <== NOT EXECUTED
   12df4:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
        {                                                             
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino)) 
   12df8:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
   12dfc:	e3510000 	cmp	r1, #0                                        <== NOT EXECUTED
   12e00:	0a000018 	beq	12e68 <fat_get_unique_ino+0x7c>               <== NOT EXECUTED
        {                                                             
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino)) 
   12e04:	e2840074 	add	r0, r4, #116	; 0x74                           <== NOT EXECUTED
   12e08:	e8900009 	ldm	r0, {r0, r3}                                  <== NOT EXECUTED
   12e0c:	e7d0c1a3 	ldrb	ip, [r0, r3, lsr #3]                         <== NOT EXECUTED
   12e10:	e2036007 	and	r6, r3, #7                                    <== NOT EXECUTED
   12e14:	e1a0265c 	asr	r2, ip, r6                                    <== NOT EXECUTED
   12e18:	e3120001 	tst	r2, #1                                        <== NOT EXECUTED
   12e1c:	e08071a3 	add	r7, r0, r3, lsr #3                            <== NOT EXECUTED
   12e20:	0a000018 	beq	12e88 <fat_get_unique_ino+0x9c>               <== NOT EXECUTED
   12e24:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   12e28:	ea000006 	b	12e48 <fat_get_unique_ino+0x5c>                 <== NOT EXECUTED
   12e2c:	e5943078 	ldr	r3, [r4, #120]	; 0x78                         <== NOT EXECUTED
   12e30:	e7d0c1a3 	ldrb	ip, [r0, r3, lsr #3]                         <== NOT EXECUTED
   12e34:	e2036007 	and	r6, r3, #7                                    <== NOT EXECUTED
   12e38:	e1a0765c 	asr	r7, ip, r6                                    <== NOT EXECUTED
   12e3c:	e3170001 	tst	r7, #1                                        <== NOT EXECUTED
   12e40:	e08071a3 	add	r7, r0, r3, lsr #3                            <== NOT EXECUTED
   12e44:	0a00000f 	beq	12e88 <fat_get_unique_ino+0x9c>               <== NOT EXECUTED
            {                                                         
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
                return (fs_info->uino_base + fs_info->index);         
            }                                                         
            fs_info->index++;                                         
   12e48:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
            if (fs_info->index >= fs_info->uino_pool_size)            
                fs_info->index = 0;                                   
   12e4c:	e1530001 	cmp	r3, r1                                        <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
   12e50:	e2822001 	add	r2, r2, #1                                    <== NOT EXECUTED
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
                return (fs_info->uino_base + fs_info->index);         
            }                                                         
            fs_info->index++;                                         
            if (fs_info->index >= fs_info->uino_pool_size)            
                fs_info->index = 0;                                   
   12e54:	31a0c003 	movcc	ip, r3                                      <== NOT EXECUTED
   12e58:	21a0c005 	movcs	ip, r5                                      <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
   12e5c:	e1520001 	cmp	r2, r1                                        <== NOT EXECUTED
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
                return (fs_info->uino_base + fs_info->index);         
            }                                                         
            fs_info->index++;                                         
            if (fs_info->index >= fs_info->uino_pool_size)            
                fs_info->index = 0;                                   
   12e60:	e584c078 	str	ip, [r4, #120]	; 0x78                         <== NOT EXECUTED
    uint32_t                j = 0;                                    
    bool                    resrc_unsuff = false;                     
                                                                      
    while (!resrc_unsuff)                                             
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
   12e64:	1afffff0 	bne	12e2c <fat_get_unique_ino+0x40>               <== 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))
   12e68:	e5942080 	ldr	r2, [r4, #128]	; 0x80                         <== NOT EXECUTED
   12e6c:	e3e0320f 	mvn	r3, #-268435456	; 0xf0000000                  <== NOT EXECUTED
   12e70:	e1a01081 	lsl	r1, r1, #1                                    <== NOT EXECUTED
   12e74:	e0623003 	rsb	r3, r2, r3                                    <== NOT EXECUTED
   12e78:	e1510003 	cmp	r1, r3                                        <== NOT EXECUTED
   12e7c:	3a000008 	bcc	12ea4 <fat_get_unique_ino+0xb8>               <== NOT EXECUTED
                resrc_unsuff = true;                                  
        }                                                             
        else                                                          
            resrc_unsuff = true;                                      
    }                                                                 
    return 0;                                                         
   12e80:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
   12e84:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
    {                                                                 
        for (j = 0; j < fs_info->uino_pool_size; j++)                 
        {                                                             
            if (!FAT_UNIQ_INO_IS_BUSY(fs_info->index, fs_info->uino)) 
            {                                                         
                FAT_SET_UNIQ_INO_BUSY(fs_info->index, fs_info->uino); 
   12e88:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   12e8c:	e18cc613 	orr	ip, ip, r3, lsl r6                            <== NOT EXECUTED
   12e90:	e5c7c000 	strb	ip, [r7]                                     <== NOT EXECUTED
                return (fs_info->uino_base + fs_info->index);         
   12e94:	e5940078 	ldr	r0, [r4, #120]	; 0x78                         <== NOT EXECUTED
   12e98:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         <== NOT EXECUTED
   12e9c:	e0800003 	add	r0, r0, r3                                    <== NOT EXECUTED
   12ea0:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                fs_info->index = 0;                                   
        }                                                             
                                                                      
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
        {                                                             
            fs_info->uino_pool_size <<= 1;                            
   12ea4:	e584107c 	str	r1, [r4, #124]	; 0x7c                         <== NOT EXECUTED
            fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
   12ea8:	e5940074 	ldr	r0, [r4, #116]	; 0x74                         <== NOT EXECUTED
   12eac:	ebffc918 	bl	5314 <realloc>                                 <== NOT EXECUTED
            if (fs_info->uino != NULL)                                
   12eb0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
        }                                                             
                                                                      
        if ((fs_info->uino_pool_size << 1) < (0x0FFFFFFF - fs_info->uino_base))
        {                                                             
            fs_info->uino_pool_size <<= 1;                            
            fs_info->uino = realloc(fs_info->uino, fs_info->uino_pool_size);
   12eb4:	e5840074 	str	r0, [r4, #116]	; 0x74                         <== NOT EXECUTED
            if (fs_info->uino != NULL)                                
   12eb8:	08bd80f0 	popeq	{r4, r5, r6, r7, pc}                        <== NOT EXECUTED
                fs_info->index = fs_info->uino_pool_size;             
   12ebc:	e594107c 	ldr	r1, [r4, #124]	; 0x7c                         <== NOT EXECUTED
   12ec0:	e5841078 	str	r1, [r4, #120]	; 0x78                         <== NOT EXECUTED
   12ec4:	eaffffcc 	b	12dfc <fat_get_unique_ino+0x10>                 <== NOT EXECUTED
                                                                      

00012d60 <fat_init_clusters_chain>: int fat_init_clusters_chain( fat_fs_info_t *fs_info, uint32_t start_cln ) {
   12d60:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
   12d64:	e24dd008 	sub	sp, sp, #8                                    
    int                     rc = RC_OK;                               
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
   12d68:	e28d5008 	add	r5, sp, #8                                    
int                                                                   
fat_init_clusters_chain(                                              
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              start_cln                   
    )                                                                 
{                                                                     
   12d6c:	e1a03001 	mov	r3, r1                                        
   12d70:	e1a04000 	mov	r4, r0                                        
    int                     rc = RC_OK;                               
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
   12d74:	e5251004 	str	r1, [r5, #-4]!                                
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
   12d78:	e3a06000 	mov	r6, #0                                        
{                                                                     
    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)      
   12d7c:	ea000000 	b	12d84 <fat_init_clusters_chain+0x24>            
        {                                                             
            return -1;                                                
        }                                                             
                                                                      
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);        
        if ( rc != RC_OK )                                            
   12d80:	e59d3004 	ldr	r3, [sp, #4]                                  
{                                                                     
    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)      
   12d84:	e2847010 	add	r7, r4, #16                                   
   12d88:	e8971080 	ldm	r7, {r7, ip}                                  
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
   12d8c:	e1a01003 	mov	r1, r3                                        
{                                                                     
    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)      
   12d90:	e0033007 	and	r3, r3, r7                                    
   12d94:	e153000c 	cmp	r3, ip                                        
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
   12d98:	e3a02000 	mov	r2, #0                                        
   12d9c:	e1a00004 	mov	r0, r4                                        
{                                                                     
    int                     rc = RC_OK;                               
    ssize_t                 ret = 0;                                  
    uint32_t                cur_cln = start_cln;                      
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
   12da0:	2a00000d 	bcs	12ddc <fat_init_clusters_chain+0x7c>          
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
   12da4:	e1d430b6 	ldrh	r3, [r4, #6]                                 
   12da8:	e58d6000 	str	r6, [sp]                                      
   12dac:	ebfffd0c 	bl	121e4 <fat_cluster_set>                        
        if ( ret != fs_info->vol.bpc )                                
   12db0:	e1d430b6 	ldrh	r3, [r4, #6]                                 
   12db4:	e1530000 	cmp	r3, r0                                        
        {                                                             
            return -1;                                                
        }                                                             
                                                                      
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);        
   12db8:	e1a02005 	mov	r2, r5                                        
   12dbc:	e1a00004 	mov	r0, r4                                        
    uint32_t                cur_cln = start_cln;                      
                                                                      
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
        if ( ret != fs_info->vol.bpc )                                
   12dc0:	1a000007 	bne	12de4 <fat_init_clusters_chain+0x84>          
        {                                                             
            return -1;                                                
        }                                                             
                                                                      
        rc  = fat_get_fat_cluster(fs_info, cur_cln, &cur_cln);        
   12dc4:	e59d1004 	ldr	r1, [sp, #4]                                  
   12dc8:	eb0013d7 	bl	17d2c <fat_get_fat_cluster>                    
        if ( rc != RC_OK )                                            
   12dcc:	e3500000 	cmp	r0, #0                                        
   12dd0:	0affffea 	beq	12d80 <fat_init_clusters_chain+0x20>          
        }                                                             
                                                                      
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
   12dd4:	e28dd008 	add	sp, sp, #8                                    
   12dd8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
            return rc;                                                
        }                                                             
                                                                      
    }                                                                 
                                                                      
    return rc;                                                        
   12ddc:	e1a00002 	mov	r0, r2                                        
   12de0:	eafffffb 	b	12dd4 <fat_init_clusters_chain+0x74>            
    while ((cur_cln & fs_info->vol.mask) < fs_info->vol.eoc_val)      
    {                                                                 
        ret = fat_cluster_set(fs_info, cur_cln, 0, fs_info->vol.bpc, 0);
        if ( ret != fs_info->vol.bpc )                                
        {                                                             
            return -1;                                                
   12de4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12de8:	eafffff9 	b	12dd4 <fat_init_clusters_chain+0x74>            <== NOT EXECUTED
                                                                      

000124a4 <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) {
   124a4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    char                boot_rec[FAT_MAX_BPB_SIZE];                   
    char                fs_info_sector[FAT_USEFUL_INFO_SIZE];         
    ssize_t             ret = 0;                                      
    struct stat         stat_buf;                                     
    int                 i = 0;                                        
    rtems_bdbuf_buffer *block = NULL;                                 
   124a8:	e3a03000 	mov	r3, #0                                        
 *     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)      
{                                                                     
   124ac:	e24dd0ac 	sub	sp, sp, #172	; 0xac                           
   124b0:	e1a04000 	mov	r4, r0                                        
    ssize_t             ret = 0;                                      
    struct stat         stat_buf;                                     
    int                 i = 0;                                        
    rtems_bdbuf_buffer *block = NULL;                                 
                                                                      
    vol->fd = open(device, O_RDWR);                                   
   124b4:	e1a00001 	mov	r0, r1                                        
   124b8:	e3a01002 	mov	r1, #2                                        
    char                boot_rec[FAT_MAX_BPB_SIZE];                   
    char                fs_info_sector[FAT_USEFUL_INFO_SIZE];         
    ssize_t             ret = 0;                                      
    struct stat         stat_buf;                                     
    int                 i = 0;                                        
    rtems_bdbuf_buffer *block = NULL;                                 
   124bc:	e58d30a8 	str	r3, [sp, #168]	; 0xa8                         
                                                                      
    vol->fd = open(device, O_RDWR);                                   
   124c0:	ebffcb02 	bl	50d0 <open>                                    
    if (vol->fd < 0)                                                  
   124c4:	e3500000 	cmp	r0, #0                                        
    ssize_t             ret = 0;                                      
    struct stat         stat_buf;                                     
    int                 i = 0;                                        
    rtems_bdbuf_buffer *block = NULL;                                 
                                                                      
    vol->fd = open(device, O_RDWR);                                   
   124c8:	e5840060 	str	r0, [r4, #96]	; 0x60                          
    if (vol->fd < 0)                                                  
   124cc:	ba00018b 	blt	12b00 <fat_init_volume_info+0x65c>            
    {                                                                 
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    rc = fstat(vol->fd, &stat_buf);                                   
   124d0:	e28d1054 	add	r1, sp, #84	; 0x54                            
   124d4:	ebffc7c9 	bl	4400 <fstat>                                   
    if (rc != 0)                                                      
   124d8:	e3500000 	cmp	r0, #0                                        
   124dc:	1a000195 	bne	12b38 <fat_init_volume_info+0x694>            
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    /* Must be a block device. */                                     
    if (!S_ISBLK(stat_buf.st_mode))                                   
   124e0:	e59d3060 	ldr	r3, [sp, #96]	; 0x60                          
   124e4:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
   124e8:	e3530a06 	cmp	r3, #24576	; 0x6000                           
    {                                                                 
        close(vol->fd);                                               
   124ec:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(ENXIO);                  
    }                                                                 
                                                                      
    /* Must be a block device. */                                     
    if (!S_ISBLK(stat_buf.st_mode))                                   
   124f0:	1a000181 	bne	12afc <fat_init_volume_info+0x658>            
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
   124f4:	e59f16d8 	ldr	r1, [pc, #1752]	; 12bd4 <fat_init_volume_info+0x730>
   124f8:	e2842064 	add	r2, r4, #100	; 0x64                           
   124fc:	eb000574 	bl	13ad4 <ioctl>                                  
        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) {                                                    
   12500:	e2501000 	subs	r1, r0, #0                                   
   12504:	1a00017b 	bne	12af8 <fat_init_volume_info+0x654>            
        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);                       
   12508:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
   1250c:	e28d20a8 	add	r2, sp, #168	; 0xa8                           
   12510:	ebfff66f 	bl	fed4 <rtems_bdbuf_read>                        
    if (sc != RTEMS_SUCCESSFUL)                                       
   12514:	e3500000 	cmp	r0, #0                                        
   12518:	1a00017f 	bne	12b1c <fat_init_volume_info+0x678>            
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO);                   
    }                                                                 
                                                                      
    memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);               
   1251c:	e59d00a8 	ldr	r0, [sp, #168]	; 0xa8                         
   12520:	e590301c 	ldr	r3, [r0, #28]                                 
   12524:	e5d3200f 	ldrb	r2, [r3, #15]                                
   12528:	e58d2014 	str	r2, [sp, #20]                                 
   1252c:	e5d32013 	ldrb	r2, [r3, #19]                                
   12530:	e58d2004 	str	r2, [sp, #4]                                  
   12534:	e5d32014 	ldrb	r2, [r3, #20]                                
   12538:	e58d2008 	str	r2, [sp, #8]                                  
   1253c:	e5d32016 	ldrb	r2, [r3, #22]                                
   12540:	e58d200c 	str	r2, [sp, #12]                                 
   12544:	e5d32020 	ldrb	r2, [r3, #32]                                
   12548:	e58d2024 	str	r2, [sp, #36]	; 0x24                          
   1254c:	e5d32021 	ldrb	r2, [r3, #33]	; 0x21                         
   12550:	e58d2028 	str	r2, [sp, #40]	; 0x28                          
   12554:	e5d32022 	ldrb	r2, [r3, #34]	; 0x22                         
   12558:	e58d202c 	str	r2, [sp, #44]	; 0x2c                          
   1255c:	e5d32023 	ldrb	r2, [r3, #35]	; 0x23                         
   12560:	e58d2030 	str	r2, [sp, #48]	; 0x30                          
   12564:	e5d32024 	ldrb	r2, [r3, #36]	; 0x24                         
   12568:	e58d2034 	str	r2, [sp, #52]	; 0x34                          
   1256c:	e5d32025 	ldrb	r2, [r3, #37]	; 0x25                         
   12570:	e58d2018 	str	r2, [sp, #24]                                 
   12574:	e5d32026 	ldrb	r2, [r3, #38]	; 0x26                         
   12578:	e5d3100c 	ldrb	r1, [r3, #12]                                
   1257c:	e58d201c 	str	r2, [sp, #28]                                 
   12580:	e5d32027 	ldrb	r2, [r3, #39]	; 0x27                         
   12584:	e5d3500b 	ldrb	r5, [r3, #11]                                
   12588:	e58d1010 	str	r1, [sp, #16]                                 
   1258c:	e5d3600d 	ldrb	r6, [r3, #13]                                
   12590:	e5d3900e 	ldrb	r9, [r3, #14]                                
   12594:	e5d38010 	ldrb	r8, [r3, #16]                                
   12598:	e5d3b011 	ldrb	fp, [r3, #17]                                
   1259c:	e5d3a012 	ldrb	sl, [r3, #18]                                
   125a0:	e5d37017 	ldrb	r7, [r3, #23]                                
   125a4:	e58d2020 	str	r2, [sp, #32]                                 
   125a8:	e5d32028 	ldrb	r2, [r3, #40]	; 0x28                         
   125ac:	e58d2038 	str	r2, [sp, #56]	; 0x38                          
   125b0:	e5d3202c 	ldrb	r2, [r3, #44]	; 0x2c                         
   125b4:	e58d204c 	str	r2, [sp, #76]	; 0x4c                          
   125b8:	e5d3202d 	ldrb	r2, [r3, #45]	; 0x2d                         
   125bc:	e58d2050 	str	r2, [sp, #80]	; 0x50                          
   125c0:	e5d3202e 	ldrb	r2, [r3, #46]	; 0x2e                         
   125c4:	e58d2044 	str	r2, [sp, #68]	; 0x44                          
   125c8:	e5d3202f 	ldrb	r2, [r3, #47]	; 0x2f                         
   125cc:	e58d2048 	str	r2, [sp, #72]	; 0x48                          
   125d0:	e5d32030 	ldrb	r2, [r3, #48]	; 0x30                         
   125d4:	e5d33031 	ldrb	r3, [r3, #49]	; 0x31                         
   125d8:	e58d203c 	str	r2, [sp, #60]	; 0x3c                          
   125dc:	e58d3040 	str	r3, [sp, #64]	; 0x40                          
                                                                      
    sc = rtems_bdbuf_release( block);                                 
   125e0:	ebfff6b4 	bl	100b8 <rtems_bdbuf_release>                    
    if (sc != RTEMS_SUCCESSFUL)                                       
   125e4:	e3500000 	cmp	r0, #0                                        
   125e8:	1a00014b 	bne	12b1c <fat_init_volume_info+0x678>            
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    /* Evaluate boot record */                                        
    vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);                 
   125ec:	e59d1010 	ldr	r1, [sp, #16]                                 
   125f0:	e1853401 	orr	r3, r5, r1, lsl #8                            
   125f4:	e1a03803 	lsl	r3, r3, #16                                   
   125f8:	e1a01823 	lsr	r1, r3, #16                                   
                                                                      
    if ( (vol->bps != 512)  &&                                        
   125fc:	e3510b01 	cmp	r1, #1024	; 0x400                             
   12600:	13510c02 	cmpne	r1, #512	; 0x200                            
   12604:	03a02000 	moveq	r2, #0                                      
   12608:	13a02001 	movne	r2, #1                                      
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    /* Evaluate boot record */                                        
    vol->bps = FAT_GET_BR_BYTES_PER_SECTOR(boot_rec);                 
   1260c:	e1c410b0 	strh	r1, [r4]                                     
                                                                      
    if ( (vol->bps != 512)  &&                                        
   12610:	0a0000d3 	beq	12964 <fat_init_volume_info+0x4c0>            
         (vol->bps != 1024) &&                                        
   12614:	e3510b02 	cmp	r1, #2048	; 0x800                             <== NOT EXECUTED
   12618:	0a000001 	beq	12624 <fat_init_volume_info+0x180>            <== NOT EXECUTED
         (vol->bps != 2048) &&                                        
   1261c:	e3510a01 	cmp	r1, #4096	; 0x1000                            <== NOT EXECUTED
   12620:	1a00012d 	bne	12adc <fat_init_volume_info+0x638>            <== 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;
   12624:	e1a034a1 	lsr	r3, r1, #9                                    <== NOT EXECUTED
 *     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)      
{                                                                     
   12628:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
   1262c:	ea000000 	b	12634 <fat_init_volume_info+0x190>              <== 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;
   12630:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);                                    
   12634:	e1a030c3 	asr	r3, r3, #1                                    <== NOT EXECUTED
   12638:	e2820001 	add	r0, r2, #1                                    <== NOT EXECUTED
         (vol->bps != 4096))                                          
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
   1263c:	e3130001 	tst	r3, #1                                        <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);                                    
   12640:	e20000ff 	and	r0, r0, #255	; 0xff                           <== NOT EXECUTED
         (vol->bps != 4096))                                          
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
   12644:	0afffff9 	beq	12630 <fat_init_volume_info+0x18c>            <== NOT EXECUTED
   12648:	e5c42003 	strb	r2, [r4, #3]                                 <== NOT EXECUTED
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
   1264c:	e3a05000 	mov	r5, #0                                        
   12650:	e3110001 	tst	r1, #1                                        
   12654:	e5c45002 	strb	r5, [r4, #2]                                 
   12658:	01a03001 	moveq	r3, r1                                      
   1265c:	03a05001 	moveq	r5, #1                                      
   12660:	0a000001 	beq	1266c <fat_init_volume_info+0x1c8>            
   12664:	ea000006 	b	12684 <fat_init_volume_info+0x1e0>              <== NOT EXECUTED
   12668:	e1a05002 	mov	r5, r2                                        
         i >>= 1, vol->sec_log2++);                                   
   1266c:	e1a030c3 	asr	r3, r3, #1                                    
   12670:	e2852001 	add	r2, r5, #1                                    
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
   12674:	e3130001 	tst	r3, #1                                        
         i >>= 1, vol->sec_log2++);                                   
   12678:	e20220ff 	and	r2, r2, #255	; 0xff                           
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one( EINVAL );               
    }                                                                 
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
   1267c:	0afffff9 	beq	12668 <fat_init_volume_info+0x1c4>            
   12680:	e5c45002 	strb	r5, [r4, #2]                                 
         i >>= 1, vol->sec_log2++);                                   
                                                                      
    vol->bytes_per_block = vol->bps;                                  
    vol->bytes_per_block_log2 = vol->sec_log2;                        
    vol->sectors_per_block = 1;                                       
   12684:	e3a02001 	mov	r2, #1                                        
    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)                                                
   12688:	e3560000 	cmp	r6, #0                                        
    for (vol->sec_mul = 0, i = (vol->bps >> FAT_SECTOR512_BITS); (i & 1) == 0;
         i >>= 1, vol->sec_mul++);                                    
    for (vol->sec_log2 = 0, i = vol->bps; (i & 1) == 0;               
         i >>= 1, vol->sec_log2++);                                   
                                                                      
    vol->bytes_per_block = vol->bps;                                  
   1268c:	e1c410ba 	strh	r1, [r4, #10]                                
    vol->bytes_per_block_log2 = vol->sec_log2;                        
   12690:	e5c4500c 	strb	r5, [r4, #12]                                
    vol->sectors_per_block = 1;                                       
   12694:	e5c42009 	strb	r2, [r4, #9]                                 
                                                                      
    vol->spc = FAT_GET_BR_SECTORS_PER_CLUSTER(boot_rec);              
   12698:	e5c46004 	strb	r6, [r4, #4]                                 
    /*                                                                
     * "sectors per cluster" of zero is invalid                       
     * (and would hang the following loop)                            
     */                                                               
    if (vol->spc == 0)                                                
   1269c:	0a00010e 	beq	12adc <fat_init_volume_info+0x638>            
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;               
   126a0:	e3a00000 	mov	r0, #0                                        
   126a4:	e3160001 	tst	r6, #1                                        
   126a8:	e5c40005 	strb	r0, [r4, #5]                                 
   126ac:	e1a03006 	mov	r3, r6                                        
   126b0:	11a02000 	movne	r2, r0                                      
   126b4:	0a000001 	beq	126c0 <fat_init_volume_info+0x21c>            
   126b8:	ea000006 	b	126d8 <fat_init_volume_info+0x234>              
   126bc:	e1a02000 	mov	r2, r0                                        
         i >>= 1, vol->spc_log2++);                                   
   126c0:	e1a030c3 	asr	r3, r3, #1                                    
   126c4:	e2820001 	add	r0, r2, #1                                    
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;               
   126c8:	e3130001 	tst	r3, #1                                        
         i >>= 1, vol->spc_log2++);                                   
   126cc:	e20000ff 	and	r0, r0, #255	; 0xff                           
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->spc_log2 = 0, i = vol->spc; (i & 1) == 0;               
   126d0:	0afffff9 	beq	126bc <fat_init_volume_info+0x218>            
   126d4:	e5c42005 	strb	r2, [r4, #5]                                 
         i >>= 1, vol->spc_log2++);                                   
                                                                      
    /*                                                                
     * "bytes per cluster" value greater than 32K is invalid          
     */                                                               
    if ((vol->bpc = vol->bps << vol->spc_log2) > MS_BYTES_PER_CLUSTER_LIMIT)
   126d8:	e1a03211 	lsl	r3, r1, r2                                    
   126dc:	e1a03803 	lsl	r3, r3, #16                                   
   126e0:	e1a03823 	lsr	r3, r3, #16                                   
   126e4:	e3530902 	cmp	r3, #32768	; 0x8000                           
   126e8:	e1c430b6 	strh	r3, [r4, #6]                                 
   126ec:	8a0000fa 	bhi	12adc <fat_init_volume_info+0x638>            
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
   126f0:	e3a02000 	mov	r2, #0                                        
   126f4:	e3130001 	tst	r3, #1                                        
   126f8:	e5c42008 	strb	r2, [r4, #8]                                 
   126fc:	03a02001 	moveq	r2, #1                                      
   12700:	0a000001 	beq	1270c <fat_init_volume_info+0x268>            
   12704:	ea000006 	b	12724 <fat_init_volume_info+0x280>              <== NOT EXECUTED
   12708:	e1a02000 	mov	r2, r0                                        
         i >>= 1, vol->bpc_log2++);                                   
   1270c:	e1a030c3 	asr	r3, r3, #1                                    
   12710:	e2820001 	add	r0, r2, #1                                    
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
   12714:	e3130001 	tst	r3, #1                                        
         i >>= 1, vol->bpc_log2++);                                   
   12718:	e20000ff 	and	r0, r0, #255	; 0xff                           
    {                                                                 
        close(vol->fd);                                               
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
   1271c:	0afffff9 	beq	12708 <fat_init_volume_info+0x264>            
   12720:	e5c42008 	strb	r2, [r4, #8]                                 
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
   12724:	e59d2014 	ldr	r2, [sp, #20]                                 
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
   12728:	e2410001 	sub	r0, r1, #1                                    
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
   1272c:	e1899402 	orr	r9, r9, r2, lsl #8                            
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
   12730:	e18ba40a 	orr	sl, fp, sl, lsl #8                            
    }                                                                 
                                                                      
    for (vol->bpc_log2 = 0, i = vol->bpc; (i & 1) == 0;               
         i >>= 1, vol->bpc_log2++);                                   
                                                                      
    vol->fats = FAT_GET_BR_FAT_NUM(boot_rec);                         
   12734:	e5c4800d 	strb	r8, [r4, #13]                                
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
   12738:	e1c491b8 	strh	r9, [r4, #24]                                
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
   1273c:	e1c4a2b4 	strh	sl, [r4, #36]	; 0x24                         
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
   12740:	e080028a 	add	r0, r0, sl, lsl #5                            
   12744:	eb005261 	bl	270d0 <__aeabi_idiv>                           
                     vol->bps;                                        
                                                                      
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;                 
   12748:	e1a05510 	lsl	r5, r0, r5                                    
                                                                      
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
   1274c:	e59d300c 	ldr	r3, [sp, #12]                                 
   12750:	e1937407 	orrs	r7, r3, r7, lsl #8                           
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
   12754:	059d201c 	ldreq	r2, [sp, #28]                               
   12758:	01a03802 	lsleq	r3, r2, #16                                 
   1275c:	059d2018 	ldreq	r2, [sp, #24]                               
   12760:	01833402 	orreq	r3, r3, r2, lsl #8                          
   12764:	059d2034 	ldreq	r2, [sp, #52]	; 0x34                        
   12768:	01833002 	orreq	r3, r3, r2                                  
   1276c:	059d2020 	ldreq	r2, [sp, #32]                               
   12770:	01837c02 	orreq	r7, r3, r2, lsl #24                         
   12774:	e584701c 	str	r7, [r4, #28]                                 
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
   12778:	e0279798 	mla	r7, r8, r7, r9                                
                     vol->rdir_secs;                                  
                                                                      
    /* for  FAT12/16 root dir starts at(sector) */                    
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
   1277c:	e59d2004 	ldr	r2, [sp, #4]                                  
   12780:	e59d1008 	ldr	r1, [sp, #8]                                  
   12784:	e1923401 	orrs	r3, r2, r1, lsl #8                           
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);     
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
   12788:	059d202c 	ldreq	r2, [sp, #44]	; 0x2c                        
   1278c:	01a03802 	lsleq	r3, r2, #16                                 
   12790:	059d2028 	ldreq	r2, [sp, #40]	; 0x28                        
   12794:	01833402 	orreq	r3, r3, r2, lsl #8                          
   12798:	059d2024 	ldreq	r2, [sp, #36]	; 0x24                        
   1279c:	01833002 	orreq	r3, r3, r2                                  
   127a0:	059d2030 	ldreq	r2, [sp, #48]	; 0x30                        
    vol->fat_loc = FAT_GET_BR_RESERVED_SECTORS_NUM(boot_rec);         
                                                                      
    vol->rdir_entrs = FAT_GET_BR_FILES_PER_ROOT_DIR(boot_rec);        
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
   127a4:	e5840028 	str	r0, [r4, #40]	; 0x28                          
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);     
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
   127a8:	01833c02 	orreq	r3, r3, r2, lsl #24                         
    if ( (FAT_GET_BR_SECTORS_PER_FAT(boot_rec)) != 0)                 
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT(boot_rec);       
    else                                                              
        vol->fat_length = FAT_GET_BR_SECTORS_PER_FAT32(boot_rec);     
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
   127ac:	e0870000 	add	r0, r7, r0                                    
   127b0:	e5840034 	str	r0, [r4, #52]	; 0x34                          
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
                                                                      
    if ( (FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec)) != 0)             
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM16(boot_rec);     
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
   127b4:	e5843030 	str	r3, [r4, #48]	; 0x30                          
                                                                      
    data_secs = vol->tot_secs - vol->data_fsec;                       
                                                                      
    vol->data_cls = data_secs / vol->spc;                             
   127b8:	e0600003 	rsb	r0, r0, r3                                    
                                                                      
    /* calculate the count of sectors occupied by the root directory */
    vol->rdir_secs = ((vol->rdir_entrs * FAT_DIRENTRY_SIZE) + (vol->bps - 1)) /
                     vol->bps;                                        
                                                                      
    vol->rdir_size = vol->rdir_secs << vol->sec_log2;                 
   127bc:	e584502c 	str	r5, [r4, #44]	; 0x2c                          
                                                                      
    vol->data_fsec = vol->fat_loc + vol->fats * vol->fat_length +     
                     vol->rdir_secs;                                  
                                                                      
    /* for  FAT12/16 root dir starts at(sector) */                    
    vol->rdir_loc = vol->fat_loc + vol->fats * vol->fat_length;       
   127c0:	e5847020 	str	r7, [r4, #32]                                 
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
                                                                      
    data_secs = vol->tot_secs - vol->data_fsec;                       
                                                                      
    vol->data_cls = data_secs / vol->spc;                             
   127c4:	e1a01006 	mov	r1, r6                                        
   127c8:	ebffbd5c 	bl	1d40 <__aeabi_uidiv>                           
                                                                      
    /* determine FAT type at least */                                 
    if ( vol->data_cls < FAT_FAT12_MAX_CLN)                           
   127cc:	e59f3404 	ldr	r3, [pc, #1028]	; 12bd8 <fat_init_volume_info+0x734>
   127d0:	e1500003 	cmp	r0, r3                                        
    else                                                              
        vol->tot_secs = FAT_GET_BR_TOTAL_SECTORS_NUM32(boot_rec);     
                                                                      
    data_secs = vol->tot_secs - vol->data_fsec;                       
                                                                      
    vol->data_cls = data_secs / vol->spc;                             
   127d4:	e5840038 	str	r0, [r4, #56]	; 0x38                          
                                                                      
    /* determine FAT type at least */                                 
    if ( vol->data_cls < FAT_FAT12_MAX_CLN)                           
   127d8:	8a000066 	bhi	12978 <fat_init_volume_info+0x4d4>            
    {                                                                 
        vol->type = FAT_FAT12;                                        
   127dc:	e3a03001 	mov	r3, #1                                        
   127e0:	e5c4300e 	strb	r3, [r4, #14]                                
        vol->mask = FAT_FAT12_MASK;                                   
   127e4:	e59f33f0 	ldr	r3, [pc, #1008]	; 12bdc <fat_init_volume_info+0x738>
   127e8:	e5843010 	str	r3, [r4, #16]                                 
        vol->eoc_val = FAT_FAT12_EOC;                                 
   127ec:	e2433007 	sub	r3, r3, #7                                    
   127f0:	e5843014 	str	r3, [r4, #20]                                 
            }                                                         
        }                                                             
    }                                                                 
    else                                                              
    {                                                                 
        vol->rdir_cl = 0;                                             
   127f4:	e3a03000 	mov	r3, #0                                        
        vol->mirror = 0;                                              
        vol->afat = 0;                                                
        vol->free_cls = FAT_UNDEFINED_VALUE;                          
   127f8:	e3e02000 	mvn	r2, #0                                        
            }                                                         
        }                                                             
    }                                                                 
    else                                                              
    {                                                                 
        vol->rdir_cl = 0;                                             
   127fc:	e584303c 	str	r3, [r4, #60]	; 0x3c                          
        vol->mirror = 0;                                              
   12800:	e5c43054 	strb	r3, [r4, #84]	; 0x54                         
        vol->afat = 0;                                                
   12804:	e5c4305c 	strb	r3, [r4, #92]	; 0x5c                         
        vol->free_cls = FAT_UNDEFINED_VALUE;                          
   12808:	e5842044 	str	r2, [r4, #68]	; 0x44                          
        vol->next_cl = FAT_UNDEFINED_VALUE;                           
   1280c:	e584204c 	str	r2, [r4, #76]	; 0x4c                          
 *     0 on success, or -1 if error occured and errno set appropriately
 */                                                                   
int                                                                   
_fat_block_release(fat_fs_info_t *fs_info)                            
{                                                                     
    return fat_buf_release(fs_info);                                  
   12810:	e1a00004 	mov	r0, r4                                        
   12814:	ebfffd8c 	bl	11e4c <fat_buf_release>                        
        vol->next_cl = FAT_UNDEFINED_VALUE;                           
    }                                                                 
                                                                      
    _fat_block_release(fs_info);                                      
                                                                      
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;       
   12818:	e594101c 	ldr	r1, [r4, #28]                                 
   1281c:	e5d4305c 	ldrb	r3, [r4, #92]	; 0x5c                         
   12820:	e1d421b8 	ldrh	r2, [r4, #24]                                
   12824:	e0232391 	mla	r3, r1, r3, r2                                
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
   12828:	e3a00002 	mov	r0, #2                                        
        vol->next_cl = FAT_UNDEFINED_VALUE;                           
    }                                                                 
                                                                      
    _fat_block_release(fs_info);                                      
                                                                      
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;       
   1282c:	e5843058 	str	r3, [r4, #88]	; 0x58                          
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
   12830:	e3a0100c 	mov	r1, #12                                       
   12834:	ebffc60d 	bl	4070 <calloc>                                  
    if ( fs_info->vhash == NULL )                                     
   12838:	e3500000 	cmp	r0, #0                                        
    _fat_block_release(fs_info);                                      
                                                                      
    vol->afat_loc = vol->fat_loc + vol->fat_length * vol->afat;       
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
   1283c:	e1a03000 	mov	r3, r0                                        
   12840:	e584006c 	str	r0, [r4, #108]	; 0x6c                         
    if ( fs_info->vhash == NULL )                                     
   12844:	0a0000c9 	beq	12b70 <fat_init_volume_info+0x6cc>            
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   12848:	e280e004 	add	lr, r0, #4                                    
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
   1284c:	e3a05000 	mov	r5, #0                                        
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   12850:	e280200c 	add	r2, r0, #12                                   
   12854:	e280c010 	add	ip, r0, #16                                   
                                                                      
  head->next = tail;                                                  
   12858:	e583e000 	str	lr, [r3]                                      
  head->previous = NULL;                                              
   1285c:	e5835004 	str	r5, [r3, #4]                                  
  tail->previous = head;                                              
   12860:	e5833008 	str	r3, [r3, #8]                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   12864:	e583c00c 	str	ip, [r3, #12]                                 
  head->previous = NULL;                                              
   12868:	e5835010 	str	r5, [r3, #16]                                 
  tail->previous = head;                                              
   1286c:	e5832014 	str	r2, [r3, #20]                                 
    }                                                                 
                                                                      
    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));
   12870:	e3a00002 	mov	r0, #2                                        
   12874:	e3a0100c 	mov	r1, #12                                       
   12878:	ebffc5fc 	bl	4070 <calloc>                                  
    if ( fs_info->rhash == NULL )                                     
   1287c:	e1500005 	cmp	r0, r5                                        
    }                                                                 
                                                                      
    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));
   12880:	e1a03000 	mov	r3, r0                                        
   12884:	e5840070 	str	r0, [r4, #112]	; 0x70                         
    if ( fs_info->rhash == NULL )                                     
   12888:	0a0000bf 	beq	12b8c <fat_init_volume_info+0x6e8>            
    }                                                                 
    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;        
   1288c:	e5d42003 	ldrb	r2, [r4, #3]                                 
   12890:	e5941030 	ldr	r1, [r4, #48]	; 0x30                          
   12894:	e1a01211 	lsl	r1, r1, r2                                    
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
        rtems_chain_initialize_empty(fs_info->rhash + i);             
                                                                      
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;                
   12898:	e3a00c01 	mov	r0, #256	; 0x100                              
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;        
   1289c:	e1a01201 	lsl	r1, r1, #4                                    
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   128a0:	e283e004 	add	lr, r3, #4                                    
   128a4:	e283200c 	add	r2, r3, #12                                   
   128a8:	e283c010 	add	ip, r3, #16                                   
   128ac:	e5841080 	str	r1, [r4, #128]	; 0x80                         
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
        rtems_chain_initialize_empty(fs_info->rhash + i);             
                                                                      
    fs_info->uino_pool_size = FAT_UINO_POOL_INIT_SIZE;                
   128b0:	e584007c 	str	r0, [r4, #124]	; 0x7c                         
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;        
    fs_info->index = 0;                                               
   128b4:	e5845078 	str	r5, [r4, #120]	; 0x78                         
    fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
   128b8:	e3a01001 	mov	r1, #1                                        
                                                                      
  head->next = tail;                                                  
   128bc:	e583e000 	str	lr, [r3]                                      
  head->previous = NULL;                                              
   128c0:	e5835004 	str	r5, [r3, #4]                                  
  tail->previous = head;                                              
   128c4:	e5833008 	str	r3, [r3, #8]                                  
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   128c8:	e583c00c 	str	ip, [r3, #12]                                 
  head->previous = NULL;                                              
   128cc:	e5835010 	str	r5, [r3, #16]                                 
  tail->previous = head;                                              
   128d0:	e5832014 	str	r2, [r3, #20]                                 
   128d4:	ebffc5e5 	bl	4070 <calloc>                                  
    if ( fs_info->uino == NULL )                                      
   128d8:	e3500000 	cmp	r0, #0                                        
        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;        
    fs_info->index = 0;                                               
    fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
   128dc:	e5840074 	str	r0, [r4, #116]	; 0x74                         
    if ( fs_info->uino == NULL )                                      
   128e0:	0a000097 	beq	12b44 <fat_init_volume_info+0x6a0>            
        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));  
   128e4:	e1d400b0 	ldrh	r0, [r4]                                     
   128e8:	e3a01001 	mov	r1, #1                                        
   128ec:	ebffc5df 	bl	4070 <calloc>                                  
    if (fs_info->sec_buf == NULL)                                     
   128f0:	e3500000 	cmp	r0, #0                                        
        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));  
   128f4:	e5840090 	str	r0, [r4, #144]	; 0x90                         
    if (fs_info->sec_buf == NULL)                                     
   128f8:	0a0000a7 	beq	12b9c <fat_init_volume_info+0x6f8>            
      return bytes_written;                                           
}                                                                     
                                                                      
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{                                                                     
    return (sec_num & (vol->spc - 1)) == 0;                           
   128fc:	e5d43004 	ldrb	r3, [r4, #4]                                 
   12900:	e5942034 	ldr	r2, [r4, #52]	; 0x34                          
   12904:	e2433001 	sub	r3, r3, #1                                    
    /*                                                                
     * 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)                       
   12908:	e0130002 	ands	r0, r3, r2                                   
            vol->bytes_per_block_log2 = vol->bpc_log2;                
            vol->sectors_per_block = vol->spc;                        
        }                                                             
    }                                                                 
                                                                      
    return RC_OK;                                                     
   1290c:	11a00005 	movne	r0, r5                                      
    /*                                                                
     * 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)                       
   12910:	1a000011 	bne	1295c <fat_init_volume_info+0x4b8>            
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
   12914:	e5d4100e 	ldrb	r1, [r4, #14]                                
   12918:	e3510004 	cmp	r1, #4                                        
   1291c:	0a000002 	beq	1292c <fat_init_volume_info+0x488>            
      return bytes_written;                                           
}                                                                     
                                                                      
static bool is_cluster_aligned(const fat_vol_t *vol, uint32_t sec_num)
{                                                                     
    return (sec_num & (vol->spc - 1)) == 0;                           
   12920:	e5942020 	ldr	r2, [r4, #32]                                 
     * If possible we will use the cluster size as bdbuf block size for faster
     * file access. This requires that certain sectors are aligned to cluster
     * borders.                                                       
     */                                                               
    if (is_cluster_aligned(vol, vol->data_fsec)                       
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
   12924:	e1130002 	tst	r3, r2                                        
   12928:	1a00000b 	bne	1295c <fat_init_volume_info+0x4b8>            
    {                                                                 
        sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);    
   1292c:	e1d410b6 	ldrh	r1, [r4, #6]                                 
   12930:	e3a02001 	mov	r2, #1                                        
   12934:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
   12938:	ebfff70c 	bl	10570 <rtems_bdbuf_set_block_size>             
        if (sc == RTEMS_SUCCESSFUL)                                   
   1293c:	e3500000 	cmp	r0, #0                                        
        {                                                             
            vol->bytes_per_block = vol->bpc;                          
   12940:	01d410b6 	ldrheq	r1, [r4, #6]                               
            vol->bytes_per_block_log2 = vol->bpc_log2;                
   12944:	05d42008 	ldrbeq	r2, [r4, #8]                               
            vol->sectors_per_block = vol->spc;                        
   12948:	05d43004 	ldrbeq	r3, [r4, #4]                               
        && (FAT_FAT32 == vol->type || is_cluster_aligned(vol, vol->rdir_loc)))
    {                                                                 
        sc = rtems_bdbuf_set_block_size (vol->dd, vol->bpc, true);    
        if (sc == RTEMS_SUCCESSFUL)                                   
        {                                                             
            vol->bytes_per_block = vol->bpc;                          
   1294c:	01c410ba 	strheq	r1, [r4, #10]                              
            vol->bytes_per_block_log2 = vol->bpc_log2;                
   12950:	05c4200c 	strbeq	r2, [r4, #12]                              
            vol->sectors_per_block = vol->spc;                        
   12954:	05c43009 	strbeq	r3, [r4, #9]                               
        }                                                             
    }                                                                 
                                                                      
    return RC_OK;                                                     
   12958:	13a00000 	movne	r0, #0                                      
}                                                                     
   1295c:	e28dd0ac 	add	sp, sp, #172	; 0xac                           
   12960:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
         (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;
   12964:	e1a03ca3 	lsr	r3, r3, #25                                   
   12968:	e3130001 	tst	r3, #1                                        
   1296c:	e5c42003 	strb	r2, [r4, #3]                                 
   12970:	0affff2c 	beq	12628 <fat_init_volume_info+0x184>            
   12974:	eaffff34 	b	1264c <fat_init_volume_info+0x1a8>              
        vol->mask = FAT_FAT12_MASK;                                   
        vol->eoc_val = FAT_FAT12_EOC;                                 
    }                                                                 
    else                                                              
    {                                                                 
        if ( vol->data_cls < FAT_FAT16_MAX_CLN)                       
   12978:	e59f3260 	ldr	r3, [pc, #608]	; 12be0 <fat_init_volume_info+0x73c>
   1297c:	e1500003 	cmp	r0, r3                                        
   12980:	9a00004c 	bls	12ab8 <fat_init_volume_info+0x614>            
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
   12984:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
   12988:	e59d1038 	ldr	r1, [sp, #56]	; 0x38                          
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
   1298c:	e1a02803 	lsl	r2, r3, #16                                   
   12990:	e59d3050 	ldr	r3, [sp, #80]	; 0x50                          
   12994:	e1822403 	orr	r2, r2, r3, lsl #8                            
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
   12998:	e2013080 	and	r3, r1, #128	; 0x80                           
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
   1299c:	e59d104c 	ldr	r1, [sp, #76]	; 0x4c                          
   129a0:	e1822001 	orr	r2, r2, r1                                    
   129a4:	e59d1048 	ldr	r1, [sp, #72]	; 0x48                          
   129a8:	e1822c01 	orr	r2, r2, r1, lsl #24                           
            vol->mask = FAT_FAT16_MASK;                               
            vol->eoc_val = FAT_FAT16_EOC;                             
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
   129ac:	e3a01004 	mov	r1, #4                                        
   129b0:	e5c4100e 	strb	r1, [r4, #14]                                
            vol->mask = FAT_FAT32_MASK;                               
   129b4:	e3e0120f 	mvn	r1, #-268435456	; 0xf0000000                  
   129b8:	e5841010 	str	r1, [r4, #16]                                 
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
        if (vol->mirror)                                              
   129bc:	e3530000 	cmp	r3, #0                                        
        }                                                             
        else                                                          
        {                                                             
            vol->type = FAT_FAT32;                                    
            vol->mask = FAT_FAT32_MASK;                               
            vol->eoc_val = FAT_FAT32_EOC;                             
   129c0:	e3e0127f 	mvn	r1, #-268435449	; 0xf0000007                  
   129c4:	e5841014 	str	r1, [r4, #20]                                 
        }                                                             
    }                                                                 
                                                                      
    if (vol->type == FAT_FAT32)                                       
    {                                                                 
        vol->rdir_cl = FAT_GET_BR_FAT32_ROOT_CLUSTER(boot_rec);       
   129c8:	e584203c 	str	r2, [r4, #60]	; 0x3c                          
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
   129cc:	e5c43054 	strb	r3, [r4, #84]	; 0x54                         
        if (vol->mirror)                                              
   129d0:	0a00004f 	beq	12b14 <fat_init_volume_info+0x670>            
            vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
   129d4:	e59d2038 	ldr	r2, [sp, #56]	; 0x38                          <== NOT EXECUTED
   129d8:	e202300f 	and	r3, r2, #15                                   <== NOT EXECUTED
   129dc:	e5c4305c 	strb	r3, [r4, #92]	; 0x5c                         <== NOT EXECUTED
        else                                                          
            vol->afat = 0;                                            
                                                                      
        vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);    
   129e0:	e59d303c 	ldr	r3, [sp, #60]	; 0x3c                          
   129e4:	e59d2040 	ldr	r2, [sp, #64]	; 0x40                          
   129e8:	e1831402 	orr	r1, r3, r2, lsl #8                            
        if( vol->info_sec == 0 )                                      
   129ec:	e3510000 	cmp	r1, #0                                        
        if (vol->mirror)                                              
            vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
        else                                                          
            vol->afat = 0;                                            
                                                                      
        vol->info_sec = FAT_GET_BR_FAT32_FS_INFO_SECTOR(boot_rec);    
   129f0:	e1c414b0 	strh	r1, [r4, #64]	; 0x40                         
        if( vol->info_sec == 0 )                                      
   129f4:	0a000038 	beq	12adc <fat_init_volume_info+0x638>            
            rtems_set_errno_and_return_minus_one( EINVAL );           
        }                                                             
        else                                                          
        {                                                             
            ret = _fat_block_read(fs_info, vol->info_sec , 0,         
                                  FAT_FSI_LEADSIG_SIZE, fs_info_sector);
   129f8:	e28d509c 	add	r5, sp, #156	; 0x9c                           
            close(vol->fd);                                           
            rtems_set_errno_and_return_minus_one( EINVAL );           
        }                                                             
        else                                                          
        {                                                             
            ret = _fat_block_read(fs_info, vol->info_sec , 0,         
   129fc:	e1a00004 	mov	r0, r4                                        
   12a00:	e3a02000 	mov	r2, #0                                        
   12a04:	e3a03004 	mov	r3, #4                                        
   12a08:	e58d5000 	str	r5, [sp]                                      
   12a0c:	ebfffda2 	bl	1209c <_fat_block_read>                        
                                  FAT_FSI_LEADSIG_SIZE, fs_info_sector);
            if ( ret < 0 )                                            
   12a10:	e3500000 	cmp	r0, #0                                        
   12a14:	ba00006a 	blt	12bc4 <fat_init_volume_info+0x720>            
            {                                                         
                close(vol->fd);                                       
                return -1;                                            
            }                                                         
                                                                      
            if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=      
   12a18:	e5dd309e 	ldrb	r3, [sp, #158]	; 0x9e                        
   12a1c:	e5dd209d 	ldrb	r2, [sp, #157]	; 0x9d                        
   12a20:	e1a03803 	lsl	r3, r3, #16                                   
   12a24:	e5dd109c 	ldrb	r1, [sp, #156]	; 0x9c                        
   12a28:	e1833402 	orr	r3, r3, r2, lsl #8                            
   12a2c:	e5dd209f 	ldrb	r2, [sp, #159]	; 0x9f                        
   12a30:	e1833001 	orr	r3, r3, r1                                    
   12a34:	e1832c02 	orr	r2, r3, r2, lsl #24                           
   12a38:	e59f31a4 	ldr	r3, [pc, #420]	; 12be4 <fat_init_volume_info+0x740>
   12a3c:	e1520003 	cmp	r2, r3                                        
   12a40:	1a000023 	bne	12ad4 <fat_init_volume_info+0x630>            
                close(vol->fd);                                       
                rtems_set_errno_and_return_minus_one( EINVAL );       
            }                                                         
            else                                                      
            {                                                         
                ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,
   12a44:	e1d414b0 	ldrh	r1, [r4, #64]	; 0x40                         
   12a48:	e1a00004 	mov	r0, r4                                        
   12a4c:	e3a02f79 	mov	r2, #484	; 0x1e4                              
   12a50:	e3a0300c 	mov	r3, #12                                       
   12a54:	e58d5000 	str	r5, [sp]                                      
   12a58:	ebfffd8f 	bl	1209c <_fat_block_read>                        
                                      FAT_USEFUL_INFO_SIZE, fs_info_sector);
                if ( ret < 0 )                                        
   12a5c:	e3500000 	cmp	r0, #0                                        
   12a60:	ba000055 	blt	12bbc <fat_init_volume_info+0x718>            
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a64:	e5dd20a2 	ldrb	r2, [sp, #162]	; 0xa2                        
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12a68:	e5dd30a6 	ldrb	r3, [sp, #166]	; 0xa6                        
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a6c:	e5dd00a1 	ldrb	r0, [sp, #161]	; 0xa1                        
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12a70:	e5dd10a5 	ldrb	r1, [sp, #165]	; 0xa5                        
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a74:	e1a02802 	lsl	r2, r2, #16                                   
   12a78:	e5dde0a0 	ldrb	lr, [sp, #160]	; 0xa0                        
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12a7c:	e1a03803 	lsl	r3, r3, #16                                   
   12a80:	e5ddc0a4 	ldrb	ip, [sp, #164]	; 0xa4                        
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a84:	e1822400 	orr	r2, r2, r0, lsl #8                            
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12a88:	e1833401 	orr	r3, r3, r1, lsl #8                            
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a8c:	e5dd00a3 	ldrb	r0, [sp, #163]	; 0xa3                        
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12a90:	e5dd10a7 	ldrb	r1, [sp, #167]	; 0xa7                        
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a94:	e182200e 	orr	r2, r2, lr                                    
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12a98:	e183300c 	orr	r3, r3, ip                                    
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
   12a9c:	e1822c00 	orr	r2, r2, r0, lsl #24                           
                vol->free_cls = vol->free_cls_in_fs_info;             
                vol->next_cl_in_fs_info =                             
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
   12aa0:	e1833c01 	orr	r3, r3, r1, lsl #24                           
                    _fat_block_release(fs_info);                      
                    close(vol->fd);                                   
                    return -1;                                        
                }                                                     
                                                                      
                vol->free_cls_in_fs_info =                            
   12aa4:	e5842048 	str	r2, [r4, #72]	; 0x48                          
                  FAT_GET_FSINFO_FREE_CLUSTER_COUNT(fs_info_sector);  
                vol->free_cls = vol->free_cls_in_fs_info;             
   12aa8:	e5842044 	str	r2, [r4, #68]	; 0x44                          
                vol->next_cl_in_fs_info =                             
   12aac:	e5843050 	str	r3, [r4, #80]	; 0x50                          
                  FAT_GET_FSINFO_NEXT_FREE_CLUSTER(fs_info_sector);   
                vol->next_cl = vol->next_cl_in_fs_info;               
   12ab0:	e584304c 	str	r3, [r4, #76]	; 0x4c                          
   12ab4:	eaffff55 	b	12810 <fat_init_volume_info+0x36c>              
    }                                                                 
    else                                                              
    {                                                                 
        if ( vol->data_cls < FAT_FAT16_MAX_CLN)                       
        {                                                             
            vol->type = FAT_FAT16;                                    
   12ab8:	e3a03002 	mov	r3, #2                                        
   12abc:	e5c4300e 	strb	r3, [r4, #14]                                
            vol->mask = FAT_FAT16_MASK;                               
   12ac0:	e59f3120 	ldr	r3, [pc, #288]	; 12be8 <fat_init_volume_info+0x744>
   12ac4:	e5843010 	str	r3, [r4, #16]                                 
            vol->eoc_val = FAT_FAT16_EOC;                             
   12ac8:	e2433007 	sub	r3, r3, #7                                    
   12acc:	e5843014 	str	r3, [r4, #20]                                 
   12ad0:	eaffff47 	b	127f4 <fat_init_volume_info+0x350>              
 *     0 on success, or -1 if error occured and errno set appropriately
 */                                                                   
int                                                                   
_fat_block_release(fat_fs_info_t *fs_info)                            
{                                                                     
    return fat_buf_release(fs_info);                                  
   12ad4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12ad8:	ebfffcdb 	bl	11e4c <fat_buf_release>                        <== NOT EXECUTED
                                                                      
            if (FAT_GET_FSINFO_LEAD_SIGNATURE(fs_info_sector) !=      
                FAT_FSINFO_LEAD_SIGNATURE_VALUE)                      
            {                                                         
                _fat_block_release(fs_info);                          
                close(vol->fd);                                       
   12adc:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12ae0:	ebffc574 	bl	40b8 <close>                                   <== NOT EXECUTED
                rtems_set_errno_and_return_minus_one( EINVAL );       
   12ae4:	eb001b72 	bl	198b4 <__errno>                                <== NOT EXECUTED
   12ae8:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   12aec:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12af0:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12af4:	eaffff98 	b	1295c <fat_init_volume_info+0x4b8>              <== NOT EXECUTED
    }                                                                 
                                                                      
    /* check that device is registred as block device and lock it */  
    rc = rtems_disk_fd_get_disk_device(vol->fd, &vol->dd);            
    if (rc != 0) {                                                    
        close(vol->fd);                                               
   12af8:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12afc:	ebffc56d 	bl	40b8 <close>                                   <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENXIO);                  
   12b00:	eb001b6b 	bl	198b4 <__errno>                                <== NOT EXECUTED
   12b04:	e3a03006 	mov	r3, #6                                        <== NOT EXECUTED
   12b08:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12b0c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12b10:	eaffff91 	b	1295c <fat_init_volume_info+0x4b8>              <== NOT EXECUTED
                                                                      
        vol->mirror = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_MIRROR;
        if (vol->mirror)                                              
            vol->afat = FAT_GET_BR_EXT_FLAGS(boot_rec) & FAT_BR_EXT_FLAGS_FAT_NUM;
        else                                                          
            vol->afat = 0;                                            
   12b14:	e5c4305c 	strb	r3, [r4, #92]	; 0x5c                         
   12b18:	eaffffb0 	b	129e0 <fat_init_volume_info+0x53c>              
    memcpy( boot_rec, block->buffer, FAT_MAX_BPB_SIZE);               
                                                                      
    sc = rtems_bdbuf_release( block);                                 
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        close(vol->fd);                                               
   12b1c:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12b20:	ebffc564 	bl	40b8 <close>                                   <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( EIO );                  
   12b24:	eb001b62 	bl	198b4 <__errno>                                <== NOT EXECUTED
   12b28:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   12b2c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12b30:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12b34:	eaffff88 	b	1295c <fat_init_volume_info+0x4b8>              <== NOT EXECUTED
    }                                                                 
                                                                      
    rc = fstat(vol->fd, &stat_buf);                                   
    if (rc != 0)                                                      
    {                                                                 
        close(vol->fd);                                               
   12b38:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12b3c:	ebffc55d 	bl	40b8 <close>                                   <== NOT EXECUTED
   12b40:	eaffffee 	b	12b00 <fat_init_volume_info+0x65c>              <== NOT EXECUTED
    fs_info->uino_base = (vol->tot_secs << vol->sec_mul) << 4;        
    fs_info->index = 0;                                               
    fs_info->uino = (char *)calloc(fs_info->uino_pool_size, sizeof(char));
    if ( fs_info->uino == NULL )                                      
    {                                                                 
        close(vol->fd);                                               
   12b44:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12b48:	ebffc55a 	bl	40b8 <close>                                   <== NOT EXECUTED
        free(fs_info->vhash);                                         
   12b4c:	e594006c 	ldr	r0, [r4, #108]	; 0x6c                         <== NOT EXECUTED
   12b50:	ebffc601 	bl	435c <free>                                    <== NOT EXECUTED
        free(fs_info->rhash);                                         
   12b54:	e5940070 	ldr	r0, [r4, #112]	; 0x70                         <== NOT EXECUTED
    if (fs_info->sec_buf == NULL)                                     
    {                                                                 
        close(vol->fd);                                               
        free(fs_info->vhash);                                         
        free(fs_info->rhash);                                         
        free(fs_info->uino);                                          
   12b58:	ebffc5ff 	bl	435c <free>                                    <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );               
   12b5c:	eb001b54 	bl	198b4 <__errno>                                <== NOT EXECUTED
   12b60:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   12b64:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12b68:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12b6c:	eaffff7a 	b	1295c <fat_init_volume_info+0x4b8>              <== NOT EXECUTED
                                                                      
    /* set up collection of fat-files fd */                           
    fs_info->vhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
    if ( fs_info->vhash == NULL )                                     
    {                                                                 
        close(vol->fd);                                               
   12b70:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12b74:	ebffc54f 	bl	40b8 <close>                                   <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );               
   12b78:	eb001b4d 	bl	198b4 <__errno>                                <== NOT EXECUTED
   12b7c:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   12b80:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12b84:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12b88:	eaffff73 	b	1295c <fat_init_volume_info+0x4b8>              <== NOT EXECUTED
        rtems_chain_initialize_empty(fs_info->vhash + i);             
                                                                      
    fs_info->rhash = calloc(FAT_HASH_SIZE, sizeof(rtems_chain_control));
    if ( fs_info->rhash == NULL )                                     
    {                                                                 
        close(vol->fd);                                               
   12b8c:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12b90:	ebffc548 	bl	40b8 <close>                                   <== NOT EXECUTED
        free(fs_info->vhash);                                         
   12b94:	e594006c 	ldr	r0, [r4, #108]	; 0x6c                         <== NOT EXECUTED
   12b98:	eaffffee 	b	12b58 <fat_init_volume_info+0x6b4>              <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( ENOMEM );               
    }                                                                 
    fs_info->sec_buf = (uint8_t *)calloc(vol->bps, sizeof(uint8_t));  
    if (fs_info->sec_buf == NULL)                                     
    {                                                                 
        close(vol->fd);                                               
   12b9c:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12ba0:	ebffc544 	bl	40b8 <close>                                   <== NOT EXECUTED
        free(fs_info->vhash);                                         
   12ba4:	e594006c 	ldr	r0, [r4, #108]	; 0x6c                         <== NOT EXECUTED
   12ba8:	ebffc5eb 	bl	435c <free>                                    <== NOT EXECUTED
        free(fs_info->rhash);                                         
   12bac:	e5940070 	ldr	r0, [r4, #112]	; 0x70                         <== NOT EXECUTED
   12bb0:	ebffc5e9 	bl	435c <free>                                    <== NOT EXECUTED
        free(fs_info->uino);                                          
   12bb4:	e5940074 	ldr	r0, [r4, #116]	; 0x74                         <== NOT EXECUTED
   12bb8:	eaffffe6 	b	12b58 <fat_init_volume_info+0x6b4>              <== NOT EXECUTED
 *     0 on success, or -1 if error occured and errno set appropriately
 */                                                                   
int                                                                   
_fat_block_release(fat_fs_info_t *fs_info)                            
{                                                                     
    return fat_buf_release(fs_info);                                  
   12bbc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12bc0:	ebfffca1 	bl	11e4c <fat_buf_release>                        <== NOT EXECUTED
                ret = _fat_block_read(fs_info, vol->info_sec , FAT_FSI_INFO,
                                      FAT_USEFUL_INFO_SIZE, fs_info_sector);
                if ( ret < 0 )                                        
                {                                                     
                    _fat_block_release(fs_info);                      
                    close(vol->fd);                                   
   12bc4:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          <== NOT EXECUTED
   12bc8:	ebffc53a 	bl	40b8 <close>                                   <== NOT EXECUTED
                    return -1;                                        
   12bcc:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   12bd0:	eaffff61 	b	1295c <fat_init_volume_info+0x4b8>              <== NOT EXECUTED
                                                                      

00018174 <fat_scan_fat_for_free_clusters>: uint32_t count, uint32_t *cls_added, uint32_t *last_cl, bool zero_fill ) {
   18174:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   18178:	e24dd014 	sub	sp, sp, #20                                   
   1817c:	e5ddc03c 	ldrb	ip, [sp, #60]	; 0x3c                         
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
    uint32_t       next_cln = 0;                                      
   18180:	e3a09000 	mov	r9, #0                                        
    uint32_t       i = 2;                                             
    ssize_t        bytes_written;                                     
                                                                      
    *cls_added = 0;                                                   
                                                                      
    if (count == 0)                                                   
   18184:	e252b000 	subs	fp, r2, #0                                   
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
    uint32_t       next_cln = 0;                                      
    uint32_t       save_cln = 0;                                      
    uint32_t       data_cls_val = fs_info->vol.data_cls + 2;          
   18188:	e5908038 	ldr	r8, [r0, #56]	; 0x38                          
    uint32_t                              count,                      
    uint32_t                             *cls_added,                  
    uint32_t                             *last_cl,                    
    bool                                  zero_fill                   
    )                                                                 
{                                                                     
   1818c:	e1a06000 	mov	r6, r0                                        
   18190:	e1a07003 	mov	r7, r3                                        
   18194:	e58d100c 	str	r1, [sp, #12]                                 
   18198:	e58dc008 	str	ip, [sp, #8]                                  
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
    uint32_t       next_cln = 0;                                      
   1819c:	e58d9010 	str	r9, [sp, #16]                                 
    uint32_t       save_cln = 0;                                      
    uint32_t       data_cls_val = fs_info->vol.data_cls + 2;          
    uint32_t       i = 2;                                             
    ssize_t        bytes_written;                                     
                                                                      
    *cls_added = 0;                                                   
   181a0:	e5839000 	str	r9, [r3]                                      
                                                                      
    if (count == 0)                                                   
        return rc;                                                    
   181a4:	01a0a00b 	moveq	sl, fp                                      
    uint32_t       i = 2;                                             
    ssize_t        bytes_written;                                     
                                                                      
    *cls_added = 0;                                                   
                                                                      
    if (count == 0)                                                   
   181a8:	0a000042 	beq	182b8 <fat_scan_fat_for_free_clusters+0x144>  
        return rc;                                                    
                                                                      
    if (fs_info->vol.next_cl != FAT_UNDEFINED_VALUE)                  
   181ac:	e590404c 	ldr	r4, [r0, #76]	; 0x4c                          
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
    uint32_t       next_cln = 0;                                      
    uint32_t       save_cln = 0;                                      
    uint32_t       data_cls_val = fs_info->vol.data_cls + 2;          
   181b0:	e2888002 	add	r8, r8, #2                                    
    uint32_t                             *last_cl,                    
    bool                                  zero_fill                   
    )                                                                 
{                                                                     
    int            rc = RC_OK;                                        
    uint32_t       cl4find = 2;                                       
   181b4:	e3740001 	cmn	r4, #1                                        
   181b8:	03a04002 	moveq	r4, #2                                      
    /*                                                                
     * fs_info->vol.data_cls is exactly the count of data clusters    
     * starting at cluster 2, so the maximum valid cluster number is  
     * (fs_info->vol.data_cls + 1)                                    
     */                                                               
    while (i < data_cls_val)                                          
   181bc:	e3580002 	cmp	r8, #2                                        
   181c0:	9a00004a 	bls	182f0 <fat_scan_fat_for_free_clusters+0x17c>  
   181c4:	e3a05002 	mov	r5, #2                                        
   181c8:	ea000016 	b	18228 <fat_scan_fat_for_free_clusters+0xb4>     
             * by separate 'if' statement because otherwise undo function
             * wouldn't work properly                                 
             */                                                       
            if (*cls_added == 0)                                      
            {                                                         
                *chain = cl4find;                                     
   181cc:	e59dc00c 	ldr	ip, [sp, #12]                                 
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
   181d0:	e1a00006 	mov	r0, r6                                        
             * by separate 'if' statement because otherwise undo function
             * wouldn't work properly                                 
             */                                                       
            if (*cls_added == 0)                                      
            {                                                         
                *chain = cl4find;                                     
   181d4:	e58c4000 	str	r4, [ip]                                      
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
   181d8:	e1a01004 	mov	r1, r4                                        
   181dc:	e3e02000 	mvn	r2, #0                                        
   181e0:	ebffff27 	bl	17e84 <fat_set_fat_cluster>                    
                if ( rc != RC_OK )                                    
   181e4:	e3500000 	cmp	r0, #0                                        
   181e8:	1a00005f 	bne	1836c <fat_scan_fat_for_free_clusters+0x1f8>  
                rc = fat_set_fat_cluster(fs_info, save_cln, cl4find); 
                if ( rc != RC_OK )                                    
                    goto cleanup;                                     
            }                                                         
                                                                      
            if (zero_fill)                                            
   181ec:	e59dc008 	ldr	ip, [sp, #8]                                  
   181f0:	e35c0000 	cmp	ip, #0                                        
   181f4:	1a000032 	bne	182c4 <fat_scan_fat_for_free_clusters+0x150>  
                    goto cleanup;                                     
                }                                                     
            }                                                         
                                                                      
            save_cln = cl4find;                                       
            (*cls_added)++;                                           
   181f8:	e5973000 	ldr	r3, [r7]                                      
   181fc:	e2833001 	add	r3, r3, #1                                    
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
   18200:	e15b0003 	cmp	fp, r3                                        
                    goto cleanup;                                     
                }                                                     
            }                                                         
                                                                      
            save_cln = cl4find;                                       
            (*cls_added)++;                                           
   18204:	e5873000 	str	r3, [r7]                                      
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
   18208:	0a00004c 	beq	18340 <fat_scan_fat_for_free_clusters+0x1cc>  
   1820c:	e1a09004 	mov	r9, r4                                        
                fat_buf_release(fs_info);                             
                return rc;                                            
            }                                                         
        }                                                             
        i++;                                                          
        cl4find++;                                                    
   18210:	e2844001 	add	r4, r4, #1                                    
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
   18214:	e1580004 	cmp	r8, r4                                        
                *last_cl = save_cln;                                  
                fat_buf_release(fs_info);                             
                return rc;                                            
            }                                                         
        }                                                             
        i++;                                                          
   18218:	e2855001 	add	r5, r5, #1                                    
        cl4find++;                                                    
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
   1821c:	93a04002 	movls	r4, #2                                      
    /*                                                                
     * fs_info->vol.data_cls is exactly the count of data clusters    
     * starting at cluster 2, so the maximum valid cluster number is  
     * (fs_info->vol.data_cls + 1)                                    
     */                                                               
    while (i < data_cls_val)                                          
   18220:	e1580005 	cmp	r8, r5                                        
   18224:	9a000031 	bls	182f0 <fat_scan_fat_for_free_clusters+0x17c>  
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);        
   18228:	e1a00006 	mov	r0, r6                                        
   1822c:	e1a01004 	mov	r1, r4                                        
   18230:	e28d2010 	add	r2, sp, #16                                   
   18234:	ebfffebc 	bl	17d2c <fat_get_fat_cluster>                    
        if ( rc != RC_OK )                                            
   18238:	e250a000 	subs	sl, r0, #0                                   
   1823c:	1a000037 	bne	18320 <fat_scan_fat_for_free_clusters+0x1ac>  
            if (*cls_added != 0)                                      
                fat_free_fat_clusters_chain(fs_info, (*chain));       
            return rc;                                                
        }                                                             
                                                                      
        if (next_cln == FAT_GENFAT_FREE)                              
   18240:	e59d3010 	ldr	r3, [sp, #16]                                 
   18244:	e3530000 	cmp	r3, #0                                        
   18248:	1afffff0 	bne	18210 <fat_scan_fat_for_free_clusters+0x9c>   
            /*                                                        
             * We are enforced to process allocation of the first free cluster
             * by separate 'if' statement because otherwise undo function
             * wouldn't work properly                                 
             */                                                       
            if (*cls_added == 0)                                      
   1824c:	e5973000 	ldr	r3, [r7]                                      
   18250:	e3530000 	cmp	r3, #0                                        
   18254:	0affffdc 	beq	181cc <fat_scan_fat_for_free_clusters+0x58>   
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                /* set EOC value to new allocated cluster */          
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
   18258:	e1a00006 	mov	r0, r6                                        
   1825c:	e1a01004 	mov	r1, r4                                        
   18260:	e3e02000 	mvn	r2, #0                                        
   18264:	ebffff06 	bl	17e84 <fat_set_fat_cluster>                    
                if ( rc != RC_OK )                                    
   18268:	e3500000 	cmp	r0, #0                                        
   1826c:	1a000040 	bne	18374 <fat_scan_fat_for_free_clusters+0x200>  
                    /* cleanup activity */                            
                    fat_free_fat_clusters_chain(fs_info, (*chain));   
                    return rc;                                        
                }                                                     
                                                                      
                rc = fat_set_fat_cluster(fs_info, save_cln, cl4find); 
   18270:	e1a00006 	mov	r0, r6                                        
   18274:	e1a01009 	mov	r1, r9                                        
   18278:	e1a02004 	mov	r2, r4                                        
   1827c:	ebffff00 	bl	17e84 <fat_set_fat_cluster>                    
                if ( rc != RC_OK )                                    
   18280:	e3500000 	cmp	r0, #0                                        
   18284:	0affffd8 	beq	181ec <fat_scan_fat_for_free_clusters+0x78>   
   18288:	e1a09000 	mov	r9, r0                                        <== NOT EXECUTED
    return RC_OK;                                                     
                                                                      
cleanup:                                                              
                                                                      
    /* cleanup activity */                                            
    fat_free_fat_clusters_chain(fs_info, (*chain));                   
   1828c:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   18290:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   18294:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
   18298:	ebffff81 	bl	180a4 <fat_free_fat_clusters_chain>            <== NOT EXECUTED
    /* trying to save last allocated cluster for future use */        
    fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_FREE);           
   1829c:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   182a0:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   182a4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   182a8:	ebfffef5 	bl	17e84 <fat_set_fat_cluster>                    <== NOT EXECUTED
    fat_buf_release(fs_info);                                         
   182ac:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   182b0:	ebffe6e5 	bl	11e4c <fat_buf_release>                        <== NOT EXECUTED
    return rc;                                                        
   182b4:	e1a0a009 	mov	sl, r9                                        <== NOT EXECUTED
}                                                                     
   182b8:	e1a0000a 	mov	r0, sl                                        
   182bc:	e28dd014 	add	sp, sp, #20                                   
   182c0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                    goto cleanup;                                     
            }                                                         
                                                                      
            if (zero_fill)                                            
            {                                                         
                bytes_written = fat_cluster_set (fs_info, cl4find, 0, fs_info->vol.bpc, 0);
   182c4:	e1d630b6 	ldrh	r3, [r6, #6]                                 
   182c8:	e3a02000 	mov	r2, #0                                        
   182cc:	e1a00006 	mov	r0, r6                                        
   182d0:	e1a01004 	mov	r1, r4                                        
   182d4:	e58d2000 	str	r2, [sp]                                      
   182d8:	ebffe7c1 	bl	121e4 <fat_cluster_set>                        
                if (fs_info->vol.bpc != bytes_written)                
   182dc:	e1d630b6 	ldrh	r3, [r6, #6]                                 
   182e0:	e1530000 	cmp	r3, r0                                        
   182e4:	0affffc3 	beq	181f8 <fat_scan_fat_for_free_clusters+0x84>   
                {                                                     
                    rc = -1;                                          
   182e8:	e3e09000 	mvn	r9, #0                                        <== NOT EXECUTED
   182ec:	eaffffe6 	b	1828c <fat_scan_fat_for_free_clusters+0x118>    <== NOT EXECUTED
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
    }                                                                 
                                                                      
        fs_info->vol.next_cl = save_cln;                              
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
   182f0:	e5963044 	ldr	r3, [r6, #68]	; 0x44                          <== NOT EXECUTED
        cl4find++;                                                    
        if (cl4find >= data_cls_val)                                  
            cl4find = 2;                                              
    }                                                                 
                                                                      
        fs_info->vol.next_cl = save_cln;                              
   182f4:	e586904c 	str	r9, [r6, #76]	; 0x4c                          <== NOT EXECUTED
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
   182f8:	e3730001 	cmn	r3, #1                                        <== NOT EXECUTED
            fs_info->vol.free_cls -= (*cls_added);                    
   182fc:	15972000 	ldrne	r2, [r7]                                    <== NOT EXECUTED
                                                                      
    *last_cl = save_cln;                                              
   18300:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          <== NOT EXECUTED
            cl4find = 2;                                              
    }                                                                 
                                                                      
        fs_info->vol.next_cl = save_cln;                              
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
            fs_info->vol.free_cls -= (*cls_added);                    
   18304:	10623003 	rsbne	r3, r2, r3                                  <== NOT EXECUTED
   18308:	15863044 	strne	r3, [r6, #68]	; 0x44                        <== NOT EXECUTED
                                                                      
    *last_cl = save_cln;                                              
    fat_buf_release(fs_info);                                         
   1830c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
                                                                      
        fs_info->vol.next_cl = save_cln;                              
        if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE)             
            fs_info->vol.free_cls -= (*cls_added);                    
                                                                      
    *last_cl = save_cln;                                              
   18310:	e58c9000 	str	r9, [ip]                                      <== NOT EXECUTED
    fat_buf_release(fs_info);                                         
   18314:	ebffe6cc 	bl	11e4c <fat_buf_release>                        <== NOT EXECUTED
    return RC_OK;                                                     
   18318:	e3a0a000 	mov	sl, #0                                        <== NOT EXECUTED
   1831c:	eaffffe5 	b	182b8 <fat_scan_fat_for_free_clusters+0x144>    <== NOT EXECUTED
    while (i < data_cls_val)                                          
    {                                                                 
        rc = fat_get_fat_cluster(fs_info, cl4find, &next_cln);        
        if ( rc != RC_OK )                                            
        {                                                             
            if (*cls_added != 0)                                      
   18320:	e5973000 	ldr	r3, [r7]                                      <== NOT EXECUTED
   18324:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   18328:	0affffe2 	beq	182b8 <fat_scan_fat_for_free_clusters+0x144>  <== NOT EXECUTED
                fat_free_fat_clusters_chain(fs_info, (*chain));       
   1832c:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   18330:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   18334:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
   18338:	ebffff59 	bl	180a4 <fat_free_fat_clusters_chain>            <== NOT EXECUTED
   1833c:	eaffffdd 	b	182b8 <fat_scan_fat_for_free_clusters+0x144>    <== NOT EXECUTED
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
            {                                                         
                    fs_info->vol.next_cl = save_cln;                  
                    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE) 
   18340:	e5963044 	ldr	r3, [r6, #68]	; 0x44                          
            (*cls_added)++;                                           
                                                                      
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
            {                                                         
                    fs_info->vol.next_cl = save_cln;                  
   18344:	e586404c 	str	r4, [r6, #76]	; 0x4c                          
                    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE) 
   18348:	e3730001 	cmn	r3, #1                                        
                        fs_info->vol.free_cls -= (*cls_added);        
   1834c:	15972000 	ldrne	r2, [r7]                                    
                *last_cl = save_cln;                                  
   18350:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
            /* have we satisfied request ? */                         
            if (*cls_added == count)                                  
            {                                                         
                    fs_info->vol.next_cl = save_cln;                  
                    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE) 
                        fs_info->vol.free_cls -= (*cls_added);        
   18354:	10623003 	rsbne	r3, r2, r3                                  
   18358:	15863044 	strne	r3, [r6, #68]	; 0x44                        
                *last_cl = save_cln;                                  
                fat_buf_release(fs_info);                             
   1835c:	e1a00006 	mov	r0, r6                                        
            if (*cls_added == count)                                  
            {                                                         
                    fs_info->vol.next_cl = save_cln;                  
                    if (fs_info->vol.free_cls != FAT_UNDEFINED_VALUE) 
                        fs_info->vol.free_cls -= (*cls_added);        
                *last_cl = save_cln;                                  
   18360:	e58c4000 	str	r4, [ip]                                      
                fat_buf_release(fs_info);                             
   18364:	ebffe6b8 	bl	11e4c <fat_buf_release>                        
                return rc;                                            
   18368:	eaffffd2 	b	182b8 <fat_scan_fat_for_free_clusters+0x144>    
             * wouldn't work properly                                 
             */                                                       
            if (*cls_added == 0)                                      
            {                                                         
                *chain = cl4find;                                     
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
   1836c:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
   18370:	eaffffd0 	b	182b8 <fat_scan_fat_for_free_clusters+0x144>    <== NOT EXECUTED
                /* set EOC value to new allocated cluster */          
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
                if ( rc != RC_OK )                                    
                {                                                     
                    /* cleanup activity */                            
                    fat_free_fat_clusters_chain(fs_info, (*chain));   
   18374:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   18378:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1837c:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
   18380:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   18384:	e58d3004 	str	r3, [sp, #4]                                  <== NOT EXECUTED
   18388:	ebffff45 	bl	180a4 <fat_free_fat_clusters_chain>            <== NOT EXECUTED
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                /* set EOC value to new allocated cluster */          
                rc = fat_set_fat_cluster(fs_info, cl4find, FAT_GENFAT_EOC);
   1838c:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
   18390:	e1a0a003 	mov	sl, r3                                        <== NOT EXECUTED
                if ( rc != RC_OK )                                    
                {                                                     
                    /* cleanup activity */                            
                    fat_free_fat_clusters_chain(fs_info, (*chain));   
                    return rc;                                        
   18394:	eaffffc7 	b	182b8 <fat_scan_fat_for_free_clusters+0x144>    <== NOT EXECUTED
                                                                      

00012130 <fat_sector_write>: fat_fs_info_t *fs_info, uint32_t start, uint32_t offset, uint32_t count, const void *buff) {
   12130:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    uint32_t            sec_num = start;                              
    uint32_t            ofs = offset;                                 
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
   12134:	e2536000 	subs	r6, r3, #0                                   
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              start,                      
    uint32_t                              offset,                     
    uint32_t                              count,                      
    const void                           *buff)                       
{                                                                     
   12138:	e24dd004 	sub	sp, sp, #4                                    
   1213c:	e1a05000 	mov	r5, r0                                        
    int                 rc = RC_OK;                                   
    ssize_t             cmpltd = 0;                                   
   12140:	01a07006 	moveq	r7, r6                                      
    uint32_t            sec_num = start;                              
    uint32_t            ofs = offset;                                 
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
   12144:	0a000023 	beq	121d8 <fat_sector_write+0xa8>                 
   12148:	e1a09002 	mov	r9, r2                                        
   1214c:	e1a08001 	mov	r8, r1                                        
   12150:	e3a07000 	mov	r7, #0                                        
        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);
   12154:	e3a0b001 	mov	fp, #1                                        
   12158:	ea000008 	b	12180 <fat_sector_write+0x50>                   
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
   1215c:	e59d0000 	ldr	r0, [sp]                                      
   12160:	e0800009 	add	r0, r0, r9                                    
   12164:	eb002079 	bl	1a350 <memcpy>                                 
    uint32_t            sec_num = start;                              
    uint32_t            ofs = offset;                                 
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
   12168:	e0566004 	subs	r6, r6, r4                                   
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
   1216c:	e5c5b088 	strb	fp, [r5, #136]	; 0x88                        
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
                                                                      
        fat_buf_mark_modified(fs_info);                               
                                                                      
        count -= c;                                                   
        cmpltd +=c;                                                   
   12170:	e0847007 	add	r7, r4, r7                                    
        sec_num++;                                                    
   12174:	e2888001 	add	r8, r8, #1                                    
    uint32_t            sec_num = start;                              
    uint32_t            ofs = offset;                                 
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
   12178:	0a000016 	beq	121d8 <fat_sector_write+0xa8>                 
        fat_buf_mark_modified(fs_info);                               
                                                                      
        count -= c;                                                   
        cmpltd +=c;                                                   
        sec_num++;                                                    
        ofs = 0;                                                      
   1217c:	e1a0900a 	mov	r9, sl                                        <== NOT EXECUTED
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
    {                                                                 
        c = MIN(count, (fs_info->vol.bps - ofs));                     
   12180:	e1d540b0 	ldrh	r4, [r5]                                     
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
   12184:	e1d530ba 	ldrh	r3, [r5, #10]                                
    uint8_t            *sec_buf;                                      
    uint32_t            c = 0;                                        
                                                                      
    while(count > 0)                                                  
    {                                                                 
        c = MIN(count, (fs_info->vol.bps - ofs));                     
   12188:	e0694004 	rsb	r4, r9, r4                                    
   1218c:	e1540006 	cmp	r4, r6                                        
   12190:	21a04006 	movcs	r4, r6                                      
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
   12194:	e1530004 	cmp	r3, r4                                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
   12198:	01a01008 	moveq	r1, r8                                      
   1219c:	03a02002 	moveq	r2, #2                                      
   121a0:	01a0300d 	moveq	r3, sp                                      
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
   121a4:	11a01008 	movne	r1, r8                                      
   121a8:	13a02001 	movne	r2, #1                                      
   121ac:	11a0300d 	movne	r3, sp                                      
    while(count > 0)                                                  
    {                                                                 
        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);
   121b0:	01a00005 	moveq	r0, r5                                      
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
   121b4:	11a00005 	movne	r0, r5                                      
   121b8:	ebffff8c 	bl	11ff0 <fat_buf_access>                         
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
   121bc:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
   121c0:	e3500000 	cmp	r0, #0                                        
        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);
   121c4:	e1a0a000 	mov	sl, r0                                        
        if (rc != RC_OK)                                              
            return -1;                                                
                                                                      
        memcpy((sec_buf + ofs), (buff + cmpltd), c);                  
   121c8:	e0831007 	add	r1, r3, r7                                    
   121cc:	e1a02004 	mov	r2, r4                                        
                                                                      
        if (c == fs_info->vol.bytes_per_block)                        
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_GET, &sec_buf);
        else                                                          
            rc = fat_buf_access(fs_info, sec_num, FAT_OP_TYPE_READ, &sec_buf);
        if (rc != RC_OK)                                              
   121d0:	0affffe1 	beq	1215c <fat_sector_write+0x2c>                 
            return -1;                                                
   121d4:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
        cmpltd +=c;                                                   
        sec_num++;                                                    
        ofs = 0;                                                      
    }                                                                 
    return cmpltd;                                                    
}                                                                     
   121d8:	e1a00007 	mov	r0, r7                                        
   121dc:	e28dd004 	add	sp, sp, #4                                    
   121e0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      

00017e84 <fat_set_fat_cluster>: fat_set_fat_cluster( fat_fs_info_t *fs_info, uint32_t cln, uint32_t in_val ) {
   17e84:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
    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;                               
   17e88:	e3a03000 	mov	r3, #0                                        
fat_set_fat_cluster(                                                  
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              cln,                        
    uint32_t                              in_val                      
    )                                                                 
{                                                                     
   17e8c:	e24dd004 	sub	sp, sp, #4                                    
    uint16_t            fat16_clv = 0;                                
    uint32_t            fat32_clv = 0;                                
    uint8_t            *sec_buf = NULL;                               
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
   17e90:	e3510001 	cmp	r1, #1                                        
fat_set_fat_cluster(                                                  
    fat_fs_info_t                        *fs_info,                    
    uint32_t                              cln,                        
    uint32_t                              in_val                      
    )                                                                 
{                                                                     
   17e94:	e1a05001 	mov	r5, r1                                        
   17e98:	e1a04000 	mov	r4, r0                                        
   17e9c:	e1a09002 	mov	r9, r2                                        
    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;                               
   17ea0:	e58d3000 	str	r3, [sp]                                      
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
   17ea4:	9a00001d 	bls	17f20 <fat_set_fat_cluster+0x9c>              
   17ea8:	e5903038 	ldr	r3, [r0, #56]	; 0x38                          
   17eac:	e2833001 	add	r3, r3, #1                                    
   17eb0:	e1510003 	cmp	r1, r3                                        
   17eb4:	8a000019 	bhi	17f20 <fat_set_fat_cluster+0x9c>              
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
   17eb8:	e5d0300e 	ldrb	r3, [r0, #14]                                
   17ebc:	e3130001 	tst	r3, #1                                        
   17ec0:	e5d0a002 	ldrb	sl, [r0, #2]                                 
   17ec4:	1a00001b 	bne	17f38 <fat_set_fat_cluster+0xb4>              
   17ec8:	e3130002 	tst	r3, #2                                        
   17ecc:	e5903058 	ldr	r3, [r0, #88]	; 0x58                          
   17ed0:	11a06081 	lslne	r6, r1, #1                                  
   17ed4:	01a06101 	lsleq	r6, r1, #2                                  
   17ed8:	e083aa36 	add	sl, r3, r6, lsr sl                            
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
   17edc:	e1a00004 	mov	r0, r4                                        
   17ee0:	e1a0100a 	mov	r1, sl                                        
   17ee4:	e3a02001 	mov	r2, #1                                        
   17ee8:	e1a0300d 	mov	r3, sp                                        
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
   17eec:	e1d470b0 	ldrh	r7, [r4]                                     
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
   17ef0:	ebffe83e 	bl	11ff0 <fat_buf_access>                         
    if (rc != RC_OK)                                                  
   17ef4:	e3500000 	cmp	r0, #0                                        
   17ef8:	1a00000c 	bne	17f30 <fat_set_fat_cluster+0xac>              
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
   17efc:	e5d4800e 	ldrb	r8, [r4, #14]                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
   17f00:	e2477001 	sub	r7, r7, #1                                    
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
   17f04:	e3580002 	cmp	r8, #2                                        
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
          fs_info->vol.afat_loc;                                      
    ofs = FAT_FAT_OFFSET(fs_info->vol.type, cln) & (fs_info->vol.bps - 1);
   17f08:	e0066007 	and	r6, r6, r7                                    
                                                                      
    rc = fat_buf_access(fs_info, sec, FAT_OP_TYPE_READ, &sec_buf);    
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
   17f0c:	0a00000d 	beq	17f48 <fat_set_fat_cluster+0xc4>              
   17f10:	e3580004 	cmp	r8, #4                                        
   17f14:	0a000028 	beq	17fbc <fat_set_fat_cluster+0x138>             
   17f18:	e3580001 	cmp	r8, #1                                        
   17f1c:	0a00000e 	beq	17f5c <fat_set_fat_cluster+0xd8>              
                                                                      
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
                                                                      
        default:                                                      
            rtems_set_errno_and_return_minus_one(EIO);                
   17f20:	eb000663 	bl	198b4 <__errno>                                <== NOT EXECUTED
   17f24:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   17f28:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   17f2c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
            break;                                                    
                                                                      
    }                                                                 
                                                                      
    return RC_OK;                                                     
}                                                                     
   17f30:	e28dd004 	add	sp, sp, #4                                    
   17f34:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
                                                                      
    /* sanity check */                                                
    if ( (cln < 2) || (cln > (fs_info->vol.data_cls + 1)) )           
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    sec = (FAT_FAT_OFFSET(fs_info->vol.type, cln) >> fs_info->vol.sec_log2) +
   17f38:	e5903058 	ldr	r3, [r0, #88]	; 0x58                          
   17f3c:	e08160a1 	add	r6, r1, r1, lsr #1                            
   17f40:	e083aa36 	add	sl, r3, r6, lsr sl                            
   17f44:	eaffffe4 	b	17edc <fat_set_fat_cluster+0x58>                
                }                                                     
            }                                                         
            break;                                                    
                                                                      
        case FAT_FAT16:                                               
            *((uint16_t   *)(sec_buf + ofs)) =                        
   17f48:	e59d3000 	ldr	r3, [sp]                                      
                    (uint16_t  )(CT_LE_W(in_val));                    
   17f4c:	e18390b6 	strh	r9, [r3, r6]                                 
}                                                                     
                                                                      
static inline void                                                    
fat_buf_mark_modified(fat_fs_info_t *fs_info)                         
{                                                                     
    fs_info->c.modified = true;                                       
   17f50:	e3a03001 	mov	r3, #1                                        
   17f54:	e5c43088 	strb	r3, [r4, #136]	; 0x88                        
   17f58:	eafffff4 	b	17f30 <fat_set_fat_cluster+0xac>                
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
   17f5c:	e3150001 	tst	r5, #1                                        
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
                *(sec_buf + ofs) &= 0x0F;                             
   17f60:	e59d3000 	ldr	r3, [sp]                                      
        return rc;                                                    
                                                                      
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
   17f64:	0a00001d 	beq	17fe0 <fat_set_fat_cluster+0x15c>             
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
                *(sec_buf + ofs) &= 0x0F;                             
   17f68:	e7d32006 	ldrb	r2, [r3, r6]                                 
   17f6c:	e202200f 	and	r2, r2, #15                                   
   17f70:	e7c32006 	strb	r2, [r3, r6]                                 
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00F0);    
   17f74:	e59d3000 	ldr	r3, [sp]                                      
   17f78:	e7d32006 	ldrb	r2, [r3, r6]                                 
    switch ( fs_info->vol.type )                                      
    {                                                                 
        case FAT_FAT12:                                               
            if ( FAT_CLUSTER_IS_ODD(cln) )                            
            {                                                         
                fat16_clv = ((uint16_t  )in_val) << FAT_FAT12_SHIFT;  
   17f7c:	e1a09a09 	lsl	r9, r9, #20                                   
                *(sec_buf + ofs) &= 0x0F;                             
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00F0);    
   17f80:	e1822829 	orr	r2, r2, r9, lsr #16                           
   17f84:	e7c32006 	strb	r2, [r3, r6]                                 
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
   17f88:	e1d430b0 	ldrh	r3, [r4]                                     
   17f8c:	e2433001 	sub	r3, r3, #1                                    
   17f90:	e1530006 	cmp	r3, r6                                        
   17f94:	e5c48088 	strb	r8, [r4, #136]	; 0x88                        
   17f98:	0a000026 	beq	18038 <fat_set_fat_cluster+0x1b4>             
                                                                      
                     fat_buf_mark_modified(fs_info);                  
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0x00;                     
   17f9c:	e59d3000 	ldr	r3, [sp]                                      
   17fa0:	e2866001 	add	r6, r6, #1                                    
   17fa4:	e7c30006 	strb	r0, [r3, r6]                                 
                                                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
   17fa8:	e59d3000 	ldr	r3, [sp]                                      
   17fac:	e7d32006 	ldrb	r2, [r3, r6]                                 
   17fb0:	e1829c29 	orr	r9, r2, r9, lsr #24                           
   17fb4:	e7c39006 	strb	r9, [r3, r6]                                 
   17fb8:	eaffffdc 	b	17f30 <fat_set_fat_cluster+0xac>                
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));           
                                                                      
            *((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);    
   17fbc:	e59d3000 	ldr	r3, [sp]                                      
   17fc0:	e7932006 	ldr	r2, [r3, r6]                                  
                    (uint16_t  )(CT_LE_W(in_val));                    
            fat_buf_mark_modified(fs_info);                           
            break;                                                    
                                                                      
        case FAT_FAT32:                                               
            fat32_clv = CT_LE_L((in_val & FAT_FAT32_MASK));           
   17fc4:	e3c9920f 	bic	r9, r9, #-268435456	; 0xf0000000              
                                                                      
            *((uint32_t *)(sec_buf + ofs)) &= CT_LE_L(0xF0000000);    
   17fc8:	e202220f 	and	r2, r2, #-268435456	; 0xf0000000              
                                                                      
            *((uint32_t *)(sec_buf + ofs)) |= fat32_clv;              
   17fcc:	e1829009 	orr	r9, r2, r9                                    
   17fd0:	e7839006 	str	r9, [r3, r6]                                  
   17fd4:	e3a03001 	mov	r3, #1                                        
   17fd8:	e5c43088 	strb	r3, [r4, #136]	; 0x88                        
   17fdc:	eaffffd3 	b	17f30 <fat_set_fat_cluster+0xac>                
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                fat16_clv = ((uint16_t  )in_val) & FAT_FAT12_MASK;    
                *(sec_buf + ofs) &= 0x00;                             
   17fe0:	e7c30006 	strb	r0, [r3, r6]                                 
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00FF);    
   17fe4:	e59d3000 	ldr	r3, [sp]                                      
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                fat16_clv = ((uint16_t  )in_val) & FAT_FAT12_MASK;    
   17fe8:	e1a09a09 	lsl	r9, r9, #20                                   
                *(sec_buf + ofs) &= 0x00;                             
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00FF);    
   17fec:	e7d32006 	ldrb	r2, [r3, r6]                                 
                    *(sec_buf + ofs + 1) |= (uint8_t  )((fat16_clv & 0xFF00)>>8);
                }                                                     
            }                                                         
            else                                                      
            {                                                         
                fat16_clv = ((uint16_t  )in_val) & FAT_FAT12_MASK;    
   17ff0:	e1a09229 	lsr	r9, r9, #4                                    
                *(sec_buf + ofs) &= 0x00;                             
                                                                      
                *(sec_buf + ofs) |= (uint8_t)(fat16_clv & 0x00FF);    
   17ff4:	e1822829 	orr	r2, r2, r9, lsr #16                           
   17ff8:	e7c32006 	strb	r2, [r3, r6]                                 
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
   17ffc:	e1d430b0 	ldrh	r3, [r4]                                     
   18000:	e2433001 	sub	r3, r3, #1                                    
   18004:	e1530006 	cmp	r3, r6                                        
   18008:	e5c48088 	strb	r8, [r4, #136]	; 0x88                        
   1800c:	0a000018 	beq	18074 <fat_set_fat_cluster+0x1f0>             
                                                                      
                    fat_buf_mark_modified(fs_info);                   
                }                                                     
                else                                                  
                {                                                     
                    *(sec_buf + ofs + 1) &= 0xF0;                     
   18010:	e59d3000 	ldr	r3, [sp]                                      
   18014:	e2866001 	add	r6, r6, #1                                    
   18018:	e7d32006 	ldrb	r2, [r3, r6]                                 
   1801c:	e3c2200f 	bic	r2, r2, #15                                   
   18020:	e7c32006 	strb	r2, [r3, r6]                                 
                                                                      
                    *(sec_buf + ofs+1) |= (uint8_t)((fat16_clv & 0xFF00)>>8);
   18024:	e59d3000 	ldr	r3, [sp]                                      
   18028:	e7d32006 	ldrb	r2, [r3, r6]                                 
   1802c:	e1829c29 	orr	r9, r2, r9, lsr #24                           
   18030:	e7c39006 	strb	r9, [r3, r6]                                 
   18034:	eaffffbd 	b	17f30 <fat_set_fat_cluster+0xac>                
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
                {                                                     
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
   18038:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1803c:	e28a1001 	add	r1, sl, #1                                    <== NOT EXECUTED
   18040:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
   18044:	e1a0300d 	mov	r3, sp                                        <== NOT EXECUTED
   18048:	ebffe7e8 	bl	11ff0 <fat_buf_access>                         <== NOT EXECUTED
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
   1804c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   18050:	1affffb6 	bne	17f30 <fat_set_fat_cluster+0xac>              <== NOT EXECUTED
                        return rc;                                    
                                                                      
                     *sec_buf &= 0x00;                                
   18054:	e59d3000 	ldr	r3, [sp]                                      <== NOT EXECUTED
   18058:	e5c30000 	strb	r0, [r3]                                     <== NOT EXECUTED
                    if (rc != RC_OK)                                  
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
                                                                      
                    *sec_buf |= (uint8_t)((fat16_clv & 0xFF00)>>8);   
   1805c:	e59d3000 	ldr	r3, [sp]                                      <== NOT EXECUTED
   18060:	e5d32000 	ldrb	r2, [r3]                                     <== NOT EXECUTED
   18064:	e1829c29 	orr	r9, r2, r9, lsr #24                           <== NOT EXECUTED
   18068:	e5c39000 	strb	r9, [r3]                                     <== NOT EXECUTED
   1806c:	e5c48088 	strb	r8, [r4, #136]	; 0x88                        <== NOT EXECUTED
   18070:	eaffffae 	b	17f30 <fat_set_fat_cluster+0xac>                <== NOT EXECUTED
                                                                      
                fat_buf_mark_modified(fs_info);                       
                                                                      
                if ( ofs == (fs_info->vol.bps - 1) )                  
                {                                                     
                    rc = fat_buf_access(fs_info, sec + 1, FAT_OP_TYPE_READ,
   18074:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   18078:	e28a1001 	add	r1, sl, #1                                    <== NOT EXECUTED
   1807c:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
   18080:	e1a0300d 	mov	r3, sp                                        <== NOT EXECUTED
   18084:	ebffe7d9 	bl	11ff0 <fat_buf_access>                         <== NOT EXECUTED
                                        &sec_buf);                    
                    if (rc != RC_OK)                                  
   18088:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1808c:	1affffa7 	bne	17f30 <fat_set_fat_cluster+0xac>              <== NOT EXECUTED
                        return rc;                                    
                                                                      
                    *sec_buf &= 0xF0;                                 
   18090:	e59d3000 	ldr	r3, [sp]                                      <== NOT EXECUTED
   18094:	e5d32000 	ldrb	r2, [r3]                                     <== NOT EXECUTED
   18098:	e3c2200f 	bic	r2, r2, #15                                   <== NOT EXECUTED
   1809c:	e5c32000 	strb	r2, [r3]                                     <== NOT EXECUTED
   180a0:	eaffffed 	b	1805c <fat_set_fat_cluster+0x1d8>               <== NOT EXECUTED
                                                                      

00012cac <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) {
   12cac:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
   12cb0:	e1a05000 	mov	r5, r0                                        
    int            rc = RC_OK;                                        
    int            i = 0;                                             
                                                                      
    rc = fat_sync(fs_info);                                           
   12cb4:	ebffffcc 	bl	12bec <fat_sync>                               
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
   12cb8:	e2508000 	subs	r8, r0, #0                                   
   12cbc:	13e08000 	mvnne	r8, #0                                      
   12cc0:	e3a07000 	mov	r7, #0                                        
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->vhash + i;          
   12cc4:	e595406c 	ldr	r4, [r5, #108]	; 0x6c                         
   12cc8:	e0844007 	add	r4, r4, r7                                    
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
   12ccc:	ea000000 	b	12cd4 <fat_shutdown_drive+0x28>                 
            free(node);                                               
   12cd0:	ebffc5a1 	bl	435c <free>                                    <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
   12cd4:	e1a00004 	mov	r0, r4                                        
   12cd8:	ebffd987 	bl	92fc <_Chain_Get>                              
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->vhash + i;          
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
   12cdc:	e2506000 	subs	r6, r0, #0                                   
   12ce0:	1afffffa 	bne	12cd0 <fat_shutdown_drive+0x24>               
   12ce4:	e287700c 	add	r7, r7, #12                                   
                                                                      
    rc = fat_sync(fs_info);                                           
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
   12ce8:	e3570018 	cmp	r7, #24                                       
   12cec:	1afffff4 	bne	12cc4 <fat_shutdown_drive+0x18>               
    }                                                                 
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->rhash + i;          
   12cf0:	e5954070 	ldr	r4, [r5, #112]	; 0x70                         
   12cf4:	e0844006 	add	r4, r4, r6                                    
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
   12cf8:	ea000000 	b	12d00 <fat_shutdown_drive+0x54>                 
            free(node);                                               
   12cfc:	ebffc596 	bl	435c <free>                                    <== NOT EXECUTED
   12d00:	e1a00004 	mov	r0, r4                                        
   12d04:	ebffd97c 	bl	92fc <_Chain_Get>                              
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
    {                                                                 
        rtems_chain_node    *node = NULL;                             
        rtems_chain_control *the_chain = fs_info->rhash + i;          
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
   12d08:	e3500000 	cmp	r0, #0                                        
   12d0c:	1afffffa 	bne	12cfc <fat_shutdown_drive+0x50>               
   12d10:	e286600c 	add	r6, r6, #12                                   
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
            free(node);                                               
    }                                                                 
                                                                      
    for (i = 0; i < FAT_HASH_SIZE; i++)                               
   12d14:	e3560018 	cmp	r6, #24                                       
   12d18:	1afffff4 	bne	12cf0 <fat_shutdown_drive+0x44>               
                                                                      
        while ( (node = rtems_chain_get(the_chain)) != NULL )         
            free(node);                                               
    }                                                                 
                                                                      
    free(fs_info->vhash);                                             
   12d1c:	e595006c 	ldr	r0, [r5, #108]	; 0x6c                         
   12d20:	ebffc58d 	bl	435c <free>                                    
    free(fs_info->rhash);                                             
   12d24:	e5950070 	ldr	r0, [r5, #112]	; 0x70                         
   12d28:	ebffc58b 	bl	435c <free>                                    
                                                                      
    free(fs_info->uino);                                              
   12d2c:	e5950074 	ldr	r0, [r5, #116]	; 0x74                         
   12d30:	ebffc589 	bl	435c <free>                                    
    free(fs_info->sec_buf);                                           
   12d34:	e5950090 	ldr	r0, [r5, #144]	; 0x90                         
   12d38:	ebffc587 	bl	435c <free>                                    
    close(fs_info->vol.fd);                                           
   12d3c:	e5950060 	ldr	r0, [r5, #96]	; 0x60                          
   12d40:	ebffc4dc 	bl	40b8 <close>                                   
                                                                      
    if (rc)                                                           
   12d44:	e3580000 	cmp	r8, #0                                        
   12d48:	0a000002 	beq	12d58 <fat_shutdown_drive+0xac>               
        errno = EIO;                                                  
   12d4c:	eb001ad8 	bl	198b4 <__errno>                                <== NOT EXECUTED
   12d50:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   12d54:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    return rc;                                                        
}                                                                     
   12d58:	e1a00008 	mov	r0, r8                                        
   12d5c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
                                                                      

00012bec <fat_sync>: return RC_OK; } int fat_sync(fat_fs_info_t *fs_info) {
   12bec:	e92d4070 	push	{r4, r5, r6, lr}                             
static int                                                            
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)                
{                                                                     
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
   12bf0:	e5d0300e 	ldrb	r3, [r0, #14]                                
   12bf4:	e3530004 	cmp	r3, #4                                        
    return RC_OK;                                                     
}                                                                     
                                                                      
int                                                                   
fat_sync(fat_fs_info_t *fs_info)                                      
{                                                                     
   12bf8:	e24dd008 	sub	sp, sp, #8                                    
   12bfc:	e1a04000 	mov	r4, r0                                        
static int                                                            
fat_fat32_update_fsinfo_sector(fat_fs_info_t *fs_info)                
{                                                                     
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
   12c00:	0a000009 	beq	12c2c <fat_sync+0x40>                         
                                    FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
                                    sizeof(le_free_count),            
                                    &le_free_count);                  
        }                                                             
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
   12c04:	e3a05000 	mov	r5, #0                                        
                                                                      
    rc = fat_fat32_update_fsinfo_sector(fs_info);                     
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
                                                                      
    fat_buf_release(fs_info);                                         
   12c08:	e1a00004 	mov	r0, r4                                        
   12c0c:	ebfffc8e 	bl	11e4c <fat_buf_release>                        
                                                                      
    if (rtems_bdbuf_syncdev(fs_info->vol.dd) != RTEMS_SUCCESSFUL)     
   12c10:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
   12c14:	ebfff5c2 	bl	10324 <rtems_bdbuf_syncdev>                    
   12c18:	e3500000 	cmp	r0, #0                                        
        rc = -1;                                                      
                                                                      
    return rc;                                                        
}                                                                     
   12c1c:	01a00005 	moveq	r0, r5                                      
   12c20:	13e00000 	mvnne	r0, #0                                      
   12c24:	e28dd008 	add	sp, sp, #8                                    
   12c28:	e8bd8070 	pop	{r4, r5, r6, pc}                              
{                                                                     
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
    {                                                                 
        uint32_t free_count = fs_info->vol.free_cls;                  
   12c2c:	e5902044 	ldr	r2, [r0, #68]	; 0x44                          
        uint32_t next_free = fs_info->vol.next_cl;                    
                                                                      
        if (free_count != fs_info->vol.free_cls_in_fs_info)           
   12c30:	e5901048 	ldr	r1, [r0, #72]	; 0x48                          
   12c34:	e1520001 	cmp	r2, r1                                        
    ssize_t ret1 = 0, ret2 = 0;                                       
                                                                      
    if (fs_info->vol.type == FAT_FAT32)                               
    {                                                                 
        uint32_t free_count = fs_info->vol.free_cls;                  
        uint32_t next_free = fs_info->vol.next_cl;                    
   12c38:	e590504c 	ldr	r5, [r0, #76]	; 0x4c                          
                                                                      
        if (free_count != fs_info->vol.free_cls_in_fs_info)           
   12c3c:	03a06000 	moveq	r6, #0                                      
   12c40:	0a000007 	beq	12c64 <fat_sync+0x78>                         
        {                                                             
            uint32_t le_free_count = CT_LE_L(free_count);             
   12c44:	e28dc008 	add	ip, sp, #8                                    <== NOT EXECUTED
   12c48:	e52c2004 	str	r2, [ip, #-4]!                                <== NOT EXECUTED
                                                                      
            fs_info->vol.free_cls_in_fs_info = free_count;            
   12c4c:	e5802048 	str	r2, [r0, #72]	; 0x48                          <== NOT EXECUTED
                                                                      
            ret1 = fat_sector_write(fs_info,                          
   12c50:	e1d014b0 	ldrh	r1, [r0, #64]	; 0x40                         <== NOT EXECUTED
   12c54:	e3a02f7a 	mov	r2, #488	; 0x1e8                              <== NOT EXECUTED
   12c58:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   12c5c:	ebfffd33 	bl	12130 <fat_sector_write>                       <== NOT EXECUTED
   12c60:	e1a06fa0 	lsr	r6, r0, #31                                   <== NOT EXECUTED
                                    FAT_FSINFO_FREE_CLUSTER_COUNT_OFFSET,
                                    sizeof(le_free_count),            
                                    &le_free_count);                  
        }                                                             
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
   12c64:	e5943050 	ldr	r3, [r4, #80]	; 0x50                          
   12c68:	e1550003 	cmp	r5, r3                                        
   12c6c:	03a00000 	moveq	r0, #0                                      
   12c70:	0a000009 	beq	12c9c <fat_sync+0xb0>                         
        {                                                             
            uint32_t le_next_free = CT_LE_L(next_free);               
   12c74:	e28dc008 	add	ip, sp, #8                                    
   12c78:	e52c5004 	str	r5, [ip, #-4]!                                
                                                                      
            fs_info->vol.next_cl_in_fs_info = next_free;              
                                                                      
            ret2 = fat_sector_write(fs_info,                          
   12c7c:	e1d414b0 	ldrh	r1, [r4, #64]	; 0x40                         
                                                                      
        if (next_free != fs_info->vol.next_cl_in_fs_info)             
        {                                                             
            uint32_t le_next_free = CT_LE_L(next_free);               
                                                                      
            fs_info->vol.next_cl_in_fs_info = next_free;              
   12c80:	e5845050 	str	r5, [r4, #80]	; 0x50                          
                                                                      
            ret2 = fat_sector_write(fs_info,                          
   12c84:	e1a00004 	mov	r0, r4                                        
   12c88:	e3a02f7b 	mov	r2, #492	; 0x1ec                              
   12c8c:	e3a03004 	mov	r3, #4                                        
   12c90:	e58dc000 	str	ip, [sp]                                      
   12c94:	ebfffd25 	bl	12130 <fat_sector_write>                       
   12c98:	e1a00fa0 	lsr	r0, r0, #31                                   
                                    sizeof(le_next_free),             
                                    &le_next_free);                   
        }                                                             
    }                                                                 
                                                                      
    if ( (ret1 < 0) || (ret2 < 0) )                                   
   12c9c:	e1900006 	orrs	r0, r0, r6                                   
   12ca0:	0affffd7 	beq	12c04 <fat_sync+0x18>                         
{                                                                     
    int rc = RC_OK;                                                   
                                                                      
    rc = fat_fat32_update_fsinfo_sector(fs_info);                     
    if ( rc != RC_OK )                                                
        rc = -1;                                                      
   12ca4:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   12ca8:	eaffffd6 	b	12c08 <fat_sync+0x1c>                           <== NOT EXECUTED
                                                                      

00023178 <fchmod>: int fchmod( int fd, mode_t mode ) { int rv; rtems_libio_t *iop; rtems_libio_check_fd( fd );
   23178:	e59f30ac 	ldr	r3, [pc, #172]	; 2322c <fchmod+0xb4>          
   2317c:	e5933000 	ldr	r3, [r3]                                      
   23180:	e1500003 	cmp	r0, r3                                        
                                                                      
/**                                                                   
 *  POSIX 1003.1b 5.6.4 - Change File Modes                           
 */                                                                   
int fchmod( int fd, mode_t mode )                                     
{                                                                     
   23184:	e92d4030 	push	{r4, r5, lr}                                 
   23188:	e1a05001 	mov	r5, r1                                        
  int rv;                                                             
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
   2318c:	2a000021 	bcs	23218 <fchmod+0xa0>                           
  iop = rtems_libio_iop( fd );                                        
   23190:	e59f3098 	ldr	r3, [pc, #152]	; 23230 <fchmod+0xb8>          
   23194:	e5933000 	ldr	r3, [r3]                                      
   23198:	e0800080 	add	r0, r0, r0, lsl #1                            
   2319c:	e0834200 	add	r4, r3, r0, lsl #4                            
  rtems_libio_check_is_open(iop);                                     
   231a0:	e594300c 	ldr	r3, [r4, #12]                                 
   231a4:	e3130c01 	tst	r3, #256	; 0x100                              
   231a8:	0a00001a 	beq	23218 <fchmod+0xa0>                           
                                                                      
  if (iop->pathinfo.mt_entry->writeable) {                            
   231ac:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   231b0:	e5d32029 	ldrb	r2, [r3, #41]	; 0x29                         
   231b4:	e3520000 	cmp	r2, #0                                        
   231b8:	1a000005 	bne	231d4 <fchmod+0x5c>                           
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
    rtems_filesystem_instance_unlock( &iop->pathinfo );               
  } else {                                                            
    errno = EROFS;                                                    
   231bc:	eb004aae 	bl	35c7c <__errno>                                <== NOT EXECUTED
   231c0:	e3a0301e 	mov	r3, #30                                       <== NOT EXECUTED
   231c4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    rv = -1;                                                          
   231c8:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
   231cc:	e1a00005 	mov	r0, r5                                        
   231d0:	e8bd8030 	pop	{r4, r5, pc}                                  
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
   231d4:	e1a00003 	mov	r0, r3                                        
   231d8:	e593300c 	ldr	r3, [r3, #12]                                 
   231dc:	e1a0e00f 	mov	lr, pc                                        
   231e0:	e593f000 	ldr	pc, [r3]                                      
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
                                                                      
  if (iop->pathinfo.mt_entry->writeable) {                            
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->fchmod_h)( &iop->pathinfo, mode );
   231e4:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   231e8:	e1a01005 	mov	r1, r5                                        
   231ec:	e2840010 	add	r0, r4, #16                                   
   231f0:	e593300c 	ldr	r3, [r3, #12]                                 
   231f4:	e1a0e00f 	mov	lr, pc                                        
   231f8:	e593f020 	ldr	pc, [r3, #32]                                 
   231fc:	e1a05000 	mov	r5, r0                                        
                                                                      
static inline void rtems_filesystem_instance_unlock(                  
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
   23200:	e5940024 	ldr	r0, [r4, #36]	; 0x24                          
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
   23204:	e590300c 	ldr	r3, [r0, #12]                                 
   23208:	e1a0e00f 	mov	lr, pc                                        
   2320c:	e593f004 	ldr	pc, [r3, #4]                                  
    errno = EROFS;                                                    
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
   23210:	e1a00005 	mov	r0, r5                                        
   23214:	e8bd8030 	pop	{r4, r5, pc}                                  
  int rv;                                                             
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
   23218:	eb004a97 	bl	35c7c <__errno>                                
   2321c:	e3a03009 	mov	r3, #9                                        
   23220:	e5803000 	str	r3, [r0]                                      
   23224:	e3e05000 	mvn	r5, #0                                        
   23228:	eaffffe7 	b	231cc <fchmod+0x54>                             
                                                                      

00023234 <fchown>: int fchown( int fd, uid_t owner, gid_t group ) { int rv = 0; rtems_libio_t *iop; rtems_libio_check_fd( fd );
   23234:	e59f30bc 	ldr	r3, [pc, #188]	; 232f8 <fchown+0xc4>          
   23238:	e5933000 	ldr	r3, [r3]                                      
                                                                      
/**                                                                   
 *  POSIX 1003.1b 5.6.5 - Change Owner and Group of a File            
 */                                                                   
int fchown( int fd, uid_t owner, gid_t group )                        
{                                                                     
   2323c:	e1a01801 	lsl	r1, r1, #16                                   
   23240:	e1a02802 	lsl	r2, r2, #16                                   
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
   23244:	e1500003 	cmp	r0, r3                                        
                                                                      
/**                                                                   
 *  POSIX 1003.1b 5.6.5 - Change Owner and Group of a File            
 */                                                                   
int fchown( int fd, uid_t owner, gid_t group )                        
{                                                                     
   23248:	e92d4070 	push	{r4, r5, r6, lr}                             
   2324c:	e1a06821 	lsr	r6, r1, #16                                   
   23250:	e1a05822 	lsr	r5, r2, #16                                   
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
   23254:	2a000022 	bcs	232e4 <fchown+0xb0>                           
  iop = rtems_libio_iop( fd );                                        
   23258:	e59f309c 	ldr	r3, [pc, #156]	; 232fc <fchown+0xc8>          
   2325c:	e5933000 	ldr	r3, [r3]                                      
   23260:	e0800080 	add	r0, r0, r0, lsl #1                            
   23264:	e0834200 	add	r4, r3, r0, lsl #4                            
  rtems_libio_check_is_open(iop);                                     
   23268:	e594300c 	ldr	r3, [r4, #12]                                 
   2326c:	e3130c01 	tst	r3, #256	; 0x100                              
   23270:	0a00001b 	beq	232e4 <fchown+0xb0>                           
                                                                      
  if (iop->pathinfo.mt_entry->writeable) {                            
   23274:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   23278:	e5d32029 	ldrb	r2, [r3, #41]	; 0x29                         
   2327c:	e3520000 	cmp	r2, #0                                        
   23280:	1a000005 	bne	2329c <fchown+0x68>                           
      owner,                                                          
      group                                                           
    );                                                                
    rtems_filesystem_instance_unlock( &iop->pathinfo );               
  } else {                                                            
    errno = EROFS;                                                    
   23284:	eb004a7c 	bl	35c7c <__errno>                                <== NOT EXECUTED
   23288:	e3a0301e 	mov	r3, #30                                       <== NOT EXECUTED
   2328c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    rv = -1;                                                          
   23290:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
   23294:	e1a00005 	mov	r0, r5                                        
   23298:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
   2329c:	e1a00003 	mov	r0, r3                                        
   232a0:	e593300c 	ldr	r3, [r3, #12]                                 
   232a4:	e1a0e00f 	mov	lr, pc                                        
   232a8:	e593f000 	ldr	pc, [r3]                                      
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
                                                                      
  if (iop->pathinfo.mt_entry->writeable) {                            
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rv = (*iop->pathinfo.mt_entry->ops->chown_h)(                     
   232ac:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   232b0:	e1a02005 	mov	r2, r5                                        
   232b4:	e1a01006 	mov	r1, r6                                        
   232b8:	e2840010 	add	r0, r4, #16                                   
   232bc:	e593300c 	ldr	r3, [r3, #12]                                 
   232c0:	e1a0e00f 	mov	lr, pc                                        
   232c4:	e593f024 	ldr	pc, [r3, #36]	; 0x24                          
   232c8:	e1a05000 	mov	r5, r0                                        
                                                                      
static inline void rtems_filesystem_instance_unlock(                  
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
   232cc:	e5940024 	ldr	r0, [r4, #36]	; 0x24                          
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
   232d0:	e590300c 	ldr	r3, [r0, #12]                                 
   232d4:	e1a0e00f 	mov	lr, pc                                        
   232d8:	e593f004 	ldr	pc, [r3, #4]                                  
    errno = EROFS;                                                    
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
   232dc:	e1a00005 	mov	r0, r5                                        
   232e0:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  int rv = 0;                                                         
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
   232e4:	eb004a64 	bl	35c7c <__errno>                                
   232e8:	e3a03009 	mov	r3, #9                                        
   232ec:	e5803000 	str	r3, [r0]                                      
   232f0:	e3e05000 	mvn	r5, #0                                        
   232f4:	eaffffe6 	b	23294 <fchown+0x60>                             
                                                                      

0002f17c <fcntl>: int fcntl( int fd, int cmd, ... ) {
   2f17c:	e92d000e 	push	{r1, r2, r3}                                 
   2f180:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
   2f184:	e59f31f8 	ldr	r3, [pc, #504]	; 2f384 <fcntl+0x208>          
   2f188:	e5933000 	ldr	r3, [r3]                                      
int fcntl(                                                            
  int fd,                                                             
  int cmd,                                                            
  ...                                                                 
)                                                                     
{                                                                     
   2f18c:	e24dd004 	sub	sp, sp, #4                                    
  int            ret;                                                 
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
   2f190:	e28d2024 	add	r2, sp, #36	; 0x24                            
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
   2f194:	e1500003 	cmp	r0, r3                                        
int fcntl(                                                            
  int fd,                                                             
  int cmd,                                                            
  ...                                                                 
)                                                                     
{                                                                     
   2f198:	e59d4020 	ldr	r4, [sp, #32]                                 
  int            ret;                                                 
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
   2f19c:	e58d2000 	str	r2, [sp]                                      
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
   2f1a0:	2a00006f 	bcs	2f364 <fcntl+0x1e8>                           
  iop = rtems_libio_iop( fd );                                        
   2f1a4:	e59f61dc 	ldr	r6, [pc, #476]	; 2f388 <fcntl+0x20c>          
   2f1a8:	e5963000 	ldr	r3, [r6]                                      
   2f1ac:	e0800080 	add	r0, r0, r0, lsl #1                            
   2f1b0:	e0835200 	add	r5, r3, r0, lsl #4                            
  rtems_libio_check_is_open(iop);                                     
   2f1b4:	e595000c 	ldr	r0, [r5, #12]                                 
   2f1b8:	e3100c01 	tst	r0, #256	; 0x100                              
   2f1bc:	0a000068 	beq	2f364 <fcntl+0x1e8>                           
                                                                      
  /*                                                                  
   *  This switch should contain all the cases from POSIX.            
   */                                                                 
                                                                      
  switch ( cmd ) {                                                    
   2f1c0:	e3540009 	cmp	r4, #9                                        
   2f1c4:	979ff104 	ldrls	pc, [pc, r4, lsl #2]                        
   2f1c8:	ea000026 	b	2f268 <fcntl+0xec>                              
   2f1cc:	0002f278 	.word	0x0002f278                                  
   2f1d0:	0002f328 	.word	0x0002f328                                  <== NOT EXECUTED
   2f1d4:	0002f338 	.word	0x0002f338                                  <== NOT EXECUTED
   2f1d8:	0002f358 	.word	0x0002f358                                  <== NOT EXECUTED
   2f1dc:	0002f218 	.word	0x0002f218                                  <== NOT EXECUTED
   2f1e0:	0002f1f4 	.word	0x0002f1f4                                  <== NOT EXECUTED
   2f1e4:	0002f1f4 	.word	0x0002f1f4                                  <== NOT EXECUTED
   2f1e8:	0002f1f4 	.word	0x0002f1f4                                  <== NOT EXECUTED
   2f1ec:	0002f1f4 	.word	0x0002f1f4                                  <== NOT EXECUTED
   2f1f0:	0002f1f4 	.word	0x0002f1f4                                  <== NOT EXECUTED
      errno = ENOTSUP;                                                
      ret = -1;                                                       
      break;                                                          
                                                                      
    case F_GETOWN:       /*  for sockets. */                          
      errno = ENOTSUP;                                                
   2f1f4:	ebffc0e6 	bl	1f594 <__errno>                                
   2f1f8:	e3a03086 	mov	r3, #134	; 0x86                               
   2f1fc:	e5803000 	str	r3, [r0]                                      
                                                                      
  if (ret >= 0) {                                                     
    int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );         
    if (err) {                                                        
      errno = err;                                                    
      ret = -1;                                                       
   2f200:	e3e08000 	mvn	r8, #0                                        
  va_list        ap;                                                  
  va_start( ap, cmd );                                                
  ret = vfcntl(fd,cmd,ap);                                            
  va_end(ap);                                                         
  return ret;                                                         
}                                                                     
   2f204:	e1a00008 	mov	r0, r8                                        
   2f208:	e28dd004 	add	sp, sp, #4                                    
   2f20c:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  
   2f210:	e28dd00c 	add	sp, sp, #12                                   
   2f214:	e12fff1e 	bx	lr                                             
    case F_GETFL:        /* more flags (cloexec) */                   
      ret = rtems_libio_to_fcntl_flags( iop->flags );                 
      break;                                                          
                                                                      
    case F_SETFL:                                                     
      flags = rtems_libio_fcntl_flags( va_arg( ap, int ) );           
   2f218:	e5920000 	ldr	r0, [r2]                                      
   2f21c:	ebff60d0 	bl	7564 <rtems_libio_fcntl_flags>                 
                                                                      
      /*                                                              
       *  XXX If we are turning on append, should we seek to the end? 
       */                                                             
                                                                      
      iop->flags = (iop->flags & ~mask) | (flags & mask);             
   2f220:	e595200c 	ldr	r2, [r5, #12]                                 
   2f224:	e59f3160 	ldr	r3, [pc, #352]	; 2f38c <fcntl+0x210>          
   2f228:	e3c22c02 	bic	r2, r2, #512	; 0x200                          
   2f22c:	e0003003 	and	r3, r0, r3                                    
   2f230:	e3c22001 	bic	r2, r2, #1                                    
   2f234:	e1833002 	orr	r3, r3, r2                                    
   2f238:	e585300c 	str	r3, [r5, #12]                                 
{                                                                     
  rtems_libio_t *iop;                                                 
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
   2f23c:	e3a08000 	mov	r8, #0                                        
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
    int err = (*iop->pathinfo.handlers->fcntl_h)( iop, cmd );         
   2f240:	e1a01004 	mov	r1, r4                                        
   2f244:	e5953020 	ldr	r3, [r5, #32]                                 
   2f248:	e1a00005 	mov	r0, r5                                        
   2f24c:	e1a0e00f 	mov	lr, pc                                        
   2f250:	e593f028 	ldr	pc, [r3, #40]	; 0x28                          
    if (err) {                                                        
   2f254:	e2504000 	subs	r4, r0, #0                                   
   2f258:	0affffe9 	beq	2f204 <fcntl+0x88>                            
      errno = err;                                                    
   2f25c:	ebffc0cc 	bl	1f594 <__errno>                                <== NOT EXECUTED
   2f260:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   2f264:	eaffffe5 	b	2f200 <fcntl+0x84>                              <== NOT EXECUTED
      errno = ENOTSUP;                                                
      ret = -1;                                                       
      break;                                                          
                                                                      
    default:                                                          
      errno = EINVAL;                                                 
   2f268:	ebffc0c9 	bl	1f594 <__errno>                                
   2f26c:	e3a03016 	mov	r3, #22                                       
   2f270:	e5803000 	str	r3, [r0]                                      
   2f274:	eaffffe1 	b	2f200 <fcntl+0x84>                              
                                                                      
  /*                                                                  
   * FIXME: We ignore the start value fd2 for the file descriptor search.  This
   * is not POSIX conform.                                            
   */                                                                 
  rtems_libio_t *diop = rtems_libio_allocate();                       
   2f278:	ebff60d9 	bl	75e4 <rtems_libio_allocate>                    
                                                                      
  if (diop != NULL) {                                                 
   2f27c:	e2507000 	subs	r7, r0, #0                                   
   2f280:	0affffde 	beq	2f200 <fcntl+0x84>                            
    int oflag = rtems_libio_to_fcntl_flags( iop->flags );             
   2f284:	e595000c 	ldr	r0, [r5, #12]                                 
   2f288:	ebff60c2 	bl	7598 <rtems_libio_to_fcntl_flags>              
                                                                      
    oflag &= ~O_CREAT;                                                
   2f28c:	e3c08c02 	bic	r8, r0, #512	; 0x200                          
    diop->flags |= rtems_libio_fcntl_flags( oflag );                  
   2f290:	e1a00008 	mov	r0, r8                                        
   2f294:	e597a00c 	ldr	sl, [r7, #12]                                 
   2f298:	ebff60b1 	bl	7564 <rtems_libio_fcntl_flags>                 
                                                                      
static inline void rtems_filesystem_instance_lock(                    
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
   2f29c:	e5953024 	ldr	r3, [r5, #36]	; 0x24                          
   2f2a0:	e180000a 	orr	r0, r0, sl                                    
   2f2a4:	e587000c 	str	r0, [r7, #12]                                 
                                                                      
  (*mt_entry->ops->lock_h)( mt_entry );                               
   2f2a8:	e1a00003 	mov	r0, r3                                        
   2f2ac:	e593300c 	ldr	r3, [r3, #12]                                 
   2f2b0:	e1a0e00f 	mov	lr, pc                                        
   2f2b4:	e593f000 	ldr	pc, [r3]                                      
                                                                      
    rtems_filesystem_instance_lock( &iop->pathinfo );                 
    rtems_filesystem_location_clone( &diop->pathinfo, &iop->pathinfo );
   2f2b8:	e2851010 	add	r1, r5, #16                                   
   2f2bc:	e2870010 	add	r0, r7, #16                                   
   2f2c0:	ebff9b1f 	bl	15f44 <rtems_filesystem_location_clone>        
                                                                      
static inline void rtems_filesystem_instance_unlock(                  
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
   2f2c4:	e5953024 	ldr	r3, [r5, #36]	; 0x24                          
                                                                      
  (*mt_entry->ops->unlock_h)( mt_entry );                             
   2f2c8:	e1a00003 	mov	r0, r3                                        
   2f2cc:	e593300c 	ldr	r3, [r3, #12]                                 
   2f2d0:	e1a0e00f 	mov	lr, pc                                        
   2f2d4:	e593f004 	ldr	pc, [r3, #4]                                  
    /*                                                                
     * XXX: We call the open handler here to have a proper open and close pair.
     *                                                                
     * FIXME: What to do with the path?                               
     */                                                               
    rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );  
   2f2d8:	e3a01000 	mov	r1, #0                                        
   2f2dc:	e1a02008 	mov	r2, r8                                        
   2f2e0:	e597c020 	ldr	ip, [r7, #32]                                 
   2f2e4:	e1a00007 	mov	r0, r7                                        
   2f2e8:	e1a03001 	mov	r3, r1                                        
   2f2ec:	e1a0e00f 	mov	lr, pc                                        
   2f2f0:	e59cf000 	ldr	pc, [ip]                                      
    if ( rv == 0 ) {                                                  
   2f2f4:	e2508000 	subs	r8, r0, #0                                   
   2f2f8:	1a00001e 	bne	2f378 <fcntl+0x1fc>                           
      rv = diop - rtems_libio_iops;                                   
   2f2fc:	e5963000 	ldr	r3, [r6]                                      
   2f300:	e0637007 	rsb	r7, r3, r7                                    
   2f304:	e1a07247 	asr	r7, r7, #4                                    
   2f308:	e0878107 	add	r8, r7, r7, lsl #2                            
   2f30c:	e0888208 	add	r8, r8, r8, lsl #4                            
   2f310:	e0888408 	add	r8, r8, r8, lsl #8                            
   2f314:	e0888808 	add	r8, r8, r8, lsl #16                           
   2f318:	e0878088 	add	r8, r7, r8, lsl #1                            
  /*                                                                  
   *  If we got this far successfully, then we give the optional      
   *  filesystem specific handler a chance to process this.           
   */                                                                 
                                                                      
  if (ret >= 0) {                                                     
   2f31c:	e3580000 	cmp	r8, #0                                        
   2f320:	aaffffc6 	bge	2f240 <fcntl+0xc4>                            
   2f324:	eaffffb6 	b	2f204 <fcntl+0x88>                              <== NOT EXECUTED
      fd2 = va_arg( ap, int );                                        
      ret = duplicate_iop( iop, fd2 );                                
      break;                                                          
                                                                      
    case F_GETFD:        /* get f_flags */                            
      ret = ((iop->flags & LIBIO_FLAGS_CLOSE_ON_EXEC) != 0);          
   2f328:	e3100b02 	tst	r0, #2048	; 0x800                             
   2f32c:	03a08000 	moveq	r8, #0                                      
   2f330:	13a08001 	movne	r8, #1                                      
   2f334:	eaffffc1 	b	2f240 <fcntl+0xc4>                              
       *  if a new process is exec()'ed.  Since RTEMS does not support
       *  processes, then we can ignore this one except to make       
       *  F_GETFD work.                                               
       */                                                             
                                                                      
      if ( va_arg( ap, int ) )                                        
   2f338:	e5928000 	ldr	r8, [r2]                                      
   2f33c:	e3580000 	cmp	r8, #0                                        
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
   2f340:	13800b02 	orrne	r0, r0, #2048	; 0x800                       
      else                                                            
        iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;                     
   2f344:	03c00b02 	biceq	r0, r0, #2048	; 0x800                       
       *  processes, then we can ignore this one except to make       
       *  F_GETFD work.                                               
       */                                                             
                                                                      
      if ( va_arg( ap, int ) )                                        
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
   2f348:	1585000c 	strne	r0, [r5, #12]                               
{                                                                     
  rtems_libio_t *iop;                                                 
  int            fd2;                                                 
  int            flags;                                               
  int            mask;                                                
  int            ret = 0;                                             
   2f34c:	13a08000 	movne	r8, #0                                      
       */                                                             
                                                                      
      if ( va_arg( ap, int ) )                                        
        iop->flags |= LIBIO_FLAGS_CLOSE_ON_EXEC;                      
      else                                                            
        iop->flags &= ~LIBIO_FLAGS_CLOSE_ON_EXEC;                     
   2f350:	0585000c 	streq	r0, [r5, #12]                               
   2f354:	eaffffb9 	b	2f240 <fcntl+0xc4>                              
      break;                                                          
                                                                      
    case F_GETFL:        /* more flags (cloexec) */                   
      ret = rtems_libio_to_fcntl_flags( iop->flags );                 
   2f358:	ebff608e 	bl	7598 <rtems_libio_to_fcntl_flags>              
   2f35c:	e1a08000 	mov	r8, r0                                        
   2f360:	eaffffed 	b	2f31c <fcntl+0x1a0>                             
  int            mask;                                                
  int            ret = 0;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open(iop);                                     
   2f364:	ebffc08a 	bl	1f594 <__errno>                                
   2f368:	e3a03009 	mov	r3, #9                                        
   2f36c:	e5803000 	str	r3, [r0]                                      
   2f370:	e3e08000 	mvn	r8, #0                                        
   2f374:	eaffffa2 	b	2f204 <fcntl+0x88>                              
     */                                                               
    rv = (*diop->pathinfo.handlers->open_h)( diop, NULL, oflag, 0 );  
    if ( rv == 0 ) {                                                  
      rv = diop - rtems_libio_iops;                                   
    } else {                                                          
      rtems_libio_free( diop );                                       
   2f378:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   2f37c:	ebff60b0 	bl	7644 <rtems_libio_free>                        <== NOT EXECUTED
   2f380:	eaffffe5 	b	2f31c <fcntl+0x1a0>                             <== NOT EXECUTED
                                                                      

0000cac8 <fifo_open>: int fifo_open( pipe_control_t **pipep, rtems_libio_t *iop ) {
    cac8:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
                                                                      
static int pipe_lock(void)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    cacc:	e59f441c 	ldr	r4, [pc, #1052]	; cef0 <fifo_open+0x428>      
    cad0:	e5948000 	ldr	r8, [r4]                                      
    cad4:	e3580000 	cmp	r8, #0                                        
                                                                      
int fifo_open(                                                        
  pipe_control_t **pipep,                                             
  rtems_libio_t *iop                                                  
)                                                                     
{                                                                     
    cad8:	e24dd008 	sub	sp, sp, #8                                    
    cadc:	e1a05000 	mov	r5, r0                                        
    cae0:	e1a07001 	mov	r7, r1                                        
                                                                      
static int pipe_lock(void)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    cae4:	0a000025 	beq	cb80 <fifo_open+0xb8>                         
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    cae8:	e3a01000 	mov	r1, #0                                        
    caec:	e1a00008 	mov	r0, r8                                        
    caf0:	e1a02001 	mov	r2, r1                                        
    caf4:	ebffece9 	bl	7ea0 <rtems_semaphore_obtain>                  
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    caf8:	e250a000 	subs	sl, r0, #0                                   
    cafc:	1a0000d0 	bne	ce44 <fifo_open+0x37c>                        
                                                                      
  err = pipe_lock();                                                  
  if (err)                                                            
    return err;                                                       
                                                                      
  pipe = *pipep;                                                      
    cb00:	e5956000 	ldr	r6, [r5]                                      
  if (pipe == NULL) {                                                 
    cb04:	e3560000 	cmp	r6, #0                                        
    cb08:	0a000080 	beq	cd10 <fifo_open+0x248>                        
    err = pipe_alloc(&pipe);                                          
    if (err)                                                          
      goto out;                                                       
  }                                                                   
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    cb0c:	e3a01000 	mov	r1, #0                                        
    cb10:	e5960028 	ldr	r0, [r6, #40]	; 0x28                          
    cb14:	e1a02001 	mov	r2, r1                                        
    cb18:	ebffece0 	bl	7ea0 <rtems_semaphore_obtain>                  
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
    cb1c:	e5953000 	ldr	r3, [r5]                                      
    err = pipe_alloc(&pipe);                                          
    if (err)                                                          
      goto out;                                                       
  }                                                                   
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    cb20:	e3500000 	cmp	r0, #0                                        
    cb24:	01a08000 	moveq	r8, r0                                      
    cb28:	13e08003 	mvnne	r8, #3                                      
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
    cb2c:	e3530000 	cmp	r3, #0                                        
    cb30:	0a0000b2 	beq	ce00 <fifo_open+0x338>                        
#ifdef RTEMS_DEBUG                                                    
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc =                                                                
#endif                                                                
   rtems_semaphore_release(pipe_semaphore);                           
    cb34:	e5940000 	ldr	r0, [r4]                                      
    cb38:	ebffed21 	bl	7fc4 <rtems_semaphore_release>                 
  pipe_control_t *pipe;                                               
  unsigned int prevCounter;                                           
  int err;                                                            
                                                                      
  err = pipe_new(pipep);                                              
  if (err)                                                            
    cb3c:	e3580000 	cmp	r8, #0                                        
    cb40:	1a00000b 	bne	cb74 <fifo_open+0xac>                         
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    cb44:	e597300c 	ldr	r3, [r7, #12]                                 
    cb48:	e2033006 	and	r3, r3, #6                                    
    cb4c:	e3530004 	cmp	r3, #4                                        
  int err;                                                            
                                                                      
  err = pipe_new(pipep);                                              
  if (err)                                                            
    return err;                                                       
  pipe = *pipep;                                                      
    cb50:	e5954000 	ldr	r4, [r5]                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    cb54:	0a000015 	beq	cbb0 <fifo_open+0xe8>                         
    cb58:	e3530006 	cmp	r3, #6                                        
    cb5c:	0a000057 	beq	ccc0 <fifo_open+0x1f8>                        
    cb60:	e3530002 	cmp	r3, #2                                        
    cb64:	0a000035 	beq	cc40 <fifo_open+0x178>                        
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
      break;                                                          
  }                                                                   
                                                                      
  PIPE_UNLOCK(pipe);                                                  
    cb68:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cb6c:	ebffed14 	bl	7fc4 <rtems_semaphore_release>                 
  return 0;                                                           
    cb70:	e3a08000 	mov	r8, #0                                        
                                                                      
out_error:                                                            
  pipe_release(pipep, iop);                                           
  return err;                                                         
}                                                                     
    cb74:	e1a00008 	mov	r0, r8                                        
    cb78:	e28dd008 	add	sp, sp, #8                                    
    cb7c:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
    cb80:	e59f636c 	ldr	r6, [pc, #876]	; cef4 <fifo_open+0x42c>       
    cb84:	e1a01008 	mov	r1, r8                                        
    cb88:	e5960000 	ldr	r0, [r6]                                      
    cb8c:	e1a02008 	mov	r2, r8                                        
    cb90:	ebffecc2 	bl	7ea0 <rtems_semaphore_obtain>                  
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    rtems_libio_lock();                                               
                                                                      
    if (pipe_semaphore == RTEMS_ID_NONE) {                            
    cb94:	e5943000 	ldr	r3, [r4]                                      
    cb98:	e3530000 	cmp	r3, #0                                        
    cb9c:	0a00009d 	beq	ce18 <fifo_open+0x350>                        
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
    cba0:	e5960000 	ldr	r0, [r6]                                      <== NOT EXECUTED
    cba4:	ebffed06 	bl	7fc4 <rtems_semaphore_release>                 <== NOT EXECUTED
    cba8:	e5948000 	ldr	r8, [r4]                                      <== NOT EXECUTED
    cbac:	eaffffcd 	b	cae8 <fifo_open+0x20>                           <== NOT EXECUTED
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
                                                                      
      if (pipe->Writers ++ == 0)                                      
    cbb0:	e5943014 	ldr	r3, [r4, #20]                                 
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
    cbb4:	e5941024 	ldr	r1, [r4, #36]	; 0x24                          
                                                                      
      if (pipe->Writers ++ == 0)                                      
    cbb8:	e2832001 	add	r2, r3, #1                                    
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
    cbbc:	e2811001 	add	r1, r1, #1                                    
                                                                      
      if (pipe->Writers ++ == 0)                                      
    cbc0:	e3530000 	cmp	r3, #0                                        
        } while (prevCounter == pipe->writerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
    cbc4:	e5841024 	str	r1, [r4, #36]	; 0x24                          
                                                                      
      if (pipe->Writers ++ == 0)                                      
    cbc8:	e5842014 	str	r2, [r4, #20]                                 
    cbcc:	0a00009e 	beq	ce4c <fifo_open+0x384>                        
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
    cbd0:	e5943010 	ldr	r3, [r4, #16]                                 
    cbd4:	e3530000 	cmp	r3, #0                                        
    cbd8:	1affffe2 	bne	cb68 <fifo_open+0xa0>                         
    cbdc:	e597300c 	ldr	r3, [r7, #12]                                 
    cbe0:	e3130001 	tst	r3, #1                                        
        err = -ENXIO;                                                 
        goto out_error;                                               
      }                                                               
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
    cbe4:	05946020 	ldreq	r6, [r4, #32]                               
      pipe->writerCounter ++;                                         
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
    cbe8:	0a000007 	beq	cc0c <fifo_open+0x144>                        
    cbec:	ea0000af 	b	ceb0 <fifo_open+0x3e8>                          
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_WRITEWAIT(pipe))                                 
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
    cbf0:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cbf4:	ebffeca9 	bl	7ea0 <rtems_semaphore_obtain>                  
    cbf8:	e3500000 	cmp	r0, #0                                        
    cbfc:	1a00000a 	bne	cc2c <fifo_open+0x164>                        
            goto out_error;                                           
        } while (prevCounter == pipe->readerCounter);                 
    cc00:	e5943020 	ldr	r3, [r4, #32]                                 
    cc04:	e1530006 	cmp	r3, r6                                        
    cc08:	1affffd6 	bne	cb68 <fifo_open+0xa0>                         
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
    cc0c:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cc10:	ebffeceb 	bl	7fc4 <rtems_semaphore_release>                 
          if (! PIPE_WRITEWAIT(pipe))                                 
    cc14:	e3a01000 	mov	r1, #0                                        
    cc18:	e5940030 	ldr	r0, [r4, #48]	; 0x30                          
    cc1c:	eb000495 	bl	de78 <rtems_barrier_wait>                      
    cc20:	e2501000 	subs	r1, r0, #0                                   
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
    cc24:	e1a02001 	mov	r2, r1                                        
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_WRITEWAIT(pipe))                                 
    cc28:	0afffff0 	beq	cbf0 <fifo_open+0x128>                        
        goto out_error;                                               
      }                                                               
                                                                      
      if (pipe->Readers == 0) {                                       
        prevCounter = pipe->readerCounter;                            
        err = -EINTR;                                                 
    cc2c:	e3e08003 	mvn	r8, #3                                        <== NOT EXECUTED
                                                                      
  PIPE_UNLOCK(pipe);                                                  
  return 0;                                                           
                                                                      
out_error:                                                            
  pipe_release(pipep, iop);                                           
    cc30:	e1a00005 	mov	r0, r5                                        
    cc34:	e1a01007 	mov	r1, r7                                        
    cc38:	ebffff69 	bl	c9e4 <pipe_release>                            
  return err;                                                         
    cc3c:	eaffffcc 	b	cb74 <fifo_open+0xac>                           
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
    cc40:	e5943010 	ldr	r3, [r4, #16]                                 
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
    cc44:	e5941020 	ldr	r1, [r4, #32]                                 
      if (pipe->Readers ++ == 0)                                      
    cc48:	e2832001 	add	r2, r3, #1                                    
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
    cc4c:	e2811001 	add	r1, r1, #1                                    
      if (pipe->Readers ++ == 0)                                      
    cc50:	e3530000 	cmp	r3, #0                                        
    return err;                                                       
  pipe = *pipep;                                                      
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
    cc54:	e5841020 	str	r1, [r4, #32]                                 
      if (pipe->Readers ++ == 0)                                      
    cc58:	e5842010 	str	r2, [r4, #16]                                 
    cc5c:	0a000082 	beq	ce6c <fifo_open+0x3a4>                        
        PIPE_WAKEUPWRITERS(pipe);                                     
                                                                      
      if (pipe->Writers == 0) {                                       
    cc60:	e5943014 	ldr	r3, [r4, #20]                                 
    cc64:	e3530000 	cmp	r3, #0                                        
    cc68:	1affffbe 	bne	cb68 <fifo_open+0xa0>                         
        /* Not an error */                                            
        if (LIBIO_NODELAY(iop))                                       
    cc6c:	e597300c 	ldr	r3, [r7, #12]                                 
    cc70:	e3130001 	tst	r3, #1                                        
    cc74:	1affffbb 	bne	cb68 <fifo_open+0xa0>                         
          break;                                                      
                                                                      
        prevCounter = pipe->writerCounter;                            
    cc78:	e5946024 	ldr	r6, [r4, #36]	; 0x24                          
    cc7c:	ea000006 	b	cc9c <fifo_open+0x1d4>                          
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_READWAIT(pipe))                                  
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
    cc80:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cc84:	ebffec85 	bl	7ea0 <rtems_semaphore_obtain>                  
    cc88:	e3500000 	cmp	r0, #0                                        
    cc8c:	1affffe6 	bne	cc2c <fifo_open+0x164>                        
            goto out_error;                                           
        } while (prevCounter == pipe->writerCounter);                 
    cc90:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
    cc94:	e1530006 	cmp	r3, r6                                        
    cc98:	1affffb2 	bne	cb68 <fifo_open+0xa0>                         
                                                                      
        prevCounter = pipe->writerCounter;                            
        err = -EINTR;                                                 
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
    cc9c:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cca0:	ebffecc7 	bl	7fc4 <rtems_semaphore_release>                 
          if (! PIPE_READWAIT(pipe))                                  
    cca4:	e3a01000 	mov	r1, #0                                        
    cca8:	e594002c 	ldr	r0, [r4, #44]	; 0x2c                          
    ccac:	eb000471 	bl	de78 <rtems_barrier_wait>                      
    ccb0:	e2501000 	subs	r1, r0, #0                                   
            goto out_error;                                           
          if (! PIPE_LOCK(pipe))                                      
    ccb4:	e1a02001 	mov	r2, r1                                        
        prevCounter = pipe->writerCounter;                            
        err = -EINTR;                                                 
        /* Wait until a writer opens the pipe */                      
        do {                                                          
          PIPE_UNLOCK(pipe);                                          
          if (! PIPE_READWAIT(pipe))                                  
    ccb8:	0afffff0 	beq	cc80 <fifo_open+0x1b8>                        
    ccbc:	eaffffda 	b	cc2c <fifo_open+0x164>                          <== NOT EXECUTED
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
    ccc0:	e5943010 	ldr	r3, [r4, #16]                                 
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
    ccc4:	e5941020 	ldr	r1, [r4, #32]                                 
      if (pipe->Readers ++ == 0)                                      
    ccc8:	e2832001 	add	r2, r3, #1                                    
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
    cccc:	e2811001 	add	r1, r1, #1                                    
      if (pipe->Readers ++ == 0)                                      
    ccd0:	e3530000 	cmp	r3, #0                                        
        } while (prevCounter == pipe->readerCounter);                 
      }                                                               
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
    ccd4:	e5841020 	str	r1, [r4, #32]                                 
      if (pipe->Readers ++ == 0)                                      
    ccd8:	e5842010 	str	r2, [r4, #16]                                 
    ccdc:	0a00005e 	beq	ce5c <fifo_open+0x394>                        
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
      if (pipe->Writers ++ == 0)                                      
    cce0:	e5943014 	ldr	r3, [r4, #20]                                 
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
    cce4:	e5941024 	ldr	r1, [r4, #36]	; 0x24                          
      if (pipe->Writers ++ == 0)                                      
    cce8:	e2832001 	add	r2, r3, #1                                    
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
    ccec:	e2811001 	add	r1, r1, #1                                    
      if (pipe->Writers ++ == 0)                                      
    ccf0:	e3530000 	cmp	r3, #0                                        
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
      pipe->writerCounter ++;                                         
    ccf4:	e5841024 	str	r1, [r4, #36]	; 0x24                          
      if (pipe->Writers ++ == 0)                                      
    ccf8:	e5842014 	str	r2, [r4, #20]                                 
    ccfc:	1affff99 	bne	cb68 <fifo_open+0xa0>                         
        PIPE_WAKEUPREADERS(pipe);                                     
    cd00:	e594002c 	ldr	r0, [r4, #44]	; 0x2c                          
    cd04:	e28d1004 	add	r1, sp, #4                                    
    cd08:	eb000442 	bl	de18 <rtems_barrier_release>                   
    cd0c:	eaffff95 	b	cb68 <fifo_open+0xa0>                           
{                                                                     
  static char c = 'a';                                                
  pipe_control_t *pipe;                                               
  int err = -ENOMEM;                                                  
                                                                      
  pipe = malloc(sizeof(pipe_control_t));                              
    cd10:	e3a00034 	mov	r0, #52	; 0x34                                
    cd14:	ebffdbac 	bl	3bcc <malloc>                                  
  if (pipe == NULL)                                                   
    cd18:	e2506000 	subs	r6, r0, #0                                   
    cd1c:	0a00006f 	beq	cee0 <fifo_open+0x418>                        
    return err;                                                       
  memset(pipe, 0, sizeof(pipe_control_t));                            
    cd20:	e1a02006 	mov	r2, r6                                        
    cd24:	e482a004 	str	sl, [r2], #4                                  
    cd28:	e2822004 	add	r2, r2, #4                                    
    cd2c:	e482a004 	str	sl, [r2], #4                                  
    cd30:	e482a004 	str	sl, [r2], #4                                  
    cd34:	e482a004 	str	sl, [r2], #4                                  
    cd38:	e482a004 	str	sl, [r2], #4                                  
    cd3c:	e482a004 	str	sl, [r2], #4                                  
    cd40:	e482a004 	str	sl, [r2], #4                                  
    cd44:	e482a004 	str	sl, [r2], #4                                  
    cd48:	e482a004 	str	sl, [r2], #4                                  
    cd4c:	e482a004 	str	sl, [r2], #4                                  
    cd50:	e482a004 	str	sl, [r2], #4                                  
                                                                      
  pipe->Size = PIPE_BUF;                                              
    cd54:	e3a03c02 	mov	r3, #512	; 0x200                              
  int err = -ENOMEM;                                                  
                                                                      
  pipe = malloc(sizeof(pipe_control_t));                              
  if (pipe == NULL)                                                   
    return err;                                                       
  memset(pipe, 0, sizeof(pipe_control_t));                            
    cd58:	e582a000 	str	sl, [r2]                                      
                                                                      
  pipe->Size = PIPE_BUF;                                              
  pipe->Buffer = malloc(pipe->Size);                                  
    cd5c:	e1a00003 	mov	r0, r3                                        
  pipe = malloc(sizeof(pipe_control_t));                              
  if (pipe == NULL)                                                   
    return err;                                                       
  memset(pipe, 0, sizeof(pipe_control_t));                            
                                                                      
  pipe->Size = PIPE_BUF;                                              
    cd60:	e5863004 	str	r3, [r6, #4]                                  
  pipe->Buffer = malloc(pipe->Size);                                  
    cd64:	ebffdb98 	bl	3bcc <malloc>                                  
  if (! pipe->Buffer)                                                 
    cd68:	e3500000 	cmp	r0, #0                                        
  if (pipe == NULL)                                                   
    return err;                                                       
  memset(pipe, 0, sizeof(pipe_control_t));                            
                                                                      
  pipe->Size = PIPE_BUF;                                              
  pipe->Buffer = malloc(pipe->Size);                                  
    cd6c:	e5860000 	str	r0, [r6]                                      
  if (! pipe->Buffer)                                                 
    cd70:	0a000058 	beq	ced8 <fifo_open+0x410>                        
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'r', c),                          
    cd74:	e59f817c 	ldr	r8, [pc, #380]	; cef8 <fifo_open+0x430>       
  if (! pipe->Buffer)                                                 
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
    cd78:	e59f017c 	ldr	r0, [pc, #380]	; cefc <fifo_open+0x434>       
        rtems_build_name ('P', 'I', 'r', c),                          
    cd7c:	e5d83000 	ldrb	r3, [r8]                                     
  if (! pipe->Buffer)                                                 
    goto err_buf;                                                     
                                                                      
  err = -ENOMEM;                                                      
                                                                      
  if (rtems_barrier_create(                                           
    cd80:	e1a0100a 	mov	r1, sl                                        
    cd84:	e1830000 	orr	r0, r3, r0                                    
    cd88:	e1a0200a 	mov	r2, sl                                        
    cd8c:	e286302c 	add	r3, r6, #44	; 0x2c                            
    cd90:	eb0003c3 	bl	dca4 <rtems_barrier_create>                    
    cd94:	e2501000 	subs	r1, r0, #0                                   
    cd98:	1a00004c 	bne	ced0 <fifo_open+0x408>                        
        rtems_build_name ('P', 'I', 'r', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->readBarrier) != RTEMS_SUCCESSFUL)                      
    goto err_rbar;                                                    
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'w', c),                          
    cd9c:	e5d83000 	ldrb	r3, [r8]                                     
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'r', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->readBarrier) != RTEMS_SUCCESSFUL)                      
    goto err_rbar;                                                    
  if (rtems_barrier_create(                                           
    cda0:	e59f0158 	ldr	r0, [pc, #344]	; cf00 <fifo_open+0x438>       
    cda4:	e1a02001 	mov	r2, r1                                        
    cda8:	e1830000 	orr	r0, r3, r0                                    
    cdac:	e2863030 	add	r3, r6, #48	; 0x30                            
    cdb0:	eb0003bb 	bl	dca4 <rtems_barrier_create>                    
    cdb4:	e2503000 	subs	r3, r0, #0                                   
    cdb8:	1a000042 	bne	cec8 <fifo_open+0x400>                        
        rtems_build_name ('P', 'I', 'w', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->writeBarrier) != RTEMS_SUCCESSFUL)                     
    goto err_wbar;                                                    
  if (rtems_semaphore_create(                                         
        rtems_build_name ('P', 'I', 's', c), 1,                       
    cdbc:	e5d82000 	ldrb	r2, [r8]                                     
  if (rtems_barrier_create(                                           
        rtems_build_name ('P', 'I', 'w', c),                          
        RTEMS_BARRIER_MANUAL_RELEASE, 0,                              
        &pipe->writeBarrier) != RTEMS_SUCCESSFUL)                     
    goto err_wbar;                                                    
  if (rtems_semaphore_create(                                         
    cdc0:	e59f013c 	ldr	r0, [pc, #316]	; cf04 <fifo_open+0x43c>       
    cdc4:	e286c028 	add	ip, r6, #40	; 0x28                            
    cdc8:	e1820000 	orr	r0, r2, r0                                    
    cdcc:	e3a01001 	mov	r1, #1                                        
    cdd0:	e3a02010 	mov	r2, #16                                       
    cdd4:	e58dc000 	str	ip, [sp]                                      
    cdd8:	ebffeb97 	bl	7c3c <rtems_semaphore_create>                  
    cddc:	e3500000 	cmp	r0, #0                                        
    cde0:	1a000036 	bne	cec0 <fifo_open+0x3f8>                        
#ifdef RTEMS_POSIX_API                                                
  pipe_interruptible(pipe);                                           
#endif                                                                
                                                                      
  *pipep = pipe;                                                      
  if (c ++ == 'z')                                                    
    cde4:	e5d83000 	ldrb	r3, [r8]                                     
    cde8:	e353007a 	cmp	r3, #122	; 0x7a                               
    cdec:	e2832001 	add	r2, r3, #1                                    
    c = 'a';                                                          
    cdf0:	03a03061 	moveq	r3, #97	; 0x61                              
#ifdef RTEMS_POSIX_API                                                
  pipe_interruptible(pipe);                                           
#endif                                                                
                                                                      
  *pipep = pipe;                                                      
  if (c ++ == 'z')                                                    
    cdf4:	e5c82000 	strb	r2, [r8]                                     
    c = 'a';                                                          
    cdf8:	05c83000 	strbeq	r3, [r8]                                   
    cdfc:	eaffff42 	b	cb0c <fifo_open+0x44>                           
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    err = -EINTR;                                                     
                                                                      
  if (*pipep == NULL) {                                               
    if (err)                                                          
    ce00:	e3580000 	cmp	r8, #0                                        
    ce04:	1a00001c 	bne	ce7c <fifo_open+0x3b4>                        
      pipe_free(pipe);                                                
    else                                                              
      *pipep = pipe;                                                  
    ce08:	e5856000 	str	r6, [r5]                                      
#ifdef RTEMS_DEBUG                                                    
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc =                                                                
#endif                                                                
   rtems_semaphore_release(pipe_semaphore);                           
    ce0c:	e5940000 	ldr	r0, [r4]                                      
    ce10:	ebffec6b 	bl	7fc4 <rtems_semaphore_release>                 
    ce14:	eaffff4a 	b	cb44 <fifo_open+0x7c>                           
                                                                      
  if (pipe_semaphore == RTEMS_ID_NONE) {                              
    rtems_libio_lock();                                               
                                                                      
    if (pipe_semaphore == RTEMS_ID_NONE) {                            
      sc = rtems_semaphore_create(                                    
    ce18:	e1a03008 	mov	r3, r8                                        
    ce1c:	e3a01001 	mov	r1, #1                                        
    ce20:	e3a02054 	mov	r2, #84	; 0x54                                
    ce24:	e59f00dc 	ldr	r0, [pc, #220]	; cf08 <fifo_open+0x440>       
    ce28:	e58d4000 	str	r4, [sp]                                      
    ce2c:	ebffeb82 	bl	7c3c <rtems_semaphore_create>                  
    ce30:	e1a08000 	mov	r8, r0                                        
    ce34:	e5960000 	ldr	r0, [r6]                                      
    ce38:	ebffec61 	bl	7fc4 <rtems_semaphore_release>                 
    }                                                                 
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    ce3c:	e3580000 	cmp	r8, #0                                        
    ce40:	0a000028 	beq	cee8 <fifo_open+0x420>                        
    sc = rtems_semaphore_obtain(pipe_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    ce44:	e3e0800b 	mvn	r8, #11                                       
    ce48:	eaffff49 	b	cb74 <fifo_open+0xac>                           
                                                                      
    case LIBIO_FLAGS_WRITE:                                           
      pipe->writerCounter ++;                                         
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
    ce4c:	e594002c 	ldr	r0, [r4, #44]	; 0x2c                          
    ce50:	e28d1004 	add	r1, sp, #4                                    
    ce54:	eb0003ef 	bl	de18 <rtems_barrier_release>                   
    ce58:	eaffff5c 	b	cbd0 <fifo_open+0x108>                          
      break;                                                          
                                                                      
    case LIBIO_FLAGS_READ_WRITE:                                      
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
    ce5c:	e5940030 	ldr	r0, [r4, #48]	; 0x30                          
    ce60:	e28d1004 	add	r1, sp, #4                                    
    ce64:	eb0003eb 	bl	de18 <rtems_barrier_release>                   
    ce68:	eaffff9c 	b	cce0 <fifo_open+0x218>                          
                                                                      
  switch (LIBIO_ACCMODE(iop)) {                                       
    case LIBIO_FLAGS_READ:                                            
      pipe->readerCounter ++;                                         
      if (pipe->Readers ++ == 0)                                      
        PIPE_WAKEUPWRITERS(pipe);                                     
    ce6c:	e5940030 	ldr	r0, [r4, #48]	; 0x30                          
    ce70:	e28d1004 	add	r1, sp, #4                                    
    ce74:	eb0003e7 	bl	de18 <rtems_barrier_release>                   
    ce78:	eaffff78 	b	cc60 <fifo_open+0x198>                          
/* Called with pipe_semaphore held. */                                
static inline void pipe_free(                                         
  pipe_control_t *pipe                                                
)                                                                     
{                                                                     
  rtems_barrier_delete(pipe->readBarrier);                            
    ce7c:	e596002c 	ldr	r0, [r6, #44]	; 0x2c                          <== NOT EXECUTED
    ce80:	eb0003b9 	bl	dd6c <rtems_barrier_delete>                    <== NOT EXECUTED
  rtems_barrier_delete(pipe->writeBarrier);                           
    ce84:	e5960030 	ldr	r0, [r6, #48]	; 0x30                          <== NOT EXECUTED
    ce88:	eb0003b7 	bl	dd6c <rtems_barrier_delete>                    <== NOT EXECUTED
  rtems_semaphore_delete(pipe->Semaphore);                            
    ce8c:	e5960028 	ldr	r0, [r6, #40]	; 0x28                          <== NOT EXECUTED
    ce90:	ebffebd9 	bl	7dfc <rtems_semaphore_delete>                  <== NOT EXECUTED
  free(pipe->Buffer);                                                 
    ce94:	e5960000 	ldr	r0, [r6]                                      <== NOT EXECUTED
    ce98:	ebffda3e 	bl	3798 <free>                                    <== NOT EXECUTED
  free(pipe);                                                         
    ce9c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    cea0:	ebffda3c 	bl	3798 <free>                                    <== NOT EXECUTED
#ifdef RTEMS_DEBUG                                                    
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc =                                                                
#endif                                                                
   rtems_semaphore_release(pipe_semaphore);                           
    cea4:	e5940000 	ldr	r0, [r4]                                      
    cea8:	ebffec45 	bl	7fc4 <rtems_semaphore_release>                 
    ceac:	eaffff30 	b	cb74 <fifo_open+0xac>                           
                                                                      
      if (pipe->Writers ++ == 0)                                      
        PIPE_WAKEUPREADERS(pipe);                                     
                                                                      
      if (pipe->Readers == 0 && LIBIO_NODELAY(iop)) {                 
	PIPE_UNLOCK(pipe);                                                   
    ceb0:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    ceb4:	ebffec42 	bl	7fc4 <rtems_semaphore_release>                 
        err = -ENXIO;                                                 
    ceb8:	e3e08005 	mvn	r8, #5                                        
        goto out_error;                                               
    cebc:	eaffff5b 	b	cc30 <fifo_open+0x168>                          
  if (c ++ == 'z')                                                    
    c = 'a';                                                          
  return 0;                                                           
                                                                      
err_sem:                                                              
  rtems_barrier_delete(pipe->writeBarrier);                           
    cec0:	e5960030 	ldr	r0, [r6, #48]	; 0x30                          
    cec4:	eb0003a8 	bl	dd6c <rtems_barrier_delete>                    
err_wbar:                                                             
  rtems_barrier_delete(pipe->readBarrier);                            
    cec8:	e596002c 	ldr	r0, [r6, #44]	; 0x2c                          
    cecc:	eb0003a6 	bl	dd6c <rtems_barrier_delete>                    
err_rbar:                                                             
  free(pipe->Buffer);                                                 
    ced0:	e5960000 	ldr	r0, [r6]                                      
    ced4:	ebffda2f 	bl	3798 <free>                                    
err_buf:                                                              
  free(pipe);                                                         
    ced8:	e1a00006 	mov	r0, r6                                        
    cedc:	ebffda2d 	bl	3798 <free>                                    
    }                                                                 
                                                                      
    rtems_libio_unlock();                                             
  }                                                                   
                                                                      
  if (sc == RTEMS_SUCCESSFUL) {                                       
    cee0:	e3e0800b 	mvn	r8, #11                                       
    cee4:	eaffffee 	b	cea4 <fifo_open+0x3dc>                          
    cee8:	e5948000 	ldr	r8, [r4]                                      
    ceec:	eafffefd 	b	cae8 <fifo_open+0x20>                           
                                                                      

00008a3c <fpathconf>: { long return_value; rtems_libio_t *iop; const rtems_filesystem_limits_and_options_t *the_limits; rtems_libio_check_fd(fd);
    8a3c:	e59f30f4 	ldr	r3, [pc, #244]	; 8b38 <fpathconf+0xfc>        
    8a40:	e5933000 	ldr	r3, [r3]                                      
    8a44:	e1500003 	cmp	r0, r3                                        
 */                                                                   
long fpathconf(                                                       
  int   fd,                                                           
  int   name                                                          
)                                                                     
{                                                                     
    8a48:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  long                                    return_value;               
  rtems_libio_t                          *iop;                        
  const rtems_filesystem_limits_and_options_t *the_limits;            
                                                                      
  rtems_libio_check_fd(fd);                                           
    8a4c:	2a000034 	bcs	8b24 <fpathconf+0xe8>                         
  iop = rtems_libio_iop(fd);                                          
    8a50:	e59f30e4 	ldr	r3, [pc, #228]	; 8b3c <fpathconf+0x100>       
    8a54:	e5933000 	ldr	r3, [r3]                                      
    8a58:	e0800080 	add	r0, r0, r0, lsl #1                            
    8a5c:	e0830200 	add	r0, r3, r0, lsl #4                            
  rtems_libio_check_is_open(iop);                                     
    8a60:	e590300c 	ldr	r3, [r0, #12]                                 
    8a64:	e3130c01 	tst	r3, #256	; 0x100                              
    8a68:	0a00002d 	beq	8b24 <fpathconf+0xe8>                         
                                                                      
  /*                                                                  
   *  Now process the information request.                            
   */                                                                 
                                                                      
  the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;   
    8a6c:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
    8a70:	e593302c 	ldr	r3, [r3, #44]	; 0x2c                          
                                                                      
  switch ( name ) {                                                   
    8a74:	e351000b 	cmp	r1, #11                                       
    8a78:	979ff101 	ldrls	pc, [pc, r1, lsl #2]                        
    8a7c:	ea00000d 	b	8ab8 <fpathconf+0x7c>                           
    8a80:	00008acc 	.word	0x00008acc                                  
    8a84:	00008ad4 	.word	0x00008ad4                                  <== NOT EXECUTED
    8a88:	00008adc 	.word	0x00008adc                                  <== NOT EXECUTED
    8a8c:	00008ae4 	.word	0x00008ae4                                  <== NOT EXECUTED
    8a90:	00008aec 	.word	0x00008aec                                  <== NOT EXECUTED
    8a94:	00008af4 	.word	0x00008af4                                  <== NOT EXECUTED
    8a98:	00008afc 	.word	0x00008afc                                  <== NOT EXECUTED
    8a9c:	00008b04 	.word	0x00008b04                                  <== NOT EXECUTED
    8aa0:	00008b0c 	.word	0x00008b0c                                  <== NOT EXECUTED
    8aa4:	00008b14 	.word	0x00008b14                                  <== NOT EXECUTED
    8aa8:	00008b1c 	.word	0x00008b1c                                  <== NOT EXECUTED
    8aac:	00008ab0 	.word	0x00008ab0                                  <== NOT EXECUTED
      break;                                                          
    case _PC_PRIO_IO:                                                 
      return_value = the_limits->posix_prio_io;                       
      break;                                                          
    case _PC_SYNC_IO:                                                 
      return_value = the_limits->posix_sync_io;                       
    8ab0:	e5930028 	ldr	r0, [r3, #40]	; 0x28                          
      break;                                                          
    8ab4:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    default:                                                          
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    8ab8:	eb000615 	bl	a314 <__errno>                                 
    8abc:	e3a03016 	mov	r3, #22                                       
    8ac0:	e5803000 	str	r3, [r0]                                      
    8ac4:	e3e00000 	mvn	r0, #0                                        
      break;                                                          
  }                                                                   
                                                                      
  return return_value;                                                
}                                                                     
    8ac8:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                                                                      
  the_limits = iop->pathinfo.mt_entry->pathconf_limits_and_options;   
                                                                      
  switch ( name ) {                                                   
    case _PC_LINK_MAX:                                                
      return_value = the_limits->link_max;                            
    8acc:	e5930000 	ldr	r0, [r3]                                      
      break;                                                          
    8ad0:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_MAX_CANON:                                               
      return_value = the_limits->max_canon;                           
    8ad4:	e5930004 	ldr	r0, [r3, #4]                                  
      break;                                                          
    8ad8:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_MAX_INPUT:                                               
      return_value = the_limits->max_input;                           
    8adc:	e5930008 	ldr	r0, [r3, #8]                                  
      break;                                                          
    8ae0:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_NAME_MAX:                                                
      return_value = the_limits->name_max;                            
    8ae4:	e593000c 	ldr	r0, [r3, #12]                                 
      break;                                                          
    8ae8:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_PATH_MAX:                                                
      return_value = the_limits->path_max;                            
    8aec:	e5930010 	ldr	r0, [r3, #16]                                 
      break;                                                          
    8af0:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_PIPE_BUF:                                                
      return_value = the_limits->pipe_buf;                            
    8af4:	e5930014 	ldr	r0, [r3, #20]                                 
      break;                                                          
    8af8:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_CHOWN_RESTRICTED:                                        
      return_value = the_limits->posix_chown_restrictions;            
    8afc:	e593001c 	ldr	r0, [r3, #28]                                 
      break;                                                          
    8b00:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_NO_TRUNC:                                                
      return_value = the_limits->posix_no_trunc;                      
    8b04:	e5930020 	ldr	r0, [r3, #32]                                 
      break;                                                          
    8b08:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_VDISABLE:                                                
      return_value = the_limits->posix_vdisable;                      
    8b0c:	e593002c 	ldr	r0, [r3, #44]	; 0x2c                          
      break;                                                          
    8b10:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_ASYNC_IO:                                                
      return_value = the_limits->posix_async_io;                      
    8b14:	e5930018 	ldr	r0, [r3, #24]                                 
      break;                                                          
    8b18:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
    case _PC_PRIO_IO:                                                 
      return_value = the_limits->posix_prio_io;                       
    8b1c:	e5930024 	ldr	r0, [r3, #36]	; 0x24                          
      break;                                                          
    8b20:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
  rtems_libio_t                          *iop;                        
  const rtems_filesystem_limits_and_options_t *the_limits;            
                                                                      
  rtems_libio_check_fd(fd);                                           
  iop = rtems_libio_iop(fd);                                          
  rtems_libio_check_is_open(iop);                                     
    8b24:	eb0005fa 	bl	a314 <__errno>                                 
    8b28:	e3a03009 	mov	r3, #9                                        
    8b2c:	e5803000 	str	r3, [r0]                                      
    8b30:	e3e00000 	mvn	r0, #0                                        
    8b34:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                                                                      

00018acc <fstat>: int fstat( int fd, struct stat *sbuf ) {
   18acc:	e92d4030 	push	{r4, r5, lr}                                 
  rtems_libio_t *iop;                                                 
                                                                      
  /*                                                                  
   *  Check to see if we were passed a valid pointer.                 
   */                                                                 
  if ( !sbuf )                                                        
   18ad0:	e2514000 	subs	r4, r1, #0                                   
   18ad4:	0a000019 	beq	18b40 <fstat+0x74>                            
    rtems_set_errno_and_return_minus_one( EFAULT );                   
                                                                      
  /*                                                                  
   *  Now process the stat() request.                                 
   */                                                                 
  iop = rtems_libio_iop( fd );                                        
   18ad8:	e59f3074 	ldr	r3, [pc, #116]	; 18b54 <fstat+0x88>           
   18adc:	e5933000 	ldr	r3, [r3]                                      
   18ae0:	e1500003 	cmp	r0, r3                                        
   18ae4:	2a000010 	bcs	18b2c <fstat+0x60>                            
   18ae8:	e59f3068 	ldr	r3, [pc, #104]	; 18b58 <fstat+0x8c>           
   18aec:	e5933000 	ldr	r3, [r3]                                      
   18af0:	e0800080 	add	r0, r0, r0, lsl #1                            
   18af4:	e0835200 	add	r5, r3, r0, lsl #4                            
  rtems_libio_check_fd( fd );                                         
  rtems_libio_check_is_open(iop);                                     
   18af8:	e595300c 	ldr	r3, [r5, #12]                                 
   18afc:	e3130c01 	tst	r3, #256	; 0x100                              
   18b00:	0a000009 	beq	18b2c <fstat+0x60>                            
                                                                      
  /*                                                                  
   *  Zero out the stat structure so the various support              
   *  versions of stat don't have to.                                 
   */                                                                 
  memset( sbuf, 0, sizeof(struct stat) );                             
   18b04:	e3a01000 	mov	r1, #0                                        
   18b08:	e3a02048 	mov	r2, #72	; 0x48                                
   18b0c:	e1a00004 	mov	r0, r4                                        
   18b10:	ebffd5a4 	bl	e1a8 <memset>                                  
                                                                      
  return (*iop->pathinfo.handlers->fstat_h)( &iop->pathinfo, sbuf );  
   18b14:	e5953020 	ldr	r3, [r5, #32]                                 
   18b18:	e2850010 	add	r0, r5, #16                                   
   18b1c:	e1a01004 	mov	r1, r4                                        
   18b20:	e1a0e00f 	mov	lr, pc                                        
   18b24:	e593f018 	ldr	pc, [r3, #24]                                 
}                                                                     
   18b28:	e8bd8030 	pop	{r4, r5, pc}                                  
  /*                                                                  
   *  Now process the stat() request.                                 
   */                                                                 
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_fd( fd );                                         
  rtems_libio_check_is_open(iop);                                     
   18b2c:	ebffd32d 	bl	d7e8 <__errno>                                 
   18b30:	e3a03009 	mov	r3, #9                                        
   18b34:	e5803000 	str	r3, [r0]                                      
   18b38:	e3e00000 	mvn	r0, #0                                        
   18b3c:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      
  /*                                                                  
   *  Check to see if we were passed a valid pointer.                 
   */                                                                 
  if ( !sbuf )                                                        
    rtems_set_errno_and_return_minus_one( EFAULT );                   
   18b40:	ebffd328 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
   18b44:	e3a0300e 	mov	r3, #14                                       <== NOT EXECUTED
   18b48:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   18b4c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   18b50:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
                                                                      

00002544 <get_disk_entry>: rtems_device_major_number major = 0; rtems_device_minor_number minor = 0; rtems_filesystem_split_dev_t(dev, major, minor); if (major < disktab_size && disktab != NULL) {
    2544:	e59f3074 	ldr	r3, [pc, #116]	; 25c0 <get_disk_entry+0x7c>   
    2548:	e593c000 	ldr	ip, [r3]                                      
    254c:	e15c0000 	cmp	ip, r0                                        
    2550:	9a000018 	bls	25b8 <get_disk_entry+0x74>                    
    2554:	e5933004 	ldr	r3, [r3, #4]                                  
    2558:	e3530000 	cmp	r3, #0                                        
                                                                      
      return dd;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return NULL;                                                        
    255c:	01a00003 	moveq	r0, r3                                      
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  rtems_filesystem_split_dev_t(dev, major, minor);                    
                                                                      
  if (major < disktab_size && disktab != NULL) {                      
    2560:	012fff1e 	bxeq	lr                                           
    rtems_disk_device_table *dtab = disktab + major;                  
    2564:	e083c180 	add	ip, r3, r0, lsl #3                            
                                                                      
    if (minor < dtab->size && dtab->minor != NULL) {                  
    2568:	e59cc004 	ldr	ip, [ip, #4]                                  
    256c:	e15c0001 	cmp	ip, r1                                        
    2570:	9a000010 	bls	25b8 <get_disk_entry+0x74>                    
    2574:	e7930180 	ldr	r0, [r3, r0, lsl #3]                          
    2578:	e3500000 	cmp	r0, #0                                        
    257c:	012fff1e 	bxeq	lr                                           
      rtems_disk_device *dd = dtab->minor [minor];                    
    2580:	e7900101 	ldr	r0, [r0, r1, lsl #2]                          
                                                                      
      if (dd != NULL && !lookup_only) {                               
    2584:	e3500000 	cmp	r0, #0                                        
    2588:	012fff1e 	bxeq	lr                                           
    258c:	e3520000 	cmp	r2, #0                                        
    2590:	112fff1e 	bxne	lr                                           
        if (!dd->deleted) {                                           
    2594:	e5d03040 	ldrb	r3, [r0, #64]	; 0x40                         
    2598:	e3530000 	cmp	r3, #0                                        
    259c:	1a000003 	bne	25b0 <get_disk_entry+0x6c>                    
          ++dd->uses;                                                 
    25a0:	e5903014 	ldr	r3, [r0, #20]                                 
    25a4:	e2833001 	add	r3, r3, #1                                    
    25a8:	e5803014 	str	r3, [r0, #20]                                 
    25ac:	e12fff1e 	bx	lr                                             
        } else {                                                      
          dd = NULL;                                                  
    25b0:	e1a00002 	mov	r0, r2                                        
      return dd;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return NULL;                                                        
}                                                                     
    25b4:	e12fff1e 	bx	lr                                             
                                                                      
      return dd;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return NULL;                                                        
    25b8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    25bc:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

000039a0 <get_sector>: */ static rtems_status_code get_sector(int fd, uint32_t sector_num, rtems_sector_data_t **sector) {
    39a0:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    rtems_sector_data_t *s;                                           
    ssize_t              n;                                           
    off_t                off;                                         
    off_t                new_off;                                     
                                                                      
    if (sector == NULL)                                               
    39a4:	e2528000 	subs	r8, r2, #0                                   
 */                                                                   
static rtems_status_code                                              
get_sector(int fd,                                                    
           uint32_t sector_num,                                       
           rtems_sector_data_t **sector)                              
{                                                                     
    39a8:	e1a05000 	mov	r5, r0                                        
    39ac:	e1a04001 	mov	r4, r1                                        
    off_t                off;                                         
    off_t                new_off;                                     
                                                                      
    if (sector == NULL)                                               
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    39b0:	03a00019 	moveq	r0, #25                                     
    rtems_sector_data_t *s;                                           
    ssize_t              n;                                           
    off_t                off;                                         
    off_t                new_off;                                     
                                                                      
    if (sector == NULL)                                               
    39b4:	08bd81f0 	popeq	{r4, r5, r6, r7, r8, pc}                    
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    off = sector_num * RTEMS_IDE_SECTOR_SIZE;                         
    39b8:	e1a03481 	lsl	r3, r1, #9                                    
    39bc:	e3a07000 	mov	r7, #0                                        
    39c0:	e1a06003 	mov	r6, r3                                        
    new_off = lseek(fd, off, SEEK_SET);                               
    39c4:	e1a01003 	mov	r1, r3                                        
    39c8:	e1a02007 	mov	r2, r7                                        
    39cc:	e1a03007 	mov	r3, r7                                        
    39d0:	eb0004eb 	bl	4d84 <lseek>                                   
    if (new_off != off) {                                             
    39d4:	e1510007 	cmp	r1, r7                                        
    39d8:	01500006 	cmpeq	r0, r6                                      
    39dc:	0a000001 	beq	39e8 <get_sector+0x48>                        
        return RTEMS_IO_ERROR;                                        
    39e0:	e3a0001b 	mov	r0, #27                                       <== NOT EXECUTED
    s->sector_num = sector_num;                                       
                                                                      
    *sector = s;                                                      
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
    39e4:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
    new_off = lseek(fd, off, SEEK_SET);                               
    if (new_off != off) {                                             
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
    39e8:	e3a00f81 	mov	r0, #516	; 0x204                              
    39ec:	eb00054b 	bl	4f20 <malloc>                                  
    if (s == NULL)                                                    
    39f0:	e2506000 	subs	r6, r0, #0                                   
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    39f4:	03a0001a 	moveq	r0, #26                                     
    if (new_off != off) {                                             
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s = (rtems_sector_data_t *) malloc(sizeof(rtems_sector_data_t) + RTEMS_IDE_SECTOR_SIZE);
    if (s == NULL)                                                    
    39f8:	08bd81f0 	popeq	{r4, r5, r6, r7, r8, pc}                    
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    n = read(fd, s->data, RTEMS_IDE_SECTOR_SIZE);                     
    39fc:	e1a00005 	mov	r0, r5                                        
    3a00:	e2861004 	add	r1, r6, #4                                    
    3a04:	e3a02c02 	mov	r2, #512	; 0x200                              
    3a08:	eb0007f0 	bl	59d0 <read>                                    
    if (n != RTEMS_IDE_SECTOR_SIZE)                                   
    3a0c:	e3500c02 	cmp	r0, #512	; 0x200                              
    {                                                                 
        free(s);                                                      
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s->sector_num = sector_num;                                       
    3a10:	05864000 	streq	r4, [r6]                                    
                                                                      
    *sector = s;                                                      
                                                                      
    return RTEMS_SUCCESSFUL;                                          
    3a14:	03a00000 	moveq	r0, #0                                      
        return RTEMS_IO_ERROR;                                        
    }                                                                 
                                                                      
    s->sector_num = sector_num;                                       
                                                                      
    *sector = s;                                                      
    3a18:	05886000 	streq	r6, [r8]                                    
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    n = read(fd, s->data, RTEMS_IDE_SECTOR_SIZE);                     
    if (n != RTEMS_IDE_SECTOR_SIZE)                                   
    3a1c:	08bd81f0 	popeq	{r4, r5, r6, r7, r8, pc}                    
    {                                                                 
        free(s);                                                      
    3a20:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    3a24:	eb0003be 	bl	4924 <free>                                    <== NOT EXECUTED
        return RTEMS_IO_ERROR;                                        
    3a28:	e3a0001b 	mov	r0, #27                                       <== NOT EXECUTED
    3a2c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
                                                                      

00002324 <getchark>: #include <rtems.h> #include <rtems/bspIo.h> int getchark(void) { if ( BSP_poll_char )
    2324:	e59f3020 	ldr	r3, [pc, #32]	; 234c <getchark+0x28>          <== NOT EXECUTED
    2328:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
    232c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
                                                                      
#include <rtems.h>                                                    
#include <rtems/bspIo.h>                                              
                                                                      
int getchark(void)                                                    
{                                                                     
    2330:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  if ( BSP_poll_char )                                                
    2334:	0a000002 	beq	2344 <getchark+0x20>                          <== NOT EXECUTED
    return (*BSP_poll_char)();                                        
    2338:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    233c:	e12fff13 	bx	r3                                             <== NOT EXECUTED
    2340:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      
  return -1;                                                          
    2344:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
}                                                                     
    2348:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

000025b8 <gettimeofday>: */ int gettimeofday( struct timeval *tp, void * __tz __attribute__((unused)) ) {
    25b8:	e92d40d0 	push	{r4, r6, r7, lr}                             
  /* struct timezone* tzp = (struct timezone*) __tz; */               
  if ( !tp )                                                          
    25bc:	e2504000 	subs	r4, r0, #0                                   
 */                                                                   
int gettimeofday(                                                     
  struct timeval  *tp,                                                
  void * __tz __attribute__((unused))                                 
)                                                                     
{                                                                     
    25c0:	e24dd008 	sub	sp, sp, #8                                    
  /* struct timezone* tzp = (struct timezone*) __tz; */               
  if ( !tp )                                                          
    25c4:	0a000015 	beq	2620 <gettimeofday+0x68>                      
)                                                                     
{                                                                     
  Timestamp_Control  snapshot_as_timestamp;                           
  Timestamp_Control *snapshot_as_timestamp_ptr;                       
                                                                      
  snapshot_as_timestamp_ptr =                                         
    25c8:	e59f1064 	ldr	r1, [pc, #100]	; 2634 <gettimeofday+0x7c>     
    25cc:	e1a0000d 	mov	r0, sp                                        
    25d0:	eb0013c0 	bl	74d8 <_TOD_Get_with_nanoseconds>               
  struct timeval  *tp,                                                
  struct timezone *tzp                                                
)                                                                     
{                                                                     
  return gettimeofday( tp, tzp );                                     
}                                                                     
    25d4:	e89000c0 	ldm	r0, {r6, r7}                                  
static inline void _Timestamp64_implementation_To_timeval(            
  const Timestamp64_Control *_timestamp,                              
  struct timeval            *_timeval                                 
)                                                                     
{                                                                     
  _timeval->tv_sec = (time_t) (*_timestamp / 1000000000U);            
    25d8:	e59f2058 	ldr	r2, [pc, #88]	; 2638 <gettimeofday+0x80>      
    25dc:	e3a03000 	mov	r3, #0                                        
    25e0:	e1a00006 	mov	r0, r6                                        
    25e4:	e1a01007 	mov	r1, r7                                        
    25e8:	eb005362 	bl	17378 <__divdi3>                               
  _timeval->tv_usec = (suseconds_t) ((*_timestamp % 1000000000U) / 1000U);
    25ec:	e59f2044 	ldr	r2, [pc, #68]	; 2638 <gettimeofday+0x80>      
    25f0:	e3a03000 	mov	r3, #0                                        
static inline void _Timestamp64_implementation_To_timeval(            
  const Timestamp64_Control *_timestamp,                              
  struct timeval            *_timeval                                 
)                                                                     
{                                                                     
  _timeval->tv_sec = (time_t) (*_timestamp / 1000000000U);            
    25f4:	e5840000 	str	r0, [r4]                                      
  _timeval->tv_usec = (suseconds_t) ((*_timestamp % 1000000000U) / 1000U);
    25f8:	e1a01007 	mov	r1, r7                                        
    25fc:	e1a00006 	mov	r0, r6                                        
    2600:	eb005497 	bl	17864 <__moddi3>                               
    2604:	e3a02ffa 	mov	r2, #1000	; 0x3e8                             
    2608:	e3a03000 	mov	r3, #0                                        
    260c:	eb005359 	bl	17378 <__divdi3>                               
    2610:	e5840004 	str	r0, [r4, #4]                                  
   *  Timezone information ignored by the OS proper.   Per email      
   *  with Eric Norum, this is how GNU/Linux, Solaris, and MacOS X    
   *  do it.  This puts us in good company.                           
   */                                                                 
                                                                      
  return 0;                                                           
    2614:	e3a00000 	mov	r0, #0                                        
}                                                                     
    2618:	e28dd008 	add	sp, sp, #8                                    
    261c:	e8bd80d0 	pop	{r4, r6, r7, pc}                              
  void * __tz __attribute__((unused))                                 
)                                                                     
{                                                                     
  /* struct timezone* tzp = (struct timezone*) __tz; */               
  if ( !tp )                                                          
    rtems_set_errno_and_return_minus_one( EFAULT );                   
    2620:	eb002c70 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    2624:	e3a0300e 	mov	r3, #14                                       <== NOT EXECUTED
    2628:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    262c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    2630:	eafffff8 	b	2618 <gettimeofday+0x60>                        <== NOT EXECUTED
                                                                      

00005100 <iproc>: * Process a single input character */ static int iproc (unsigned char c, struct rtems_termios_tty *tty) { if (tty->termios.c_iflag & ISTRIP)
    5100:	e5913030 	ldr	r3, [r1, #48]	; 0x30                          
    5104:	e3130020 	tst	r3, #32                                       
/*                                                                    
 * Process a single input character                                   
 */                                                                   
static int                                                            
iproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
    5108:	e92d4030 	push	{r4, r5, lr}                                 
    510c:	e20040ff 	and	r4, r0, #255	; 0xff                           
  if (tty->termios.c_iflag & ISTRIP)                                  
    c &= 0x7f;                                                        
    5110:	1200407f 	andne	r4, r0, #127	; 0x7f                         
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    5114:	e3130c02 	tst	r3, #512	; 0x200                              
/*                                                                    
 * Process a single input character                                   
 */                                                                   
static int                                                            
iproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
    5118:	e1a05001 	mov	r5, r1                                        
  if (tty->termios.c_iflag & ISTRIP)                                  
    c &= 0x7f;                                                        
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    511c:	0a000007 	beq	5140 <iproc+0x40>                             
    c = tolower (c);                                                  
    5120:	e59f21a0 	ldr	r2, [pc, #416]	; 52c8 <iproc+0x1c8>           
    5124:	e5922000 	ldr	r2, [r2]                                      
    5128:	e0822004 	add	r2, r2, r4                                    
    512c:	e5d22001 	ldrb	r2, [r2, #1]                                 
    5130:	e2022003 	and	r2, r2, #3                                    
    5134:	e3520001 	cmp	r2, #1                                        
    5138:	02844020 	addeq	r4, r4, #32                                 
    513c:	e20440ff 	and	r4, r4, #255	; 0xff                           
                                                                      
  if (c == '\r') {                                                    
    5140:	e354000d 	cmp	r4, #13                                       
    5144:	0a000014 	beq	519c <iproc+0x9c>                             
    if (tty->termios.c_iflag & IGNCR)                                 
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
      c = '\n';                                                       
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
    5148:	e354000a 	cmp	r4, #10                                       
    514c:	0a000036 	beq	522c <iproc+0x12c>                            
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
    5150:	e3540000 	cmp	r4, #0                                        
    5154:	1a000016 	bne	51b4 <iproc+0xb4>                             
  }                                                                   
                                                                      
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    5158:	e59f316c 	ldr	r3, [pc, #364]	; 52cc <iproc+0x1cc>           
    515c:	e5932008 	ldr	r2, [r3, #8]                                  
    5160:	e5953020 	ldr	r3, [r5, #32]                                 
    5164:	e2422001 	sub	r2, r2, #1                                    
    5168:	e1530002 	cmp	r3, r2                                        
    516c:	2a000008 	bcs	5194 <iproc+0x94>                             
    if (tty->termios.c_lflag & ECHO)                                  
    5170:	e595203c 	ldr	r2, [r5, #60]	; 0x3c                          
    5174:	e3120008 	tst	r2, #8                                        
    5178:	1a00002e 	bne	5238 <iproc+0x138>                            
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
    517c:	e595101c 	ldr	r1, [r5, #28]                                 <== NOT EXECUTED
    5180:	e2832001 	add	r2, r3, #1                                    <== NOT EXECUTED
    5184:	e7c14003 	strb	r4, [r1, r3]                                 <== NOT EXECUTED
  }                                                                   
  return 0;                                                           
    5188:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
    518c:	e5852020 	str	r2, [r5, #32]                                 <== NOT EXECUTED
    5190:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
  }                                                                   
  return 0;                                                           
    5194:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
    5198:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
                                                                      
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
    519c:	e3130080 	tst	r3, #128	; 0x80                               
      return 0;                                                       
    51a0:	13a00000 	movne	r0, #0                                      
                                                                      
  if (tty->termios.c_iflag & IUCLC)                                   
    c = tolower (c);                                                  
                                                                      
  if (c == '\r') {                                                    
    if (tty->termios.c_iflag & IGNCR)                                 
    51a4:	18bd8030 	popne	{r4, r5, pc}                                
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
      c = '\n';                                                       
    51a8:	e3130c01 	tst	r3, #256	; 0x100                              
    51ac:	03a0400d 	moveq	r4, #13                                     
    51b0:	13a0400a 	movne	r4, #10                                     
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
    51b4:	e595303c 	ldr	r3, [r5, #60]	; 0x3c                          
    51b8:	e3130002 	tst	r3, #2                                        
    51bc:	0affffe5 	beq	5158 <iproc+0x58>                             
    if (c == tty->termios.c_cc[VERASE]) {                             
    51c0:	e5d52043 	ldrb	r2, [r5, #67]	; 0x43                         
    51c4:	e1520004 	cmp	r2, r4                                        
    51c8:	0a000039 	beq	52b4 <iproc+0x1b4>                            
      erase (tty, 0);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
    51cc:	e5d52044 	ldrb	r2, [r5, #68]	; 0x44                         
    51d0:	e1520004 	cmp	r2, r4                                        
    51d4:	0a000025 	beq	5270 <iproc+0x170>                            
      erase (tty, 1);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
    51d8:	e5d52045 	ldrb	r2, [r5, #69]	; 0x45                         
    51dc:	e1520004 	cmp	r2, r4                                        
      return 1;                                                       
    51e0:	03a00001 	moveq	r0, #1                                      
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
      erase (tty, 1);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
    51e4:	08bd8030 	popeq	{r4, r5, pc}                                
      return 1;                                                       
    } else if (c == '\n') {                                           
    51e8:	e354000a 	cmp	r4, #10                                       
    51ec:	0a000024 	beq	5284 <iproc+0x184>                            
      if (tty->termios.c_lflag & (ECHO | ECHONL))                     
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
      return 1;                                                       
    } else if ((c == tty->termios.c_cc[VEOL]) ||                      
    51f0:	e5d5204c 	ldrb	r2, [r5, #76]	; 0x4c                         
    51f4:	e1520004 	cmp	r2, r4                                        
    51f8:	0a000002 	beq	5208 <iproc+0x108>                            
    51fc:	e5d52051 	ldrb	r2, [r5, #81]	; 0x51                         
    5200:	e1520004 	cmp	r2, r4                                        
    5204:	1affffd3 	bne	5158 <iproc+0x58>                             
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
    5208:	e3130008 	tst	r3, #8                                        <== NOT EXECUTED
    520c:	1a000013 	bne	5260 <iproc+0x160>                            <== NOT EXECUTED
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
    5210:	e285101c 	add	r1, r5, #28                                   <== NOT EXECUTED
    5214:	e891000a 	ldm	r1, {r1, r3}                                  <== NOT EXECUTED
    5218:	e2832001 	add	r2, r3, #1                                    <== NOT EXECUTED
    521c:	e7c14003 	strb	r4, [r1, r3]                                 <== NOT EXECUTED
      return 1;                                                       
    5220:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
      return 1;                                                       
    } else if ((c == tty->termios.c_cc[VEOL]) ||                      
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
    5224:	e5852020 	str	r2, [r5, #32]                                 <== NOT EXECUTED
      return 1;                                                       
    5228:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
    if (tty->termios.c_iflag & IGNCR)                                 
      return 0;                                                       
    if (tty->termios.c_iflag & ICRNL)                                 
      c = '\n';                                                       
  } else if ((c == '\n') && (tty->termios.c_iflag & INLCR)) {         
    c = '\r';                                                         
    522c:	e3130040 	tst	r3, #64	; 0x40                                
    5230:	13a0400d 	movne	r4, #13                                     
    5234:	eaffffde 	b	51b4 <iproc+0xb4>                               
  /*                                                                  
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
    5238:	e1a00004 	mov	r0, r4                                        
    523c:	e1a01005 	mov	r1, r5                                        
    5240:	ebffff04 	bl	4e58 <echo>                                    
    5244:	e5953020 	ldr	r3, [r5, #32]                                 
    tty->cbuf[tty->ccount++] = c;                                     
    5248:	e595101c 	ldr	r1, [r5, #28]                                 
    524c:	e2832001 	add	r2, r3, #1                                    
    5250:	e7c14003 	strb	r4, [r1, r3]                                 
  }                                                                   
  return 0;                                                           
    5254:	e3a00000 	mov	r0, #0                                        
   * FIXME: Should do IMAXBEL handling somehow                        
   */                                                                 
  if (tty->ccount < (CBUFSIZE-1)) {                                   
    if (tty->termios.c_lflag & ECHO)                                  
      echo (c, tty);                                                  
    tty->cbuf[tty->ccount++] = c;                                     
    5258:	e5852020 	str	r2, [r5, #32]                                 
    525c:	e8bd8030 	pop	{r4, r5, pc}                                  
      tty->cbuf[tty->ccount++] = c;                                   
      return 1;                                                       
    } else if ((c == tty->termios.c_cc[VEOL]) ||                      
               (c == tty->termios.c_cc[VEOL2])) {                     
      if (tty->termios.c_lflag & ECHO)                                
        echo (c, tty);                                                
    5260:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    5264:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
    5268:	ebfffefa 	bl	4e58 <echo>                                    <== NOT EXECUTED
    526c:	eaffffe7 	b	5210 <iproc+0x110>                              <== NOT EXECUTED
    if (c == tty->termios.c_cc[VERASE]) {                             
      erase (tty, 0);                                                 
      return 0;                                                       
    }                                                                 
    else if (c == tty->termios.c_cc[VKILL]) {                         
      erase (tty, 1);                                                 
    5270:	e1a00005 	mov	r0, r5                                        
    5274:	e3a01001 	mov	r1, #1                                        
    5278:	ebffff1b 	bl	4eec <erase>                                   
      return 0;                                                       
    527c:	e3a00000 	mov	r0, #0                                        
    5280:	e8bd8030 	pop	{r4, r5, pc}                                  
    }                                                                 
    else if (c == tty->termios.c_cc[VEOF]) {                          
      return 1;                                                       
    } else if (c == '\n') {                                           
      if (tty->termios.c_lflag & (ECHO | ECHONL))                     
    5284:	e3130048 	tst	r3, #72	; 0x48                                
        echo (c, tty);                                                
    5288:	11a00004 	movne	r0, r4                                      
    528c:	11a01005 	movne	r1, r5                                      
    5290:	1bfffef0 	blne	4e58 <echo>                                  
      tty->cbuf[tty->ccount++] = c;                                   
    5294:	e285101c 	add	r1, r5, #28                                   
    5298:	e891000a 	ldm	r1, {r1, r3}                                  
    529c:	e3a0000a 	mov	r0, #10                                       
    52a0:	e2832001 	add	r2, r3, #1                                    
    52a4:	e7c10003 	strb	r0, [r1, r3]                                 
      return 1;                                                       
    52a8:	e3a00001 	mov	r0, #1                                        
    else if (c == tty->termios.c_cc[VEOF]) {                          
      return 1;                                                       
    } else if (c == '\n') {                                           
      if (tty->termios.c_lflag & (ECHO | ECHONL))                     
        echo (c, tty);                                                
      tty->cbuf[tty->ccount++] = c;                                   
    52ac:	e5852020 	str	r2, [r5, #32]                                 
      return 1;                                                       
    52b0:	e8bd8030 	pop	{r4, r5, pc}                                  
    c = '\r';                                                         
  }                                                                   
                                                                      
  if ((c != '\0') && (tty->termios.c_lflag & ICANON)) {               
    if (c == tty->termios.c_cc[VERASE]) {                             
      erase (tty, 0);                                                 
    52b4:	e1a00005 	mov	r0, r5                                        
    52b8:	e3a01000 	mov	r1, #0                                        
    52bc:	ebffff0a 	bl	4eec <erase>                                   
      return 0;                                                       
    52c0:	e3a00000 	mov	r0, #0                                        
    52c4:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      

00018b80 <kill>: #if !defined(RTEMS_POSIX_API) int kill( pid_t pid, int sig ) { return 0; }
   18b80:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   18b84:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

0000284c <malloc>: size_t size ) { void *return_this; MSBUMP(malloc_calls, 1);
    284c:	e59f30cc 	ldr	r3, [pc, #204]	; 2920 <malloc+0xd4>           
    2850:	e5932004 	ldr	r2, [r3, #4]                                  
    2854:	e2822001 	add	r2, r2, #1                                    
#include "malloc_p.h"                                                 
                                                                      
void *malloc(                                                         
  size_t  size                                                        
)                                                                     
{                                                                     
    2858:	e92d4070 	push	{r4, r5, r6, lr}                             
    285c:	e1a04000 	mov	r4, r0                                        
  void        *return_this;                                           
                                                                      
  MSBUMP(malloc_calls, 1);                                            
    2860:	e5832004 	str	r2, [r3, #4]                                  
                                                                      
  /*                                                                  
   *  If some free's have been deferred, then do them now.            
   */                                                                 
  malloc_deferred_frees_process();                                    
    2864:	ebffffbb 	bl	2758 <malloc_deferred_frees_process>           
                                                                      
  /*                                                                  
   * Validate the parameters                                          
   */                                                                 
  if ( !size )                                                        
    2868:	e3540000 	cmp	r4, #0                                        
    return (void *) 0;                                                
    286c:	01a06004 	moveq	r6, r4                                      
  malloc_deferred_frees_process();                                    
                                                                      
  /*                                                                  
   * Validate the parameters                                          
   */                                                                 
  if ( !size )                                                        
    2870:	0a000018 	beq	28d8 <malloc+0x8c>                            
    return (void *) 0;                                                
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
    2874:	e59f30a8 	ldr	r3, [pc, #168]	; 2924 <malloc+0xd8>           
    2878:	e5933000 	ldr	r3, [r3]                                      
    287c:	e3530003 	cmp	r3, #3                                        
    2880:	0a000016 	beq	28e0 <malloc+0x94>                            
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(                  
  Heap_Control *heap,                                                 
  uintptr_t size                                                      
)                                                                     
{                                                                     
  return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
    2884:	e59f509c 	ldr	r5, [pc, #156]	; 2928 <malloc+0xdc>           
    2888:	e3a02000 	mov	r2, #0                                        
    288c:	e5950000 	ldr	r0, [r5]                                      
    2890:	e1a01004 	mov	r1, r4                                        
    2894:	e1a03002 	mov	r3, r2                                        
    2898:	eb001659 	bl	8204 <_Protected_heap_Allocate_aligned_with_boundary>
   * If this fails then return a NULL pointer.                        
   */                                                                 
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
                                                                      
  if ( !return_this ) {                                               
    289c:	e2506000 	subs	r6, r0, #0                                   
    28a0:	0a000013 	beq	28f4 <malloc+0xa8>                            
  }                                                                   
                                                                      
  /*                                                                  
   *  If the user wants us to dirty the allocated memory, then do it. 
   */                                                                 
  if ( rtems_malloc_dirty_helper )                                    
    28a4:	e59f3080 	ldr	r3, [pc, #128]	; 292c <malloc+0xe0>           
    28a8:	e5933000 	ldr	r3, [r3]                                      
    28ac:	e3530000 	cmp	r3, #0                                        
    (*rtems_malloc_dirty_helper)( return_this, size );                
    28b0:	11a00006 	movne	r0, r6                                      
    28b4:	11a01004 	movne	r1, r4                                      
    28b8:	11a0e00f 	movne	lr, pc                                      
    28bc:	112fff13 	bxne	r3                                           
                                                                      
  /*                                                                  
   *  If configured, update the statistics                            
   */                                                                 
  if ( rtems_malloc_statistics_helpers )                              
    28c0:	e59f3068 	ldr	r3, [pc, #104]	; 2930 <malloc+0xe4>           
    28c4:	e5933000 	ldr	r3, [r3]                                      
    28c8:	e3530000 	cmp	r3, #0                                        
    (*rtems_malloc_statistics_helpers->at_malloc)(return_this);       
    28cc:	11a00006 	movne	r0, r6                                      
    28d0:	11a0e00f 	movne	lr, pc                                      
    28d4:	1593f004 	ldrne	pc, [r3, #4]                                
                                                                      
  return return_this;                                                 
}                                                                     
    28d8:	e1a00006 	mov	r0, r6                                        
    28dc:	e8bd8070 	pop	{r4, r5, r6, pc}                              
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
       !malloc_is_system_state_OK() )                                 
    28e0:	ebffff8f 	bl	2724 <malloc_is_system_state_OK>               
    return (void *) 0;                                                
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
    28e4:	e3500000 	cmp	r0, #0                                        
       !malloc_is_system_state_OK() )                                 
    return NULL;                                                      
    28e8:	01a06000 	moveq	r6, r0                                      
    return (void *) 0;                                                
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if not in correct system state.
   */                                                                 
  if ( _System_state_Is_up(_System_state_Get()) &&                    
    28ec:	1affffe4 	bne	2884 <malloc+0x38>                            
    28f0:	eafffff8 	b	28d8 <malloc+0x8c>                              <== NOT EXECUTED
   */                                                                 
                                                                      
  return_this = _Protected_heap_Allocate( RTEMS_Malloc_Heap, size );  
                                                                      
  if ( !return_this ) {                                               
    return_this = (*rtems_malloc_extend_handler)( RTEMS_Malloc_Heap, size );
    28f4:	e5950000 	ldr	r0, [r5]                                      
    28f8:	e1a01004 	mov	r1, r4                                        
    28fc:	e59f3030 	ldr	r3, [pc, #48]	; 2934 <malloc+0xe8>            
    2900:	e1a0e00f 	mov	lr, pc                                        
    2904:	e593f000 	ldr	pc, [r3]                                      
    if ( !return_this ) {                                             
    2908:	e2506000 	subs	r6, r0, #0                                   
    290c:	1affffe4 	bne	28a4 <malloc+0x58>                            
      errno = ENOMEM;                                                 
    2910:	eb002bb4 	bl	d7e8 <__errno>                                 
    2914:	e3a0300c 	mov	r3, #12                                       
    2918:	e5803000 	str	r3, [r0]                                      
      return (void *) 0;                                              
    291c:	eaffffed 	b	28d8 <malloc+0x8c>                              
                                                                      

0000cdb8 <memfile_open>: rtems_libio_t *iop, const char *pathname, int oflag, mode_t mode ) {
    cdb8:	e92d4030 	push	{r4, r5, lr}                                 
  the_jnode = iop->pathinfo.node_access;                              
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
    cdbc:	e590c00c 	ldr	ip, [r0, #12]                                 
    cdc0:	e21cc004 	ands	ip, ip, #4                                   
  rtems_libio_t *iop,                                                 
  const char    *pathname,                                            
  int            oflag,                                               
  mode_t         mode                                                 
)                                                                     
{                                                                     
    cdc4:	e24dd004 	sub	sp, sp, #4                                    
  IMFS_jnode_t  *the_jnode;                                           
                                                                      
  the_jnode = iop->pathinfo.node_access;                              
    cdc8:	e5902018 	ldr	r2, [r0, #24]                                 
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
    cdcc:	0a000014 	beq	ce24 <memfile_open+0x6c>                      
    cdd0:	e592304c 	ldr	r3, [r2, #76]	; 0x4c                          
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    cdd4:	e5933000 	ldr	r3, [r3]                                      
    cdd8:	e3530005 	cmp	r3, #5                                        
    if ((count != 0)                                                  
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
    cddc:	13a00000 	movne	r0, #0                                      
                                                                      
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    cde0:	0a000001 	beq	cdec <memfile_open+0x34>                      
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
    cde4:	e28dd004 	add	sp, sp, #4                                    
    cde8:	e8bd8030 	pop	{r4, r5, pc}                                  
  /*                                                                  
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    uint32_t   count = the_jnode->info.linearfile.size;               
    cdec:	e592c050 	ldr	ip, [r2, #80]	; 0x50                          <== NOT EXECUTED
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
                                                                      
    the_jnode->control = &IMFS_node_control_memfile;                  
    the_jnode->info.file.size            = 0;                         
    the_jnode->info.file.indirect        = 0;                         
    cdf0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    uint32_t   count = the_jnode->info.linearfile.size;               
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
                                                                      
    the_jnode->control = &IMFS_node_control_memfile;                  
    cdf4:	e59f0050 	ldr	r0, [pc, #80]	; ce4c <memfile_open+0x94>      <== NOT EXECUTED
    the_jnode->info.file.size            = 0;                         
    cdf8:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
    cdfc:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
    the_jnode->info.file.indirect        = 0;                         
    the_jnode->info.file.doubly_indirect = 0;                         
    the_jnode->info.file.triply_indirect = 0;                         
    if ((count != 0)                                                  
    ce00:	e15c0001 	cmp	ip, r1                                        <== NOT EXECUTED
   * Perform 'copy on write' for linear files                         
   */                                                                 
  if ((iop->flags & LIBIO_FLAGS_WRITE)                                
   && (IMFS_type( the_jnode ) == IMFS_LINEAR_FILE)) {                 
    uint32_t   count = the_jnode->info.linearfile.size;               
    const unsigned char *buffer = the_jnode->info.linearfile.direct;  
    ce04:	e5923058 	ldr	r3, [r2, #88]	; 0x58                          <== NOT EXECUTED
                                                                      
    the_jnode->control = &IMFS_node_control_memfile;                  
    ce08:	e582004c 	str	r0, [r2, #76]	; 0x4c                          <== NOT EXECUTED
    the_jnode->info.file.size            = 0;                         
    ce0c:	e5824050 	str	r4, [r2, #80]	; 0x50                          <== NOT EXECUTED
    ce10:	e5825054 	str	r5, [r2, #84]	; 0x54                          <== NOT EXECUTED
    the_jnode->info.file.indirect        = 0;                         
    ce14:	e5821058 	str	r1, [r2, #88]	; 0x58                          <== NOT EXECUTED
    the_jnode->info.file.doubly_indirect = 0;                         
    ce18:	e582105c 	str	r1, [r2, #92]	; 0x5c                          <== NOT EXECUTED
    the_jnode->info.file.triply_indirect = 0;                         
    ce1c:	e5821060 	str	r1, [r2, #96]	; 0x60                          <== NOT EXECUTED
    if ((count != 0)                                                  
    ce20:	1a000001 	bne	ce2c <memfile_open+0x74>                      <== NOT EXECUTED
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
    ce24:	e1a0000c 	mov	r0, ip                                        
    ce28:	eaffffed 	b	cde4 <memfile_open+0x2c>                        
    the_jnode->info.file.size            = 0;                         
    the_jnode->info.file.indirect        = 0;                         
    the_jnode->info.file.doubly_indirect = 0;                         
    the_jnode->info.file.triply_indirect = 0;                         
    if ((count != 0)                                                  
     && (IMFS_memfile_write(the_jnode, 0, buffer, count) == -1))      
    ce2c:	e1a00002 	mov	r0, r2                                        <== NOT EXECUTED
    ce30:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    ce34:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
    ce38:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    ce3c:	ebffff5a 	bl	cbac <IMFS_memfile_write>                      <== NOT EXECUTED
    ce40:	e3700001 	cmn	r0, #1                                        <== NOT EXECUTED
        return -1;                                                    
  }                                                                   
                                                                      
  return 0;                                                           
    ce44:	13a00000 	movne	r0, #0                                      <== NOT EXECUTED
    ce48:	eaffffe5 	b	cde4 <memfile_open+0x2c>                        <== NOT EXECUTED
                                                                      

00002a28 <mount>: const char *target, const char *filesystemtype, rtems_filesystem_options_t options, const void *data ) {
    2a28:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  int rv = 0;                                                         
                                                                      
  if (                                                                
    2a2c:	e3530001 	cmp	r3, #1                                        
  const char                 *target,                                 
  const char                 *filesystemtype,                         
  rtems_filesystem_options_t options,                                 
  const void                 *data                                    
)                                                                     
{                                                                     
    2a30:	e24dd05c 	sub	sp, sp, #92	; 0x5c                            
    2a34:	e1a07003 	mov	r7, r3                                        
    2a38:	e1a08000 	mov	r8, r0                                        
    2a3c:	e1a06001 	mov	r6, r1                                        
    2a40:	e1a0b002 	mov	fp, r2                                        
  int rv = 0;                                                         
                                                                      
  if (                                                                
    2a44:	8a000088 	bhi	2c6c <mount+0x244>                            
    options == RTEMS_FILESYSTEM_READ_ONLY                             
      || options == RTEMS_FILESYSTEM_READ_WRITE                       
  ) {                                                                 
    rtems_filesystem_fsmount_me_t fsmount_me_h =                      
    2a48:	e1a00002 	mov	r0, r2                                        
    2a4c:	eb002128 	bl	aef4 <rtems_filesystem_get_mount_handler>      
      rtems_filesystem_get_mount_handler( filesystemtype );           
                                                                      
    if ( fsmount_me_h != NULL ) {                                     
    2a50:	e3500000 	cmp	r0, #0                                        
    2a54:	e58d0004 	str	r0, [sp, #4]                                  
    2a58:	0a000083 	beq	2c6c <mount+0x244>                            
  const char *target_or_null,                                         
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
    2a5c:	e3560000 	cmp	r6, #0                                        
    2a60:	0a000077 	beq	2c44 <mount+0x21c>                            
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
                                                                      
int mount(                                                            
    2a64:	e1a00006 	mov	r0, r6                                        
    2a68:	eb00311a 	bl	eed8 <strlen>                                  
    2a6c:	e2800001 	add	r0, r0, #1                                    
    2a70:	e58d6008 	str	r6, [sp, #8]                                  
    2a74:	e58d0000 	str	r0, [sp]                                      
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
  size_t filesystemtype_size = strlen( filesystemtype ) + 1;          
    2a78:	e1a0000b 	mov	r0, fp                                        
    2a7c:	eb003115 	bl	eed8 <strlen>                                  
  size_t source_size = source_or_null != NULL ?                       
    strlen( source_or_null ) + 1 : 0;                                 
    2a80:	e3580000 	cmp	r8, #0                                        
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
  size_t filesystemtype_size = strlen( filesystemtype ) + 1;          
    2a84:	e1a09000 	mov	r9, r0                                        
  size_t source_size = source_or_null != NULL ?                       
    strlen( source_or_null ) + 1 : 0;                                 
    2a88:	01a0a008 	moveq	sl, r8                                      
    2a8c:	0a000002 	beq	2a9c <mount+0x74>                             
    2a90:	e1a00008 	mov	r0, r8                                        
    2a94:	eb00310f 	bl	eed8 <strlen>                                  
    2a98:	e280a001 	add	sl, r0, #1                                    
  size_t target_size = strlen( target ) + 1;                          
  size_t size = sizeof( rtems_filesystem_mount_table_entry_t )        
    + filesystemtype_size + source_size + target_size                 
    2a9c:	e59d3000 	ldr	r3, [sp]                                      
    2aa0:	e0831009 	add	r1, r3, r9                                    
    2aa4:	e2811065 	add	r1, r1, #101	; 0x65                           
    + sizeof( rtems_filesystem_global_location_t );                   
  rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 
    2aa8:	e3a00001 	mov	r0, #1                                        
    2aac:	e081100a 	add	r1, r1, sl                                    
    2ab0:	ebfffdfa 	bl	22a0 <calloc>                                  
                                                                      
  if ( mt_entry != NULL ) {                                           
    2ab4:	e2504000 	subs	r4, r0, #0                                   
    2ab8:	0a000066 	beq	2c58 <mount+0x230>                            
    rtems_filesystem_global_location_t *mt_fs_root =                  
      (rtems_filesystem_global_location_t *)                          
        ((char *) mt_entry + sizeof( *mt_entry ));                    
    char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );          
    2abc:	e2845064 	add	r5, r4, #100	; 0x64                           
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
  size_t filesystemtype_size = strlen( filesystemtype ) + 1;          
    2ac0:	e2899001 	add	r9, r9, #1                                    
    rtems_filesystem_global_location_t *mt_fs_root =                  
      (rtems_filesystem_global_location_t *)                          
        ((char *) mt_entry + sizeof( *mt_entry ));                    
    char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );          
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
    2ac4:	e1a00005 	mov	r0, r5                                        
    2ac8:	e1a0100b 	mov	r1, fp                                        
    2acc:	e1a02009 	mov	r2, r9                                        
    2ad0:	eb002d7e 	bl	e0d0 <memcpy>                                  
    mt_entry->type = str;                                             
    str += filesystemtype_size;                                       
                                                                      
    if ( source_or_null != NULL ) {                                   
    2ad4:	e3580000 	cmp	r8, #0                                        
      (rtems_filesystem_global_location_t *)                          
        ((char *) mt_entry + sizeof( *mt_entry ));                    
    char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );          
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
    mt_entry->type = str;                                             
    2ad8:	e5845034 	str	r5, [r4, #52]	; 0x34                          
    + filesystemtype_size + source_size + target_size                 
    + sizeof( rtems_filesystem_global_location_t );                   
  rtems_filesystem_mount_table_entry_t *mt_entry = calloc( 1, size ); 
                                                                      
  if ( mt_entry != NULL ) {                                           
    rtems_filesystem_global_location_t *mt_fs_root =                  
    2adc:	e284b040 	add	fp, r4, #64	; 0x40                            
        ((char *) mt_entry + sizeof( *mt_entry ));                    
    char *str = (char *) mt_fs_root + sizeof( *mt_fs_root );          
                                                                      
    memcpy( str, filesystemtype, filesystemtype_size );               
    mt_entry->type = str;                                             
    str += filesystemtype_size;                                       
    2ae0:	e0855009 	add	r5, r5, r9                                    
                                                                      
    if ( source_or_null != NULL ) {                                   
    2ae4:	0a000005 	beq	2b00 <mount+0xd8>                             
      memcpy( str, source_or_null, source_size );                     
    2ae8:	e1a00005 	mov	r0, r5                                        
    2aec:	e1a01008 	mov	r1, r8                                        
    2af0:	e1a0200a 	mov	r2, sl                                        
    2af4:	eb002d75 	bl	e0d0 <memcpy>                                  
      mt_entry->dev = str;                                            
    2af8:	e5845038 	str	r5, [r4, #56]	; 0x38                          
      str += source_size;                                             
    2afc:	e085500a 	add	r5, r5, sl                                    
    }                                                                 
                                                                      
    memcpy( str, target, target_size );                               
    2b00:	e59d1008 	ldr	r1, [sp, #8]                                  
    2b04:	e59d2000 	ldr	r2, [sp]                                      
    2b08:	e1a00005 	mov	r0, r5                                        
    2b0c:	eb002d6f 	bl	e0d0 <memcpy>                                  
    mt_entry->target = str;                                           
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
    mt_entry->mt_fs_root = mt_fs_root;                                
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
    2b10:	e59fe21c 	ldr	lr, [pc, #540]	; 2d34 <mount+0x30c>           
                                                                      
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
    2b14:	e3a0c001 	mov	ip, #1                                        
  void                *starting_address,                              
  size_t               number_nodes,                                  
  size_t               node_size                                      
)                                                                     
{                                                                     
  _Chain_Initialize( the_chain, starting_address, number_nodes, node_size );
    2b18:	e2840014 	add	r0, r4, #20                                   
    2b1c:	e1a0100b 	mov	r1, fp                                        
    2b20:	e1a0200c 	mov	r2, ip                                        
    2b24:	e3a03024 	mov	r3, #36	; 0x24                                
      mt_entry->dev = str;                                            
      str += source_size;                                             
    }                                                                 
                                                                      
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
    2b28:	e5845030 	str	r5, [r4, #48]	; 0x30                          
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
    2b2c:	e5c4c028 	strb	ip, [r4, #40]	; 0x28                         
    mt_entry->mt_fs_root = mt_fs_root;                                
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
    2b30:	e584e02c 	str	lr, [r4, #44]	; 0x2c                          
                                                                      
    mt_fs_root->location.mt_entry = mt_entry;                         
    mt_fs_root->reference_count = 1;                                  
    2b34:	e584c058 	str	ip, [r4, #88]	; 0x58                          
    memcpy( str, target, target_size );                               
    mt_entry->target = str;                                           
    str += target_size;                                               
                                                                      
    mt_entry->mounted = true;                                         
    mt_entry->mt_fs_root = mt_fs_root;                                
    2b38:	e584b024 	str	fp, [r4, #36]	; 0x24                          
    mt_entry->pathconf_limits_and_options = &rtems_filesystem_default_pathconf;
                                                                      
    mt_fs_root->location.mt_entry = mt_entry;                         
    2b3c:	e5844054 	str	r4, [r4, #84]	; 0x54                          
    2b40:	eb00115a 	bl	70b0 <_Chain_Initialize>                       
        filesystemtype,                                               
        &target_length                                                
      );                                                              
                                                                      
      if ( mt_entry != NULL ) {                                       
        mt_entry->writeable = options == RTEMS_FILESYSTEM_READ_WRITE; 
    2b44:	e5c47029 	strb	r7, [r4, #41]	; 0x29                         
                                                                      
        rv = (*fsmount_me_h)( mt_entry, data );                       
    2b48:	e1a00004 	mov	r0, r4                                        
    2b4c:	e59d1080 	ldr	r1, [sp, #128]	; 0x80                         
    2b50:	e59d3004 	ldr	r3, [sp, #4]                                  
    2b54:	e1a0e00f 	mov	lr, pc                                        
    2b58:	e12fff13 	bx	r3                                             
        if ( rv == 0 ) {                                              
    2b5c:	e2505000 	subs	r5, r0, #0                                   
    2b60:	1a000024 	bne	2bf8 <mount+0x1d0>                            
          if ( target != NULL ) {                                     
    2b64:	e3560000 	cmp	r6, #0                                        
    2b68:	0a000044 	beq	2c80 <mount+0x258>                            
{                                                                     
  int rv = 0;                                                         
  rtems_filesystem_eval_path_context_t ctx;                           
  int eval_flags = RTEMS_FS_PERMS_RWX                                 
    | RTEMS_FS_FOLLOW_LINK;                                           
  rtems_filesystem_location_info_t *currentloc =                      
    2b6c:	e1a01006 	mov	r1, r6                                        
    2b70:	e3a0201f 	mov	r2, #31                                       
    2b74:	e28d000c 	add	r0, sp, #12                                   
    2b78:	eb00033d 	bl	3874 <rtems_filesystem_eval_path_start>        
                                                                      
static inline bool rtems_filesystem_location_is_instance_root(        
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
    2b7c:	e5902014 	ldr	r2, [r0, #20]                                 
                                                                      
  return (*mt_entry->ops->are_nodes_equal_h)(                         
    2b80:	e592300c 	ldr	r3, [r2, #12]                                 
    2b84:	e5921024 	ldr	r1, [r2, #36]	; 0x24                          
    2b88:	e1a0e00f 	mov	lr, pc                                        
    2b8c:	e593f010 	ldr	pc, [r3, #16]                                 
    rtems_filesystem_eval_path_start( &ctx, target, eval_flags );     
                                                                      
  if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {  
    2b90:	e3500000 	cmp	r0, #0                                        
    2b94:	1a00005a 	bne	2d04 <mount+0x2dc>                            
static inline void rtems_filesystem_eval_path_extract_currentloc(     
  rtems_filesystem_eval_path_context_t *ctx,                          
  rtems_filesystem_location_info_t *get                               
)                                                                     
{                                                                     
  rtems_filesystem_location_copy_and_detach(                          
    2b98:	e28d1024 	add	r1, sp, #36	; 0x24                            
    2b9c:	e28d0044 	add	r0, sp, #68	; 0x44                            
    2ba0:	eb0003f7 	bl	3b84 <rtems_filesystem_location_copy_and_detach>
    rtems_filesystem_location_info_t targetloc;                       
    rtems_filesystem_global_location_t *mt_point_node;                
                                                                      
    rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
    mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
    2ba4:	e28d0044 	add	r0, sp, #68	; 0x44                            
    2ba8:	eb000477 	bl	3d8c <rtems_filesystem_location_transform_to_global>
    mt_entry->mt_point_node = mt_point_node;                          
    rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
    2bac:	e5903014 	ldr	r3, [r0, #20]                                 
  if ( !rtems_filesystem_location_is_instance_root( currentloc ) ) {  
    rtems_filesystem_location_info_t targetloc;                       
    rtems_filesystem_global_location_t *mt_point_node;                
                                                                      
    rtems_filesystem_eval_path_extract_currentloc( &ctx, &targetloc );
    mt_point_node = rtems_filesystem_location_transform_to_global( &targetloc );
    2bb0:	e1a06000 	mov	r6, r0                                        
    mt_entry->mt_point_node = mt_point_node;                          
    2bb4:	e5840020 	str	r0, [r4, #32]                                 
    rv = (*mt_point_node->location.mt_entry->ops->mount_h)( mt_entry );
    2bb8:	e593300c 	ldr	r3, [r3, #12]                                 
    2bbc:	e1a00004 	mov	r0, r4                                        
    2bc0:	e1a0e00f 	mov	lr, pc                                        
    2bc4:	e593f030 	ldr	pc, [r3, #48]	; 0x30                          
    if ( rv == 0 ) {                                                  
    2bc8:	e2505000 	subs	r5, r0, #0                                   
    2bcc:	0a00000e 	beq	2c0c <mount+0x1e4>                            
        &rtems_filesystem_mount_table,                                
        &mt_entry->mt_node                                            
      );                                                              
      rtems_filesystem_mt_unlock();                                   
    } else {                                                          
      rtems_filesystem_global_location_release( mt_point_node );      
    2bd0:	e1a00006 	mov	r0, r6                                        
    2bd4:	eb00041f 	bl	3c58 <rtems_filesystem_global_location_release>
  } else {                                                            
    rtems_filesystem_eval_path_error( &ctx, EBUSY );                  
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
    2bd8:	e28d000c 	add	r0, sp, #12                                   
    2bdc:	eb00032e 	bl	389c <rtems_filesystem_eval_path_cleanup>      
            rv = register_subordinate_file_system( mt_entry, target );
          } else {                                                    
            rv = register_root_file_system( mt_entry );               
          }                                                           
                                                                      
          if ( rv != 0 ) {                                            
    2be0:	e3550000 	cmp	r5, #0                                        
    2be4:	0a000005 	beq	2c00 <mount+0x1d8>                            
            (*mt_entry->ops->fsunmount_me_h)( mt_entry );             
    2be8:	e594300c 	ldr	r3, [r4, #12]                                 
    2bec:	e1a00004 	mov	r0, r4                                        
    2bf0:	e1a0e00f 	mov	lr, pc                                        
    2bf4:	e593f03c 	ldr	pc, [r3, #60]	; 0x3c                          
          }                                                           
        }                                                             
                                                                      
        if ( rv != 0 ) {                                              
          free( mt_entry );                                           
    2bf8:	e1a00004 	mov	r0, r4                                        
    2bfc:	ebfffe44 	bl	2514 <free>                                    
    errno = EINVAL;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    2c00:	e1a00005 	mov	r0, r5                                        
    2c04:	e28dd05c 	add	sp, sp, #92	; 0x5c                            
    2c08:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
    2c0c:	e59f6124 	ldr	r6, [pc, #292]	; 2d38 <mount+0x310>           
    2c10:	e1a01005 	mov	r1, r5                                        
    2c14:	e1a02005 	mov	r2, r5                                        
    2c18:	e5960000 	ldr	r0, [r6]                                      
    2c1c:	eb000e74 	bl	65f4 <rtems_semaphore_obtain>                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    2c20:	e59f3114 	ldr	r3, [pc, #276]	; 2d3c <mount+0x314>           
    2c24:	e5932008 	ldr	r2, [r3, #8]                                  
                                                                      
  the_node->next = tail;                                              
    2c28:	e2831004 	add	r1, r3, #4                                    
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
    2c2c:	e8840006 	stm	r4, {r1, r2}                                  
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
    2c30:	e5960000 	ldr	r0, [r6]                                      
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
    2c34:	e5824000 	str	r4, [r2]                                      
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
    2c38:	e5834008 	str	r4, [r3, #8]                                  
    2c3c:	eb000eb5 	bl	6718 <rtems_semaphore_release>                 
    2c40:	eaffffe4 	b	2bd8 <mount+0x1b0>                              
  const char *target_or_null,                                         
  const char *filesystemtype,                                         
  size_t *target_length_ptr                                           
)                                                                     
{                                                                     
  const char *target = target_or_null != NULL ? target_or_null : "/"; 
    2c44:	e59f30f4 	ldr	r3, [pc, #244]	; 2d40 <mount+0x318>           
    2c48:	e58d3008 	str	r3, [sp, #8]                                  
    2c4c:	e3a03002 	mov	r3, #2                                        
    2c50:	e58d3000 	str	r3, [sp]                                      
    2c54:	eaffff87 	b	2a78 <mount+0x50>                               
                                                                      
        if ( rv != 0 ) {                                              
          free( mt_entry );                                           
        }                                                             
      } else {                                                        
        errno = ENOMEM;                                               
    2c58:	eb002ae2 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    2c5c:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
    2c60:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
        rv = -1;                                                      
    2c64:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
    2c68:	eaffffe4 	b	2c00 <mount+0x1d8>                              <== NOT EXECUTED
    } else {                                                          
      errno = EINVAL;                                                 
      rv = -1;                                                        
    }                                                                 
  } else {                                                            
    errno = EINVAL;                                                   
    2c6c:	eb002add 	bl	d7e8 <__errno>                                 
    2c70:	e3a03016 	mov	r3, #22                                       
    2c74:	e5803000 	str	r3, [r0]                                      
    rv = -1;                                                          
    2c78:	e3e05000 	mvn	r5, #0                                        
    2c7c:	eaffffdf 	b	2c00 <mount+0x1d8>                              
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
    2c80:	e59f60b0 	ldr	r6, [pc, #176]	; 2d38 <mount+0x310>           
    2c84:	e1a01005 	mov	r1, r5                                        
    2c88:	e1a02005 	mov	r2, r5                                        
    2c8c:	e5960000 	ldr	r0, [r6]                                      
    2c90:	eb000e57 	bl	65f4 <rtems_semaphore_obtain>                  
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    2c94:	e59f30a0 	ldr	r3, [pc, #160]	; 2d3c <mount+0x314>           
)                                                                     
{                                                                     
  int rv = 0;                                                         
                                                                      
  rtems_filesystem_mt_lock();                                         
  if ( rtems_chain_is_empty( &rtems_filesystem_mount_table ) ) {      
    2c98:	e5932000 	ldr	r2, [r3]                                      
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
    2c9c:	e2831004 	add	r1, r3, #4                                    
    2ca0:	e1520001 	cmp	r2, r1                                        
    2ca4:	1a00001b 	bne	2d18 <mount+0x2f0>                            
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    2ca8:	e5931008 	ldr	r1, [r3, #8]                                  
                                                                      
  the_node->next = tail;                                              
    2cac:	e5842000 	str	r2, [r4]                                      
  tail->previous = the_node;                                          
    2cb0:	e5834008 	str	r4, [r3, #8]                                  
  old_last->next = the_node;                                          
    2cb4:	e5814000 	str	r4, [r1]                                      
  the_node->previous = old_last;                                      
    2cb8:	e5841004 	str	r1, [r4, #4]                                  
  }                                                                   
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
    2cbc:	e2847024 	add	r7, r4, #36	; 0x24                            
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
    2cc0:	e5960000 	ldr	r0, [r6]                                      
    2cc4:	eb000e93 	bl	6718 <rtems_semaphore_release>                 
    rv = -1;                                                          
  }                                                                   
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
    2cc8:	e1a00007 	mov	r0, r7                                        
    2ccc:	eb0003fe 	bl	3ccc <rtems_filesystem_global_location_obtain> 
    2cd0:	e1a08000 	mov	r8, r0                                        
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
    rtems_filesystem_global_location_t *new_fs_current =              
    2cd4:	e1a00007 	mov	r0, r7                                        
    2cd8:	eb0003fb 	bl	3ccc <rtems_filesystem_global_location_obtain> 
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
                                                                      
    rtems_filesystem_global_location_assign(                          
    2cdc:	e59f6060 	ldr	r6, [pc, #96]	; 2d44 <mount+0x31c>            
  rtems_filesystem_mt_unlock();                                       
                                                                      
  if ( rv == 0 ) {                                                    
    rtems_filesystem_global_location_t *new_fs_root =                 
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
    rtems_filesystem_global_location_t *new_fs_current =              
    2ce0:	e1a04000 	mov	r4, r0                                        
      rtems_filesystem_global_location_obtain( &mt_entry->mt_fs_root );
                                                                      
    rtems_filesystem_global_location_assign(                          
    2ce4:	e5960000 	ldr	r0, [r6]                                      
    2ce8:	e1a01008 	mov	r1, r8                                        
    2cec:	e2800004 	add	r0, r0, #4                                    
    2cf0:	eb0003ed 	bl	3cac <rtems_filesystem_global_location_assign> 
      &rtems_filesystem_root,                                         
      new_fs_root                                                     
    );                                                                
    rtems_filesystem_global_location_assign(                          
    2cf4:	e5960000 	ldr	r0, [r6]                                      
    2cf8:	e1a01004 	mov	r1, r4                                        
    2cfc:	eb0003ea 	bl	3cac <rtems_filesystem_global_location_assign> 
    2d00:	eaffffbe 	b	2c00 <mount+0x1d8>                              
      rtems_filesystem_mt_unlock();                                   
    } else {                                                          
      rtems_filesystem_global_location_release( mt_point_node );      
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error( &ctx, EBUSY );                  
    2d04:	e28d000c 	add	r0, sp, #12                                   
    2d08:	e3a01010 	mov	r1, #16                                       
    2d0c:	eb000217 	bl	3570 <rtems_filesystem_eval_path_error>        
    rv = -1;                                                          
    2d10:	e3e05000 	mvn	r5, #0                                        
    2d14:	eaffffaf 	b	2bd8 <mount+0x1b0>                              
    rtems_chain_append_unprotected(                                   
      &rtems_filesystem_mount_table,                                  
      &mt_entry->mt_node                                              
    );                                                                
  } else {                                                            
    errno = EINVAL;                                                   
    2d18:	eb002ab2 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    2d1c:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    2d20:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    2d24:	e5960000 	ldr	r0, [r6]                                      <== NOT EXECUTED
    2d28:	eb000e7a 	bl	6718 <rtems_semaphore_release>                 <== NOT EXECUTED
    rv = -1;                                                          
    2d2c:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
    2d30:	eaffffac 	b	2be8 <mount+0x1c0>                              <== NOT EXECUTED
                                                                      

00016024 <msdos_creat_node>: msdos_node_type_t type, const char *name, int name_len, mode_t mode, const fat_file_fd_t *link_fd) {
   16024:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
   16028:	e590c014 	ldr	ip, [r0, #20]                                 
                 msdos_node_type_t                        type,       
                 const char                              *name,       
                 int                                      name_len,   
                 mode_t                                   mode,       
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
   1602c:	e1a05000 	mov	r5, r0                                        
   16030:	e24dd0ac 	sub	sp, sp, #172	; 0xac                           
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
    fat_file_fd_t    *parent_fat_fd = parent_loc->node_access;        
    fat_file_fd_t    *fat_fd = NULL;                                  
   16034:	e3a04000 	mov	r4, #0                                        
                 mode_t                                   mode,       
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
   16038:	e59c9008 	ldr	r9, [ip, #8]                                  
    fat_file_fd_t    *parent_fat_fd = parent_loc->node_access;        
   1603c:	e595c008 	ldr	ip, [r5, #8]                                  
                 msdos_node_type_t                        type,       
                 const char                              *name,       
                 int                                      name_len,   
                 mode_t                                   mode,       
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
   16040:	e1a06003 	mov	r6, r3                                        
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
   16044:	e3e08000 	mvn	r8, #0                                        
   16048:	e1a07001 	mov	r7, r1                                        
   1604c:	e1a0a002 	mov	sl, r2                                        
    uint32_t          byte = 0;                                       
                                                                      
    fat_dir_pos_init(&dir_pos);                                       
                                                                      
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);     
   16050:	e28d0014 	add	r0, sp, #20                                   
   16054:	e1a01004 	mov	r1, r4                                        
   16058:	e3a02040 	mov	r2, #64	; 0x40                                
                 const fat_file_fd_t                     *link_fd)    
{                                                                     
    int               rc = RC_OK;                                     
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
    fat_file_fd_t    *parent_fat_fd = parent_loc->node_access;        
   1605c:	e58dc010 	str	ip, [sp, #16]                                 
    fat_file_fd_t    *fat_fd = NULL;                                  
   16060:	e58d40a4 	str	r4, [sp, #164]	; 0xa4                         
    time_t            time_ret = 0;                                   
    uint16_t          time_val = 0;                                   
   16064:	e1cd4ab8 	strh	r4, [sp, #168]	; 0xa8                        
    uint16_t          date = 0;                                       
   16068:	e1cd4aba 	strh	r4, [sp, #170]	; 0xaa                        
static inline void                                                    
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
   1606c:	e58d4094 	str	r4, [sp, #148]	; 0x94                         
  dir_pos->sname.ofs = 0;                                             
   16070:	e58d4098 	str	r4, [sp, #152]	; 0x98                         
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
   16074:	e58d809c 	str	r8, [sp, #156]	; 0x9c                         
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
   16078:	e58d80a0 	str	r8, [sp, #160]	; 0xa0                         
    uint32_t          sec = 0;                                        
    uint32_t          byte = 0;                                       
                                                                      
    fat_dir_pos_init(&dir_pos);                                       
                                                                      
    memset(short_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
   1607c:	e58d4054 	str	r4, [sp, #84]	; 0x54                          
   16080:	e58d4058 	str	r4, [sp, #88]	; 0x58                          
   16084:	e58d405c 	str	r4, [sp, #92]	; 0x5c                          
   16088:	e58d4060 	str	r4, [sp, #96]	; 0x60                          
   1608c:	e58d4064 	str	r4, [sp, #100]	; 0x64                         
   16090:	e58d4068 	str	r4, [sp, #104]	; 0x68                         
   16094:	e58d406c 	str	r4, [sp, #108]	; 0x6c                         
   16098:	e58d4070 	str	r4, [sp, #112]	; 0x70                         
    memset(dot_dotdot, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2);     
   1609c:	eb0010e1 	bl	1a428 <memset>                                 
                                                                      
    if (name_len > MSDOS_NAME_MAX_LFN_WITH_DOT) {                     
   160a0:	e3560f41 	cmp	r6, #260	; 0x104                              
    ssize_t           ret = 0;                                        
    msdos_fs_info_t  *fs_info = parent_loc->mt_entry->fs_info;        
    fat_file_fd_t    *parent_fat_fd = parent_loc->node_access;        
    fat_file_fd_t    *fat_fd = NULL;                                  
    time_t            time_ret = 0;                                   
    uint16_t          time_val = 0;                                   
   160a4:	e1a0b004 	mov	fp, r4                                        
    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) {                     
   160a8:	ca0000b6 	bgt	16388 <msdos_creat_node+0x364>                
        rtems_set_errno_and_return_minus_one(ENAMETOOLONG);           
    }                                                                 
                                                                      
    name_type = msdos_long_to_short (name, name_len,                  
   160ac:	e1a0000a 	mov	r0, sl                                        
   160b0:	e1a01006 	mov	r1, r6                                        
   160b4:	e28d2054 	add	r2, sp, #84	; 0x54                            
   160b8:	e3a0300b 	mov	r3, #11                                       
   160bc:	eb00010e 	bl	164fc <msdos_long_to_short>                    
                                     MSDOS_DIR_NAME(short_node),      
                                     MSDOS_NAME_MAX);                 
    if (name_type == MSDOS_NAME_INVALID) {                            
   160c0:	e3500000 	cmp	r0, #0                                        
   160c4:	e58d000c 	str	r0, [sp, #12]                                 
   160c8:	0a0000b2 	beq	16398 <msdos_creat_node+0x374>                
                                                                      
    /* fill reserved field */                                         
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;               
                                                                      
    /* set up last write date and time */                             
    time_ret = time(NULL);                                            
   160cc:	e1a00004 	mov	r0, r4                                        
    if (name_type == MSDOS_NAME_INVALID) {                            
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    }                                                                 
                                                                      
    /* fill reserved field */                                         
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;               
   160d0:	e5cd4060 	strb	r4, [sp, #96]	; 0x60                         
                                                                      
    /* set up last write date and time */                             
    time_ret = time(NULL);                                            
   160d4:	eb0021a8 	bl	1e77c <time>                                   
    if ( time_ret == -1 )                                             
   160d8:	e3700001 	cmn	r0, #1                                        
                                                                      
    /* fill reserved field */                                         
    *MSDOS_DIR_NT_RES(short_node) = MSDOS_RES_NT_VALUE;               
                                                                      
    /* set up last write date and time */                             
    time_ret = time(NULL);                                            
   160dc:	e1a08000 	mov	r8, r0                                        
    if ( time_ret == -1 )                                             
   160e0:	0a00006c 	beq	16298 <msdos_creat_node+0x274>                
        return -1;                                                    
                                                                      
    msdos_date_unix2dos(time_ret, &date, &time_val);                  
   160e4:	e28d20a8 	add	r2, sp, #168	; 0xa8                           
   160e8:	e28d10aa 	add	r1, sp, #170	; 0xaa                           
   160ec:	eb000a0c 	bl	18924 <msdos_date_unix2dos>                    
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);              
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);                  
   160f0:	e1dd3aba 	ldrh	r3, [sp, #170]	; 0xaa                        
    time_ret = time(NULL);                                            
    if ( time_ret == -1 )                                             
        return -1;                                                    
                                                                      
    msdos_date_unix2dos(time_ret, &date, &time_val);                  
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);              
   160f4:	e1dd2ab8 	ldrh	r2, [sp, #168]	; 0xa8                        
    *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;           
                                                                      
    if (type == MSDOS_DIRECTORY) {                                    
   160f8:	e3570000 	cmp	r7, #0                                        
    time_ret = time(NULL);                                            
    if ( time_ret == -1 )                                             
        return -1;                                                    
                                                                      
    msdos_date_unix2dos(time_ret, &date, &time_val);                  
    *MSDOS_DIR_CRT_TIME(short_node) = CT_LE_W(time_val);              
   160fc:	e1cd26b2 	strh	r2, [sp, #98]	; 0x62                         
    *MSDOS_DIR_CRT_DATE(short_node) = CT_LE_W(date);                  
   16100:	e1cd36b4 	strh	r3, [sp, #100]	; 0x64                        
    *MSDOS_DIR_WRITE_TIME(short_node) = CT_LE_W(time_val);            
   16104:	e1cd26ba 	strh	r2, [sp, #106]	; 0x6a                        
    *MSDOS_DIR_WRITE_DATE(short_node) = CT_LE_W(date);                
   16108:	e1cd36bc 	strh	r3, [sp, #108]	; 0x6c                        
    *MSDOS_DIR_LAST_ACCESS_DATE(short_node) = CT_LE_W(date);          
   1610c:	e1cd36b6 	strh	r3, [sp, #102]	; 0x66                        
                                                                      
    /* initialize directory/file size */                              
    *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;           
   16110:	e58d4070 	str	r4, [sp, #112]	; 0x70                         
                                                                      
    if (type == MSDOS_DIRECTORY) {                                    
   16114:	0a000062 	beq	162a4 <msdos_creat_node+0x280>                
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;            
    }                                                                 
    else if (type == MSDOS_HARD_LINK) {                               
   16118:	e3570002 	cmp	r7, #2                                        
   1611c:	0a00006d 	beq	162d8 <msdos_creat_node+0x2b4>                
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
    }                                                                 
    else { /* regular file... */                                      
        *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;            
   16120:	e5dd305f 	ldrb	r3, [sp, #95]	; 0x5f                         
   16124:	e3833020 	orr	r3, r3, #32                                   
   16128:	e5cd305f 	strb	r3, [sp, #95]	; 0x5f                         
                                                                      
    /*                                                                
     * 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,        
   1612c:	e59dc00c 	ldr	ip, [sp, #12]                                 
   16130:	e28d4094 	add	r4, sp, #148	; 0x94                           
   16134:	e58dc000 	str	ip, [sp]                                      
   16138:	e1a00005 	mov	r0, r5                                        
   1613c:	e28dc054 	add	ip, sp, #84	; 0x54                            
   16140:	e3a01001 	mov	r1, #1                                        
   16144:	e1a0200a 	mov	r2, sl                                        
   16148:	e1a03006 	mov	r3, r6                                        
   1614c:	e58d4004 	str	r4, [sp, #4]                                  
   16150:	e58dc008 	str	ip, [sp, #8]                                  
   16154:	eb0005ea 	bl	17904 <msdos_get_name_node>                    
                             name_type, &dir_pos, short_node);        
    if ( rc != RC_OK )                                                
   16158:	e2508000 	subs	r8, r0, #0                                   
   1615c:	1a00004d 	bne	16298 <msdos_creat_node+0x274>                
                                                                      
    /*                                                                
     * if we create a new file we are done, if directory there are more steps
     * to do                                                          
     */                                                               
    if (type == MSDOS_DIRECTORY)                                      
   16160:	e3570000 	cmp	r7, #0                                        
   16164:	1a00004b 	bne	16298 <msdos_creat_node+0x274>                
    {                                                                 
        /* open new directory as fat-file */                          
        rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);         
   16168:	e1a00009 	mov	r0, r9                                        
   1616c:	e1a01004 	mov	r1, r4                                        
   16170:	e28d20a4 	add	r2, sp, #164	; 0xa4                           
   16174:	ebffec12 	bl	111c4 <fat_file_open>                          
        if (rc != RC_OK)                                              
   16178:	e2508000 	subs	r8, r0, #0                                   
   1617c:	1a000050 	bne	162c4 <msdos_creat_node+0x2a0>                
                                                                      
        /*                                                            
         * we opened fat-file for node we just created, so initialize fat-file
         * descritor                                                  
         */                                                           
        fat_fd->fat_file_size = 0;                                    
   16180:	e59d80a4 	ldr	r8, [sp, #164]	; 0xa4                         
        fat_fd->fat_file_type = FAT_DIRECTORY;                        
        fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                    
   16184:	e3a03602 	mov	r3, #2097152	; 0x200000                       
   16188:	e5883014 	str	r3, [r8, #20]                                 
                                                                      
        /*                                                            
         * we opened fat-file for node we just created, so initialize fat-file
         * descritor                                                  
         */                                                           
        fat_fd->fat_file_size = 0;                                    
   1618c:	e5887018 	str	r7, [r8, #24]                                 
        fat_fd->fat_file_type = FAT_DIRECTORY;                        
   16190:	e5887010 	str	r7, [r8, #16]                                 
                                                                      
        /*                                                            
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
   16194:	e28de054 	add	lr, sp, #84	; 0x54                            
   16198:	e8be000f 	ldm	lr!, {r0, r1, r2, r3}                         
   1619c:	e28d6014 	add	r6, sp, #20                                   
   161a0:	e8a6000f 	stmia	r6!, {r0, r1, r2, r3}                       
   161a4:	e89e000f 	ldm	lr, {r0, r1, r2, r3}                          
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
   161a8:	e28dc054 	add	ip, sp, #84	; 0x54                            
                                                                      
        /*                                                            
         * dot and dotdot entries are identical to new node except the
         * names                                                      
         */                                                           
        memcpy(DOT_NODE_P(dot_dotdot), short_node,                    
   161ac:	e886000f 	stm	r6, {r0, r1, r2, r3}                          
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(DOTDOT_NODE_P(dot_dotdot), short_node,                 
   161b0:	e8bc000f 	ldm	ip!, {r0, r1, r2, r3}                         
   161b4:	e28dc034 	add	ip, sp, #52	; 0x34                            
   161b8:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
   161bc:	e89e000f 	ldm	lr, {r0, r1, r2, r3}                          
   161c0:	e88c000f 	stm	ip, {r0, r1, r2, r3}                          
               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);                    
        memcpy(MSDOS_DIR_NAME(DOT_NODE_P(dot_dotdot)), MSDOS_DOT_NAME,
   161c4:	e59f3200 	ldr	r3, [pc, #512]	; 163cc <msdos_creat_node+0x3a8>
   161c8:	e3a0200b 	mov	r2, #11                                       
   161cc:	e5931000 	ldr	r1, [r3]                                      
   161d0:	e28d0014 	add	r0, sp, #20                                   
   161d4:	eb00105d 	bl	1a350 <memcpy>                                 
               MSDOS_NAME_MAX);                                       
        memcpy(MSDOS_DIR_NAME(DOTDOT_NODE_P(dot_dotdot)), MSDOS_DOTDOT_NAME,
   161d8:	e59f31f0 	ldr	r3, [pc, #496]	; 163d0 <msdos_creat_node+0x3ac>
   161dc:	e28d0034 	add	r0, sp, #52	; 0x34                            
   161e0:	e5931000 	ldr	r1, [r3]                                      
   161e4:	e3a0200b 	mov	r2, #11                                       
   161e8:	eb001058 	bl	1a350 <memcpy>                                 
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
   161ec:	e59dc010 	ldr	ip, [sp, #16]                                 
   161f0:	e59c3020 	ldr	r3, [ip, #32]                                 
   161f4:	e3530001 	cmp	r3, #1                                        
   161f8:	0a00006a 	beq	163a8 <msdos_creat_node+0x384>                
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
        }                                                             
        else                                                          
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));
   161fc:	e59dc010 	ldr	ip, [sp, #16]                                 
   16200:	e59c301c 	ldr	r3, [ip, #28]                                 
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =  
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));
   16204:	e1a02823 	lsr	r2, r3, #16                                   
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
        }                                                             
        else                                                          
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 
                CT_LE_W((uint16_t  )((parent_fat_fd->cln) & 0x0000FFFF));
   16208:	e1cd34be 	strh	r3, [sp, #78]	; 0x4e                         
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) =  
                CT_LE_W((uint16_t  )(((parent_fat_fd->cln) & 0xFFFF0000)>>16));
   1620c:	e1cd24b8 	strh	r2, [sp, #72]	; 0x48                         
        /*                                                            
         * write dot and dotdot entries to new fat-file: currently fat-file
         * correspondes to a new node is zero length, so it will be extended
         * by one cluster and entries will be written                 
         */                                                           
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
   16210:	e28dc014 	add	ip, sp, #20                                   
   16214:	e1a00009 	mov	r0, r9                                        
   16218:	e1a01008 	mov	r1, r8                                        
   1621c:	e3a02000 	mov	r2, #0                                        
   16220:	e3a03040 	mov	r3, #64	; 0x40                                
   16224:	e58dc000 	str	ip, [sp]                                      
   16228:	ebffee29 	bl	11ad4 <fat_file_write>                         
                             MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE * 2,   
                             (uint8_t *)dot_dotdot);                  
        if (ret < 0)                                                  
   1622c:	e3500000 	cmp	r0, #0                                        
   16230:	ba00001f 	blt	162b4 <msdos_creat_node+0x290>                
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
   16234:	e59d10a4 	ldr	r1, [sp, #164]	; 0xa4                         
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
   16238:	e2812018 	add	r2, r1, #24                                   
   1623c:	e8921004 	ldm	r2, {r2, ip}                                  
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
   16240:	e1d930b6 	ldrh	r3, [r9, #6]                                 
   16244:	e0823003 	add	r3, r2, r3                                    
   16248:	e5813018 	str	r3, [r1, #24]                                 
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
   1624c:	e1a0e82c 	lsr	lr, ip, #16                                   
        /* increment fat-file size by cluster size */                 
        fat_fd->fat_file_size += fs_info->fat.vol.bpc;                
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
   16250:	e1cdc2be 	strh	ip, [sp, #46]	; 0x2e                         
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
                                                                      
        /* rewrite dot entry */                                       
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
   16254:	e1a00009 	mov	r0, r9                                        
   16258:	e28dc014 	add	ip, sp, #20                                   
   1625c:	e3a02000 	mov	r2, #0                                        
   16260:	e3a03020 	mov	r3, #32                                       
                                                                      
        /* set up cluster num for dot entry */                        
        *MSDOS_DIR_FIRST_CLUSTER_LOW(DOT_NODE_P(dot_dotdot)) =        
                CT_LE_W((uint16_t  )((fat_fd->cln) & 0x0000FFFF));    
        *MSDOS_DIR_FIRST_CLUSTER_HI(DOT_NODE_P(dot_dotdot)) =         
                CT_LE_W((uint16_t  )(((fat_fd->cln) & 0xFFFF0000) >> 16));
   16264:	e1cde2b8 	strh	lr, [sp, #40]	; 0x28                         
                                                                      
        /* rewrite dot entry */                                       
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
   16268:	e58dc000 	str	ip, [sp]                                      
   1626c:	ebffee18 	bl	11ad4 <fat_file_write>                         
                             MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,       
                             (uint8_t *)DOT_NODE_P(dot_dotdot));      
        if (ret < 0)                                                  
   16270:	e3500000 	cmp	r0, #0                                        
   16274:	ba00000e 	blt	162b4 <msdos_creat_node+0x290>                
            rc = -1;                                                  
            goto error;                                               
        }                                                             
                                                                      
        /* write first cluster num of a new directory to disk */      
        rc = msdos_set_first_cluster_num(parent_loc->mt_entry, fat_fd);
   16278:	e5950014 	ldr	r0, [r5, #20]                                 
   1627c:	e59d10a4 	ldr	r1, [sp, #164]	; 0xa4                         
   16280:	eb00015c 	bl	167f8 <msdos_set_first_cluster_num>            
        if (rc != RC_OK)                                              
   16284:	e2508000 	subs	r8, r0, #0                                   
   16288:	1a00000a 	bne	162b8 <msdos_creat_node+0x294>                
            goto error;                                               
                                                                      
        fat_file_close(&fs_info->fat, fat_fd);                        
   1628c:	e1a00009 	mov	r0, r9                                        
   16290:	e59d10a4 	ldr	r1, [sp, #164]	; 0xa4                         
   16294:	ebffed24 	bl	1172c <fat_file_close>                         
                                                                      
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;                                                        
}                                                                     
   16298:	e1a00008 	mov	r0, r8                                        
   1629c:	e28dd0ac 	add	sp, sp, #172	; 0xac                           
   162a0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
    /* initialize directory/file size */                              
    *MSDOS_DIR_FILE_SIZE(short_node) = MSDOS_INIT_DIR_SIZE;           
                                                                      
    if (type == MSDOS_DIRECTORY) {                                    
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_DIRECTORY;            
   162a4:	e5dd305f 	ldrb	r3, [sp, #95]	; 0x5f                         
   162a8:	e3833010 	orr	r3, r3, #16                                   
   162ac:	e5cd305f 	strb	r3, [sp, #95]	; 0x5f                         
   162b0:	eaffff9d 	b	1612c <msdos_creat_node+0x108>                  
        ret = fat_file_write(&fs_info->fat, fat_fd, 0,                
                             MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,       
                             (uint8_t *)DOT_NODE_P(dot_dotdot));      
        if (ret < 0)                                                  
        {                                                             
            rc = -1;                                                  
   162b4:	e3e08000 	mvn	r8, #0                                        <== NOT EXECUTED
        fat_file_close(&fs_info->fat, fat_fd);                        
    }                                                                 
    return RC_OK;                                                     
                                                                      
error:                                                                
    fat_file_close(&fs_info->fat, fat_fd);                            
   162b8:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   162bc:	e59d10a4 	ldr	r1, [sp, #164]	; 0xa4                         <== NOT EXECUTED
   162c0:	ebffed19 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
                                                                      
err:                                                                  
    /* mark the used 32bytes structure on the disk as free */         
    msdos_set_first_char4file_name(parent_loc->mt_entry, &dir_pos, 0xE5);
   162c4:	e5950014 	ldr	r0, [r5, #20]                                 <== NOT EXECUTED
   162c8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   162cc:	e3a020e5 	mov	r2, #229	; 0xe5                               <== NOT EXECUTED
   162d0:	eb000196 	bl	16930 <msdos_set_first_char4file_name>         <== NOT EXECUTED
    return rc;                                                        
   162d4:	eaffffef 	b	16298 <msdos_creat_node+0x274>                  <== NOT EXECUTED
       * node to the newly created                                    
       */                                                             
      /*                                                              
       * read the original directory entry                            
       */                                                             
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
   162d8:	e59dc0d4 	ldr	ip, [sp, #212]	; 0xd4                         <== NOT EXECUTED
   162dc:	e59c3020 	ldr	r3, [ip, #32]                                 <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   162e0:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   162e4:	1a000022 	bne	16374 <msdos_creat_node+0x350>                <== NOT EXECUTED
   162e8:	e5d9200e 	ldrb	r2, [r9, #14]                                <== NOT EXECUTED
   162ec:	e3120003 	tst	r2, #3                                        <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
   162f0:	15991020 	ldrne	r1, [r9, #32]                               <== NOT EXECUTED
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   162f4:	0a00001e 	beq	16374 <msdos_creat_node+0x350>                <== NOT EXECUTED
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
   162f8:	e59dc0d4 	ldr	ip, [sp, #212]	; 0xd4                         <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
   162fc:	e1d920b0 	ldrh	r2, [r9]                                     <== NOT EXECUTED
      /*                                                              
       * read the original directory entry                            
       */                                                             
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
   16300:	e59c3024 	ldr	r3, [ip, #36]	; 0x24                          <== NOT EXECUTED
   16304:	e5d9c002 	ldrb	ip, [r9, #2]                                 <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
   16308:	e2422001 	sub	r2, r2, #1                                    <== NOT EXECUTED
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
   1630c:	e0811c33 	add	r1, r1, r3, lsr ip                            <== NOT EXECUTED
   16310:	e0022003 	and	r2, r2, r3                                    <== NOT EXECUTED
                            sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
                            link_node);                               
   16314:	e28d4074 	add	r4, sp, #116	; 0x74                           <== NOT EXECUTED
      sec = fat_cluster_num_to_sector_num(&fs_info->fat,              
                                          link_fd->dir_pos.sname.cln);
      sec += (link_fd->dir_pos.sname.ofs >> fs_info->fat.vol.sec_log2);
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
   16318:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   1631c:	e3a03020 	mov	r3, #32                                       <== NOT EXECUTED
   16320:	e58d4000 	str	r4, [sp]                                      <== NOT EXECUTED
   16324:	ebffef5c 	bl	1209c <_fat_block_read>                        <== NOT EXECUTED
                            sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
                            link_node);                               
      if (ret < 0) {                                                  
   16328:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
          return -1;                                                  
   1632c:	b3e08000 	mvnlt	r8, #0                                      <== NOT EXECUTED
      byte = (link_fd->dir_pos.sname.ofs & (fs_info->fat.vol.bps - 1));
                                                                      
      ret = _fat_block_read(&fs_info->fat,                            
                            sec, byte, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE,
                            link_node);                               
      if (ret < 0) {                                                  
   16330:	baffffd8 	blt	16298 <msdos_creat_node+0x274>                <== NOT EXECUTED
          return -1;                                                  
      }                                                               
      /*                                                              
       * copy various attributes                                      
       */                                                             
      *MSDOS_DIR_ATTR(short_node)          =*MSDOS_DIR_ATTR(link_node);
   16334:	e5d4e00b 	ldrb	lr, [r4, #11]                                <== NOT EXECUTED
      *MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
   16338:	e5d4c00d 	ldrb	ip, [r4, #13]                                <== NOT EXECUTED
      *MSDOS_DIR_CRT_TIME(short_node)      =*MSDOS_DIR_CRT_TIME(link_node);
   1633c:	e1d400be 	ldrh	r0, [r4, #14]                                <== NOT EXECUTED
      *MSDOS_DIR_CRT_DATE(short_node)      =*MSDOS_DIR_CRT_DATE(link_node);
   16340:	e1d411b0 	ldrh	r1, [r4, #16]                                <== NOT EXECUTED
                                                                      
      /*                                                              
       * copy/set "file size", "first cluster"                        
       */                                                             
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);
   16344:	e594201c 	ldr	r2, [r4, #28]                                 <== NOT EXECUTED
                                                                      
      *MSDOS_DIR_FIRST_CLUSTER_LOW(short_node) =                      
   16348:	e1d431ba 	ldrh	r3, [r4, #26]                                <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_LOW(link_node);                   
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =                       
   1634c:	e1d441b4 	ldrh	r4, [r4, #20]                                <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_HI(link_node);                    
      /*                                                              
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
   16350:	e38ee020 	orr	lr, lr, #32                                   <== NOT EXECUTED
      }                                                               
      /*                                                              
       * copy various attributes                                      
       */                                                             
      *MSDOS_DIR_ATTR(short_node)          =*MSDOS_DIR_ATTR(link_node);
      *MSDOS_DIR_CRT_TIME_TENTH(short_node)=*MSDOS_DIR_CRT_TIME_TENTH(link_node);
   16354:	e5cdc061 	strb	ip, [sp, #97]	; 0x61                         <== NOT EXECUTED
      *MSDOS_DIR_CRT_TIME(short_node)      =*MSDOS_DIR_CRT_TIME(link_node);
   16358:	e1cd06b2 	strh	r0, [sp, #98]	; 0x62                         <== NOT EXECUTED
      *MSDOS_DIR_CRT_DATE(short_node)      =*MSDOS_DIR_CRT_DATE(link_node);
   1635c:	e1cd16b4 	strh	r1, [sp, #100]	; 0x64                        <== NOT EXECUTED
                                                                      
      /*                                                              
       * copy/set "file size", "first cluster"                        
       */                                                             
      *MSDOS_DIR_FILE_SIZE(short_node)     =*MSDOS_DIR_FILE_SIZE(link_node);
   16360:	e58d2070 	str	r2, [sp, #112]	; 0x70                         <== NOT EXECUTED
                                                                      
      *MSDOS_DIR_FIRST_CLUSTER_LOW(short_node) =                      
   16364:	e1cd36be 	strh	r3, [sp, #110]	; 0x6e                        <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_LOW(link_node);                   
      *MSDOS_DIR_FIRST_CLUSTER_HI(short_node) =                       
   16368:	e1cd46b8 	strh	r4, [sp, #104]	; 0x68                        <== NOT EXECUTED
           *MSDOS_DIR_FIRST_CLUSTER_HI(link_node);                    
      /*                                                              
       * set "archive bit" due to changes                             
       */                                                             
      *MSDOS_DIR_ATTR(short_node) |= MSDOS_ATTR_ARCHIVE;              
   1636c:	e5cde05f 	strb	lr, [sp, #95]	; 0x5f                         <== NOT EXECUTED
   16370:	eaffff6d 	b	1612c <msdos_creat_node+0x108>                  <== NOT EXECUTED
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   16374:	e5d90005 	ldrb	r0, [r9, #5]                                 <== NOT EXECUTED
   16378:	e5992034 	ldr	r2, [r9, #52]	; 0x34                          <== NOT EXECUTED
   1637c:	e2431002 	sub	r1, r3, #2                                    <== NOT EXECUTED
   16380:	e0821011 	add	r1, r2, r1, lsl r0                            <== NOT EXECUTED
   16384:	eaffffdb 	b	162f8 <msdos_creat_node+0x2d4>                  <== NOT EXECUTED
                                                                      
    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) {                     
        rtems_set_errno_and_return_minus_one(ENAMETOOLONG);           
   16388:	eb000d49 	bl	198b4 <__errno>                                <== NOT EXECUTED
   1638c:	e3a0305b 	mov	r3, #91	; 0x5b                                <== NOT EXECUTED
   16390:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   16394:	eaffffbf 	b	16298 <msdos_creat_node+0x274>                  <== NOT EXECUTED
                                                                      
    name_type = msdos_long_to_short (name, name_len,                  
                                     MSDOS_DIR_NAME(short_node),      
                                     MSDOS_NAME_MAX);                 
    if (name_type == MSDOS_NAME_INVALID) {                            
        rtems_set_errno_and_return_minus_one(EINVAL);                 
   16398:	eb000d45 	bl	198b4 <__errno>                                <== NOT EXECUTED
   1639c:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   163a0:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   163a4:	eaffffbb 	b	16298 <msdos_creat_node+0x274>                  <== NOT EXECUTED
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
   163a8:	e59c3024 	ldr	r3, [ip, #36]	; 0x24                          
   163ac:	e3530000 	cmp	r3, #0                                        
   163b0:	1affff91 	bne	161fc <msdos_creat_node+0x1d8>                
            (fs_info->fat.vol.type & FAT_FAT32))                      
   163b4:	e5d9300e 	ldrb	r3, [r9, #14]                                
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
   163b8:	e3130004 	tst	r3, #4                                        
            (fs_info->fat.vol.type & FAT_FAT32))                      
        {                                                             
            *MSDOS_DIR_FIRST_CLUSTER_LOW(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
   163bc:	11cd74be 	strhne	r7, [sp, #78]	; 0x4e                       
            *MSDOS_DIR_FIRST_CLUSTER_HI(DOTDOT_NODE_P(dot_dotdot)) = 0x0000;
   163c0:	11cd74b8 	strhne	r7, [sp, #72]	; 0x48                       
        /*                                                            
         * here we can ommit FAT32 condition because for all FAT types dirs
         * right under root dir should contain 0 in dotdot entry but for
         * FAT12/16 parent_fat_fd->cluster_num always contains such value
         */                                                           
        if ((FAT_FD_OF_ROOT_DIR(parent_fat_fd)) &&                    
   163c4:	1affff91 	bne	16210 <msdos_creat_node+0x1ec>                
   163c8:	eaffff8b 	b	161fc <msdos_creat_node+0x1d8>                  
                                                                      

00018aa8 <msdos_date_dos2unix>: uint32_t days; uint16_t *months; seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT) + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60 + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;
   18aa8:	e2012b3e 	and	r2, r1, #63488	; 0xf800                       
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
   18aac:	e201ce7e 	and	ip, r1, #2016	; 0x7e0                         
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
   18ab0:	e59f30f8 	ldr	r3, [pc, #248]	; 18bb0 <msdos_date_dos2unix+0x108>
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
   18ab4:	e1a025a2 	lsr	r2, r2, #11                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
   18ab8:	e1a0c2ac 	lsr	ip, ip, #5                                    
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
   18abc:	e0622202 	rsb	r2, r2, r2, lsl #4                            
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
   18ac0:	e06cc20c 	rsb	ip, ip, ip, lsl #4                            
 * called from the stat(), and fstat() system calls and so probably need
 * not be too efficient.                                              
 */                                                                   
unsigned int                                                          
msdos_date_dos2unix(unsigned int dd, unsigned int dt)                 
{                                                                     
   18ac4:	e92d01f0 	push	{r4, r5, r6, r7, r8}                         
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
   18ac8:	e0622202 	rsb	r2, r2, r2, lsl #4                            
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
   18acc:	e1a0c08c 	lsl	ip, ip, #1                                    
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
   18ad0:	e1d340bc 	ldrh	r4, [r3, #12]                                
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
   18ad4:	e08c2182 	add	r2, ip, r2, lsl #3                            
	uint32_t m, month;                                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
   18ad8:	e201101f 	and	r1, r1, #31                                   
	    + ((dt & MSDOS_DT_MINUTES_MASK) >> MSDOS_DT_MINUTES_SHIFT) * 60  
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
   18adc:	e0822001 	add	r2, r2, r1                                    
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
   18ae0:	e1540000 	cmp	r4, r0                                        
	uint32_t m, month;                                                   
	uint32_t y, year;                                                    
	uint32_t days;                                                       
	uint16_t *months;                                                    
                                                                      
	seconds = 2 * ((dt & MSDOS_DT_2SECONDS_MASK) >> MSDOS_DT_2SECONDS_SHIFT)
   18ae4:	e1a02082 	lsl	r2, r2, #1                                    
	    + ((dt & MSDOS_DT_HOURS_MASK) >> MSDOS_DT_HOURS_SHIFT) * 3600;   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
   18ae8:	05930010 	ldreq	r0, [r3, #16]                               
   18aec:	0a000029 	beq	18b98 <msdos_date_dos2unix+0xf0>              
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
   18af0:	e2007cfe 	and	r7, r0, #65024	; 0xfe00                       
		for (y = 0; y < year; y++)                                          
   18af4:	e1b074a7 	lsrs	r7, r7, #9                                   
	/*                                                                   
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
   18af8:	e1c300bc 	strh	r0, [r3, #12]                                
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
   18afc:	0a000028 	beq	18ba4 <msdos_date_dos2unix+0xfc>              
   18b00:	e59f60ac 	ldr	r6, [pc, #172]	; 18bb4 <msdos_date_dos2unix+0x10c>
   18b04:	e3a04000 	mov	r4, #0                                        
			days += y & 0x03 ? 365 : 366;                                      
   18b08:	e59f10a8 	ldr	r1, [pc, #168]	; 18bb8 <msdos_date_dos2unix+0x110>
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
   18b0c:	e1a05004 	mov	r5, r4                                        
			days += y & 0x03 ? 365 : 366;                                      
   18b10:	e1a08006 	mov	r8, r6                                        
   18b14:	ea000002 	b	18b24 <msdos_date_dos2unix+0x7c>                
   18b18:	e3150003 	tst	r5, #3                                        
   18b1c:	01a06008 	moveq	r6, r8                                      
   18b20:	11a06001 	movne	r6, r1                                      
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
   18b24:	e2855001 	add	r5, r5, #1                                    
   18b28:	e1550007 	cmp	r5, r7                                        
			days += y & 0x03 ? 365 : 366;                                      
   18b2c:	e0844006 	add	r4, r4, r6                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
   18b30:	1afffff8 	bne	18b18 <msdos_date_dos2unix+0x70>              
			days += y & 0x03 ? 365 : 366;                                      
		months = year & 0x03 ? regyear : leapyear;                          
   18b34:	e59f1080 	ldr	r1, [pc, #128]	; 18bbc <msdos_date_dos2unix+0x114>
   18b38:	e3150003 	tst	r5, #3                                        
   18b3c:	e2416018 	sub	r6, r1, #24                                   
   18b40:	01a06001 	moveq	r6, r1                                      
		/*                                                                  
		 * Prevent going from 0 to 0xffffffff in the following              
		 * loop.                                                            
		 */                                                                 
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;         
   18b44:	e2008e1e 	and	r8, r0, #480	; 0x1e0                          
		if (month == 0) {                                                   
   18b48:	e1b082a8 	lsrs	r8, r8, #5                                   
   18b4c:	0a000007 	beq	18b70 <msdos_date_dos2unix+0xc8>              
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
   18b50:	e2588001 	subs	r8, r8, #1                                   
   18b54:	0a000005 	beq	18b70 <msdos_date_dos2unix+0xc8>              
   18b58:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
			days += months[m];                                                 
   18b5c:	e0d670b2 	ldrh	r7, [r6], #2                                 <== NOT EXECUTED
		 */                                                                 
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;         
		if (month == 0) {                                                   
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
   18b60:	e2855001 	add	r5, r5, #1                                    <== NOT EXECUTED
   18b64:	e1550008 	cmp	r5, r8                                        <== NOT EXECUTED
			days += months[m];                                                 
   18b68:	e0844007 	add	r4, r4, r7                                    <== NOT EXECUTED
		 */                                                                 
		month = (dd & MSDOS_DD_MONTH_MASK) >> MSDOS_DD_MONTH_SHIFT;         
		if (month == 0) {                                                   
			month = 1;                                                         
		}                                                                   
		for (m = 0; m < month - 1; m++)                                     
   18b6c:	3afffffa 	bcc	18b5c <msdos_date_dos2unix+0xb4>              <== NOT EXECUTED
			days += months[m];                                                 
		days += ((dd & MSDOS_DD_DAY_MASK) >> MSDOS_DD_DAY_SHIFT) - 1;       
   18b70:	e200001f 	and	r0, r0, #31                                   
   18b74:	e2400001 	sub	r0, r0, #1                                    
   18b78:	e0804004 	add	r4, r0, r4                                    
		lastseconds = (days + DAYSTO1980) * SECONDSPERDAY;                  
   18b7c:	e0844084 	add	r4, r4, r4, lsl #1                            
   18b80:	e0644204 	rsb	r4, r4, r4, lsl #4                            
   18b84:	e0644204 	rsb	r4, r4, r4, lsl #4                            
   18b88:	e59f0030 	ldr	r0, [pc, #48]	; 18bc0 <msdos_date_dos2unix+0x118>
   18b8c:	e1a04384 	lsl	r4, r4, #7                                    
   18b90:	e0840000 	add	r0, r4, r0                                    
   18b94:	e5830010 	str	r0, [r3, #16]                                 
	}                                                                    
	return seconds + lastseconds;                                        
}                                                                     
   18b98:	e0800002 	add	r0, r0, r2                                    
   18b9c:	e8bd01f0 	pop	{r4, r5, r6, r7, r8}                          
   18ba0:	e12fff1e 	bx	lr                                             
	 * If the year, month, and day from the last conversion are the      
	 * same then use the saved value.                                    
	 */                                                                  
	if (lastdosdate != dd) {                                             
		lastdosdate = dd;                                                   
		days = 0;                                                           
   18ba4:	e1a04007 	mov	r4, r7                                        <== NOT EXECUTED
		year = (dd & MSDOS_DD_YEAR_MASK) >> MSDOS_DD_YEAR_SHIFT;            
		for (y = 0; y < year; y++)                                          
			days += y & 0x03 ? 365 : 366;                                      
		months = year & 0x03 ? regyear : leapyear;                          
   18ba8:	e59f600c 	ldr	r6, [pc, #12]	; 18bbc <msdos_date_dos2unix+0x114><== NOT EXECUTED
   18bac:	eaffffe4 	b	18b44 <msdos_date_dos2unix+0x9c>                <== NOT EXECUTED
                                                                      

00018924 <msdos_date_unix2dos>: /* * If the time from the last conversion is the same as now, then * skip the computations and use the saved result. */ if (lasttime != t) {
   18924:	e59f3154 	ldr	r3, [pc, #340]	; 18a80 <msdos_date_unix2dos+0x15c>
   18928:	e593c000 	ldr	ip, [r3]                                      
   1892c:	e15c0000 	cmp	ip, r0                                        
 * file timestamps. The passed in unix time is assumed to be in GMT.  
 */                                                                   
void                                                                  
msdos_date_unix2dos(unsigned int t, uint16_t *ddp,                    
                    uint16_t *dtp)                                    
{                                                                     
   18930:	e92d01f0 	push	{r4, r5, r6, r7, r8}                         
                                                                      
	/*                                                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
   18934:	0a00004e 	beq	18a74 <msdos_date_unix2dos+0x150>             
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
   18938:	e59f5144 	ldr	r5, [pc, #324]	; 18a84 <msdos_date_unix2dos+0x160>
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
   1893c:	e59f6144 	ldr	r6, [pc, #324]	; 18a88 <msdos_date_unix2dos+0x164>
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
   18940:	e0858590 	umull	r8, r5, r0, r5                              
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
   18944:	e084c096 	umull	ip, r4, r6, r0                              
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
   18948:	e59f713c 	ldr	r7, [pc, #316]	; 18a8c <msdos_date_unix2dos+0x168>
   1894c:	e1a055a5 	lsr	r5, r5, #11                                   
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
   18950:	e1a042a4 	lsr	r4, r4, #5                                    
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
   18954:	e0878795 	umull	r8, r7, r5, r7                              
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
   18958:	e086c694 	umull	ip, r6, r4, r6                              
		/*                                                                  
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
   1895c:	e59fc12c 	ldr	ip, [pc, #300]	; 18a90 <msdos_date_unix2dos+0x16c>
   18960:	e08c8c90 	umull	r8, ip, r0, ip                              
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
   18964:	e1a07227 	lsr	r7, r7, #4                                    
   18968:	e0877087 	add	r7, r7, r7, lsl #1                            
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
   1896c:	e1a062a6 	lsr	r6, r6, #5                                    
		    + (((t / 3600) % 24) << MSDOS_DT_HOURS_SHIFT);                  
   18970:	e0455187 	sub	r5, r5, r7, lsl #3                            
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
		    + (((t / 60) % 60) << MSDOS_DT_MINUTES_SHIFT)                   
   18974:	e0666206 	rsb	r6, r6, r6, lsl #4                            
   18978:	e0446106 	sub	r6, r4, r6, lsl #2                            
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
   1897c:	e1a05585 	lsl	r5, r5, #11                                   
   18980:	e0644204 	rsb	r4, r4, r4, lsl #4                            
   18984:	e0855286 	add	r5, r5, r6, lsl #5                            
   18988:	e0407104 	sub	r7, r0, r4, lsl #2                            
   1898c:	e08570a7 	add	r7, r5, r7, lsr #1                            
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
		if (days != lastday) {                                              
   18990:	e5935008 	ldr	r5, [r3, #8]                                  
		/*                                                                  
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
   18994:	e1a0c82c 	lsr	ip, ip, #16                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
   18998:	e1a07807 	lsl	r7, r7, #16                                   
   1899c:	e1a07827 	lsr	r7, r7, #16                                   
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
		if (days != lastday) {                                              
   189a0:	e15c0005 	cmp	ip, r5                                        
	/*                                                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
		lasttime = t;                                                       
   189a4:	e5830000 	str	r0, [r3]                                      
		lastdtime = (((t % 60) >> 1) << MSDOS_DT_2SECONDS_SHIFT)            
   189a8:	e1c370b4 	strh	r7, [r3, #4]                                 
		 * If the number of days since 1970 is the same as the last         
		 * time we did the computation then skip all this leap year         
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
		if (days != lastday) {                                              
   189ac:	01d3c0b6 	ldrheq	ip, [r3, #6]                               
   189b0:	0a000027 	beq	18a54 <msdos_date_unix2dos+0x130>             
			lastday = days;                                                    
   189b4:	e583c008 	str	ip, [r3, #8]                                  
			for (year = 1970;; year++) {                                       
   189b8:	e59f00d4 	ldr	r0, [pc, #212]	; 18a94 <msdos_date_unix2dos+0x170>
				inc = year & 0x03 ? 365 : 366;                                    
   189bc:	e59f80d4 	ldr	r8, [pc, #212]	; 18a98 <msdos_date_unix2dos+0x174>
   189c0:	e59f60d4 	ldr	r6, [pc, #212]	; 18a9c <msdos_date_unix2dos+0x178>
   189c4:	ea000001 	b	189d0 <msdos_date_unix2dos+0xac>                
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
   189c8:	e064c00c 	rsb	ip, r4, ip                                    
		 * and month stuff.                                                 
		 */                                                                 
		days = t / (SECONDSPERDAY);                                         
		if (days != lastday) {                                              
			lastday = days;                                                    
			for (year = 1970;; year++) {                                       
   189cc:	e2800001 	add	r0, r0, #1                                    
				inc = year & 0x03 ? 365 : 366;                                    
   189d0:	e2105003 	ands	r5, r0, #3                                   
   189d4:	01a04008 	moveq	r4, r8                                      
   189d8:	11a04006 	movne	r4, r6                                      
				if (days < inc)                                                   
   189dc:	e15c0004 	cmp	ip, r4                                        
   189e0:	2afffff8 	bcs	189c8 <msdos_date_unix2dos+0xa4>              
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
   189e4:	e59f40b4 	ldr	r4, [pc, #180]	; 18aa0 <msdos_date_unix2dos+0x17c>
   189e8:	e3550000 	cmp	r5, #0                                        
   189ec:	e2446018 	sub	r6, r4, #24                                   
   189f0:	01a06004 	moveq	r6, r4                                      
			for (month = 0; month < 12; month++) {                             
   189f4:	e3a04000 	mov	r4, #0                                        
				if (days < months[month])                                         
   189f8:	e0d650b2 	ldrh	r5, [r6], #2                                 
   189fc:	e155000c 	cmp	r5, ip                                        
   18a00:	8a000017 	bhi	18a64 <msdos_date_unix2dos+0x140>             
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
			for (month = 0; month < 12; month++) {                             
   18a04:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
   18a08:	e354000c 	cmp	r4, #12                                       <== NOT EXECUTED
				if (days < months[month])                                         
					break;                                                           
				days -= months[month];                                            
   18a0c:	e065c00c 	rsb	ip, r5, ip                                    <== NOT EXECUTED
				if (days < inc)                                                   
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
			for (month = 0; month < 12; month++) {                             
   18a10:	1afffff8 	bne	189f8 <msdos_date_unix2dos+0xd4>              <== NOT EXECUTED
   18a14:	e3a04e1a 	mov	r4, #416	; 0x1a0                              <== NOT EXECUTED
				if (days < months[month])                                         
					break;                                                           
				days -= months[month];                                            
			}                                                                  
			lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)                     
   18a18:	e2844001 	add	r4, r4, #1                                    
   18a1c:	e084c00c 	add	ip, r4, ip                                    
			 * Remember dos's idea of time is relative to 1980.                
			 * unix's is relative to 1970.  If somehow we get a                
			 * time before 1980 then don't give totally crazy                  
			 * results.                                                        
			 */                                                                
			if (year > 1980)                                                   
   18a20:	e59f407c 	ldr	r4, [pc, #124]	; 18aa4 <msdos_date_unix2dos+0x180>
			for (month = 0; month < 12; month++) {                             
				if (days < months[month])                                         
					break;                                                           
				days -= months[month];                                            
			}                                                                  
			lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)                     
   18a24:	e1a0c80c 	lsl	ip, ip, #16                                   
   18a28:	e1a0c82c 	lsr	ip, ip, #16                                   
			 * Remember dos's idea of time is relative to 1980.                
			 * unix's is relative to 1970.  If somehow we get a                
			 * time before 1980 then don't give totally crazy                  
			 * results.                                                        
			 */                                                                
			if (year > 1980)                                                   
   18a2c:	e1500004 	cmp	r0, r4                                        
			for (month = 0; month < 12; month++) {                             
				if (days < months[month])                                         
					break;                                                           
				days -= months[month];                                            
			}                                                                  
			lastddate = ((days + 1) << MSDOS_DD_DAY_SHIFT)                     
   18a30:	e1c3c0b6 	strh	ip, [r3, #6]                                 
			 * Remember dos's idea of time is relative to 1980.                
			 * unix's is relative to 1970.  If somehow we get a                
			 * time before 1980 then don't give totally crazy                  
			 * results.                                                        
			 */                                                                
			if (year > 1980)                                                   
   18a34:	9a000006 	bls	18a54 <msdos_date_unix2dos+0x130>             
				lastddate += (year - 1980) <<                                     
   18a38:	e2400e7b 	sub	r0, r0, #1968	; 0x7b0                         
   18a3c:	e240000c 	sub	r0, r0, #12                                   
   18a40:	e08cc480 	add	ip, ip, r0, lsl #9                            
   18a44:	e1a0c80c 	lsl	ip, ip, #16                                   
   18a48:	e59f3030 	ldr	r3, [pc, #48]	; 18a80 <msdos_date_unix2dos+0x15c>
   18a4c:	e1a0c82c 	lsr	ip, ip, #16                                   
   18a50:	e1c3c0b6 	strh	ip, [r3, #6]                                 
				             MSDOS_DD_YEAR_SHIFT;                                 
		}                                                                   
	}                                                                    
	*dtp = lastdtime;                                                    
   18a54:	e1c270b0 	strh	r7, [r2]                                     
	*ddp = lastddate;                                                    
   18a58:	e1c1c0b0 	strh	ip, [r1]                                     
}                                                                     
   18a5c:	e8bd01f0 	pop	{r4, r5, r6, r7, r8}                          
   18a60:	e12fff1e 	bx	lr                                             
					break;                                                           
				days -= inc;                                                      
			}                                                                  
			months = year & 0x03 ? regyear : leapyear;                         
			for (month = 0; month < 12; month++) {                             
				if (days < months[month])                                         
   18a64:	e1a04a84 	lsl	r4, r4, #21                                   
   18a68:	e2844602 	add	r4, r4, #2097152	; 0x200000                   
   18a6c:	e1a04824 	lsr	r4, r4, #16                                   
   18a70:	eaffffe8 	b	18a18 <msdos_date_unix2dos+0xf4>                
                                                                      
	/*                                                                   
	 * If the time from the last conversion is the same as now, then     
	 * skip the computations and use the saved result.                   
	 */                                                                  
	if (lasttime != t) {                                                 
   18a74:	e1d370b4 	ldrh	r7, [r3, #4]                                 
   18a78:	e1d3c0b6 	ldrh	ip, [r3, #6]                                 
   18a7c:	eafffff4 	b	18a54 <msdos_date_unix2dos+0x130>               
                                                                      

00016a88 <msdos_dir_is_empty>: msdos_dir_is_empty( rtems_filesystem_mount_table_entry_t *mt_entry, fat_file_fd_t *fat_fd, bool *ret_val ) {
   16a88:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
   16a8c:	e5905008 	ldr	r5, [r0, #8]                                  
msdos_dir_is_empty(                                                   
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd,                     
    bool                                 *ret_val                     
    )                                                                 
{                                                                     
   16a90:	e24dd008 	sub	sp, sp, #8                                    
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         j = 0, i = 0;                                    
                                                                      
    /* dir is not empty */                                            
    *ret_val = false;                                                 
   16a94:	e3a09000 	mov	r9, #0                                        
msdos_dir_is_empty(                                                   
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd,                     
    bool                                 *ret_val                     
    )                                                                 
{                                                                     
   16a98:	e58d1004 	str	r1, [sp, #4]                                  
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         j = 0, i = 0;                                    
                                                                      
    /* dir is not empty */                                            
    *ret_val = false;                                                 
   16a9c:	e5c29000 	strb	r9, [r2]                                     
   16aa0:	e1d5a0b0 	ldrh	sl, [r5]                                     
   16aa4:	e59540a0 	ldr	r4, [r5, #160]	; 0xa0                         
msdos_dir_is_empty(                                                   
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_file_fd_t                        *fat_fd,                     
    bool                                 *ret_val                     
    )                                                                 
{                                                                     
   16aa8:	e1a0b002 	mov	fp, r2                                        
    uint32_t         j = 0, i = 0;                                    
                                                                      
    /* dir is not empty */                                            
    *ret_val = false;                                                 
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
   16aac:	e1a00005 	mov	r0, r5                                        
   16ab0:	e59d1004 	ldr	r1, [sp, #4]                                  
   16ab4:	e0020a99 	mul	r2, r9, sl                                    
   16ab8:	e1a0300a 	mov	r3, sl                                        
   16abc:	e58d4000 	str	r4, [sp]                                      
   16ac0:	ebffea5d 	bl	1143c <fat_file_read>                          
   16ac4:	e3500000 	cmp	r0, #0                                        
   16ac8:	0a00002c 	beq	16b80 <msdos_dir_is_empty+0xf8>               
                                  fs_info->fat.vol.bps,               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
   16acc:	e350001f 	cmp	r0, #31                                       
   16ad0:	da00002d 	ble	16b8c <msdos_dir_is_empty+0x104>              
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
   16ad4:	e1d5a0b0 	ldrh	sl, [r5]                                     
   16ad8:	e15a0000 	cmp	sl, r0                                        
   16adc:	1a00002c 	bne	16b94 <msdos_dir_is_empty+0x10c>              
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
   16ae0:	e35a0000 	cmp	sl, #0                                        
   16ae4:	0a000022 	beq	16b74 <msdos_dir_is_empty+0xec>               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
   16ae8:	e59540a0 	ldr	r4, [r5, #160]	; 0xa0                         
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
   16aec:	e3a06000 	mov	r6, #0                                        
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
   16af0:	e1a07004 	mov	r7, r4                                        
             * then consider it as empty.                             
             *                                                        
             * Just ignore long file name entries. They must have a short entry to
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
   16af4:	e7d48006 	ldrb	r8, [r4, r6]                                 
   16af8:	e35800e5 	cmp	r8, #229	; 0xe5                               
   16afc:	0a000016 	beq	16b5c <msdos_dir_is_empty+0xd4>               
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
   16b00:	e5d7300b 	ldrb	r3, [r7, #11]                                
   16b04:	e203303f 	and	r3, r3, #63	; 0x3f                            
             *                                                        
             * Just ignore long file name entries. They must have a short entry to
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
   16b08:	e353000f 	cmp	r3, #15                                       
   16b0c:	0a000012 	beq	16b5c <msdos_dir_is_empty+0xd4>               
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
   16b10:	e1a00007 	mov	r0, r7                                        
   16b14:	e59f108c 	ldr	r1, [pc, #140]	; 16ba8 <msdos_dir_is_empty+0x120>
   16b18:	e3a0200b 	mov	r2, #11                                       
   16b1c:	eb0014ba 	bl	1be0c <strncmp>                                
             * be valid.                                              
             */                                                       
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
   16b20:	e3500000 	cmp	r0, #0                                        
   16b24:	0a00000c 	beq	16b5c <msdos_dir_is_empty+0xd4>               
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
                         MSDOS_SHORT_NAME_LEN) == 0) ||               
                (strncmp(MSDOS_DIR_NAME((entry)),                     
   16b28:	e1a00007 	mov	r0, r7                                        
   16b2c:	e59f1078 	ldr	r1, [pc, #120]	; 16bac <msdos_dir_is_empty+0x124>
   16b30:	e3a0200b 	mov	r2, #11                                       
   16b34:	eb0014b4 	bl	1be0c <strncmp>                                
            if (((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                    
                 MSDOS_THIS_DIR_ENTRY_EMPTY) ||                       
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==    
                 MSDOS_ATTR_LFN) ||                                   
                (strncmp(MSDOS_DIR_NAME((entry)), MSDOS_DOT_NAME,     
                         MSDOS_SHORT_NAME_LEN) == 0) ||               
   16b38:	e3500000 	cmp	r0, #0                                        
   16b3c:	0a000006 	beq	16b5c <msdos_dir_is_empty+0xd4>               
                continue;                                             
                                                                      
            /*                                                        
             * Nothing more to look at.                               
             */                                                       
            if ((*MSDOS_DIR_NAME(entry)) ==                           
   16b40:	e3580000 	cmp	r8, #0                                        
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
            {                                                         
                *ret_val = true;                                      
   16b44:	03a03001 	moveq	r3, #1                                      
   16b48:	05cb3000 	strbeq	r3, [fp]                                   
                return RC_OK;                                         
   16b4c:	01a00008 	moveq	r0, r8                                      
            }                                                         
                                                                      
            /*                                                        
             * Short file name entries mean not empty.                
             */                                                       
            return RC_OK;                                             
   16b50:	13a00000 	movne	r0, #0                                      
        }                                                             
        j++;                                                          
    }                                                                 
    *ret_val = true;                                                  
    return RC_OK;                                                     
}                                                                     
   16b54:	e28dd008 	add	sp, sp, #8                                    
   16b58:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
        assert(ret == fs_info->fat.vol.bps);                          
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
             i < fs_info->fat.vol.bps;                                
             i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
   16b5c:	e2866020 	add	r6, r6, #32                                   
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
   16b60:	e156000a 	cmp	r6, sl                                        
             i < fs_info->fat.vol.bps;                                
             i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
   16b64:	e2877020 	add	r7, r7, #32                                   
            return -1;                                                
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (i = 0;                                                   
   16b68:	3affffe1 	bcc	16af4 <msdos_dir_is_empty+0x6c>               
            /*                                                        
             * Short file name entries mean not empty.                
             */                                                       
            return RC_OK;                                             
        }                                                             
        j++;                                                          
   16b6c:	e2899001 	add	r9, r9, #1                                    <== NOT EXECUTED
   16b70:	eaffffcd 	b	16aac <msdos_dir_is_empty+0x24>                 <== NOT EXECUTED
             */                                                       
            if ((*MSDOS_DIR_NAME(entry)) ==                           
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
            {                                                         
                *ret_val = true;                                      
                return RC_OK;                                         
   16b74:	e59540a0 	ldr	r4, [r5, #160]	; 0xa0                         <== NOT EXECUTED
            /*                                                        
             * Short file name entries mean not empty.                
             */                                                       
            return RC_OK;                                             
        }                                                             
        j++;                                                          
   16b78:	e2899001 	add	r9, r9, #1                                    <== NOT EXECUTED
   16b7c:	eaffffca 	b	16aac <msdos_dir_is_empty+0x24>                 <== NOT EXECUTED
    }                                                                 
    *ret_val = true;                                                  
   16b80:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   16b84:	e5cb3000 	strb	r3, [fp]                                     <== NOT EXECUTED
    return RC_OK;                                                     
   16b88:	eafffff1 	b	16b54 <msdos_dir_is_empty+0xcc>                 <== NOT EXECUTED
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * fs_info->fat.vol.bps,
                                  fs_info->fat.vol.bps,               
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            return -1;                                                
   16b8c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   16b90:	eaffffef 	b	16b54 <msdos_dir_is_empty+0xcc>                 <== NOT EXECUTED
                                                                      
        assert(ret == fs_info->fat.vol.bps);                          
   16b94:	e59f0014 	ldr	r0, [pc, #20]	; 16bb0 <msdos_dir_is_empty+0x128><== NOT EXECUTED
   16b98:	e59f1014 	ldr	r1, [pc, #20]	; 16bb4 <msdos_dir_is_empty+0x12c><== NOT EXECUTED
   16b9c:	e59f2014 	ldr	r2, [pc, #20]	; 16bb8 <msdos_dir_is_empty+0x130><== NOT EXECUTED
   16ba0:	e59f3014 	ldr	r3, [pc, #20]	; 16bbc <msdos_dir_is_empty+0x134><== NOT EXECUTED
   16ba4:	ebfff2fa 	bl	13794 <__assert_func>                          <== NOT EXECUTED
                                                                      

00018d9c <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) {
   18d9c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         <== NOT EXECUTED
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
   18da0:	e5903018 	ldr	r3, [r0, #24]                                 <== NOT EXECUTED
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
   18da4:	e24ddf55 	sub	sp, sp, #340	; 0x154                          <== NOT EXECUTED
   18da8:	e58d000c 	str	r0, [sp, #12]                                 <== NOT EXECUTED
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
   18dac:	e593c020 	ldr	ip, [r3, #32]                                 <== NOT EXECUTED
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   18db0:	e5900024 	ldr	r0, [r0, #36]	; 0x24                          <== NOT EXECUTED
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
   18db4:	e58d101c 	str	r1, [sp, #28]                                 <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
   18db8:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
   18dbc:	e58d3014 	str	r3, [sp, #20]                                 <== NOT EXECUTED
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
   18dc0:	e35c0001 	cmp	ip, #1                                        <== NOT EXECUTED
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
    fat_file_fd_t     *tmp_fat_fd = NULL;                             
   18dc4:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
{                                                                     
   18dc8:	e1a04002 	mov	r4, r2                                        <== NOT EXECUTED
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   18dcc:	e5905008 	ldr	r5, [r0, #8]                                  <== NOT EXECUTED
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
    fat_file_fd_t     *tmp_fat_fd = NULL;                             
   18dd0:	e58d314c 	str	r3, [sp, #332]	; 0x14c                        <== NOT EXECUTED
    uint32_t           start = 0;                                     
    ssize_t            ret = 0;                                       
    uint32_t           cmpltd = 0;                                    
    uint32_t           j = 0, i = 0;                                  
    uint32_t           bts2rd = 0;                                    
    uint32_t           cur_cln = 0;                                   
   18dd4:	e58d3150 	str	r3, [sp, #336]	; 0x150                        <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
   18dd8:	e99100c0 	ldmib	r1, {r6, r7}                                <== NOT EXECUTED
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
   18ddc:	0a0000fc 	beq	191d4 <msdos_dir_read+0x438>                  <== NOT EXECUTED
   18de0:	e1d510b6 	ldrh	r1, [r5, #6]                                 <== NOT EXECUTED
   18de4:	e58d1020 	str	r1, [sp, #32]                                 <== NOT EXECUTED
             fs_info->fat.vol.bpc;                                    
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   18de8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   18dec:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         <== NOT EXECUTED
   18df0:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   18df4:	ebffbe8f 	bl	8838 <rtems_semaphore_obtain>                  <== NOT EXECUTED
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   18df8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   18dfc:	1a00011f 	bne	19280 <msdos_dir_read+0x4e4>                  <== NOT EXECUTED
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
    count = (count / sizeof(struct dirent)) * sizeof(struct dirent);  
   18e00:	e59fb504 	ldr	fp, [pc, #1284]	; 1930c <msdos_dir_read+0x570><== NOT EXECUTED
   18e04:	e08b2b94 	umull	r2, fp, r4, fp                              <== NOT EXECUTED
   18e08:	e1a0b42b 	lsr	fp, fp, #8                                    <== NOT EXECUTED
   18e0c:	e08bb20b 	add	fp, fp, fp, lsl #4                            <== NOT EXECUTED
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    while (count > 0)                                                 
   18e10:	e1b0b20b 	lsls	fp, fp, #4                                   <== NOT EXECUTED
   18e14:	01a0300b 	moveq	r3, fp                                      <== NOT EXECUTED
   18e18:	0a000090 	beq	19060 <msdos_dir_read+0x2c4>                  <== NOT EXECUTED
    /*                                                                
     * cast start and count - protect against using sizes that are not exact
     * multiples of the -dirent- size. These could result in unexpected
     * results                                                        
     */                                                               
    start = iop->offset / sizeof(struct dirent);                      
   18e1c:	e58d0008 	str	r0, [sp, #8]                                  <== NOT EXECUTED
   18e20:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   18e24:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   18e28:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   18e2c:	e3a02e11 	mov	r2, #272	; 0x110                              <== NOT EXECUTED
   18e30:	ebffa287 	bl	1854 <__divdi3>                                <== NOT EXECUTED
   18e34:	e59d3008 	ldr	r3, [sp, #8]                                  <== NOT EXECUTED
   18e38:	e58d3010 	str	r3, [sp, #16]                                 <== NOT EXECUTED
   18e3c:	e58d3018 	str	r3, [sp, #24]                                 <== NOT EXECUTED
   18e40:	e1a08000 	mov	r8, r0                                        <== NOT EXECUTED
   18e44:	e3e0a000 	mvn	sl, #0                                        <== NOT EXECUTED
   18e48:	e1a09003 	mov	r9, r3                                        <== NOT EXECUTED
         * fat-file is already opened by open call, so read it        
         * Always read directory fat-file from the beggining because of MSDOS
         * directories feature :( - we should count elements currently
         * present in the directory because there may be holes :)     
         */                                                           
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),      
   18e4c:	e595c0a0 	ldr	ip, [r5, #160]	; 0xa0                         <== NOT EXECUTED
   18e50:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   18e54:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
   18e58:	e59d2008 	ldr	r2, [sp, #8]                                  <== NOT EXECUTED
   18e5c:	e59d3020 	ldr	r3, [sp, #32]                                 <== NOT EXECUTED
   18e60:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   18e64:	ebffe174 	bl	1143c <fat_file_read>                          <== NOT EXECUTED
                            bts2rd, fs_info->cl_buf);                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
   18e68:	e350001f 	cmp	r0, #31                                       <== NOT EXECUTED
         * fat-file is already opened by open call, so read it        
         * Always read directory fat-file from the beggining because of MSDOS
         * directories feature :( - we should count elements currently
         * present in the directory because there may be holes :)     
         */                                                           
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),      
   18e6c:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
                            bts2rd, fs_info->cl_buf);                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
   18e70:	da000100 	ble	19278 <msdos_dir_read+0x4dc>                  <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
   18e74:	e59570a0 	ldr	r7, [r5, #160]	; 0xa0                         <== NOT EXECUTED
                                                                      
            /*                                                        
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
   18e78:	e5d73000 	ldrb	r3, [r7]                                     <== NOT EXECUTED
   18e7c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   18e80:	0a0000c9 	beq	191ac <msdos_dir_read+0x410>                  <== NOT EXECUTED
   18e84:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
   18e88:	ea000009 	b	18eb4 <msdos_dir_read+0x118>                    <== NOT EXECUTED
            /* Is the directory entry empty */                        
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
                continue;                                             
                                                                      
            /* Is the directory entry empty a volume label */         
            if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&  
   18e8c:	e352000f 	cmp	r2, #15                                       <== NOT EXECUTED
   18e90:	0a000060 	beq	19018 <msdos_dir_read+0x27c>                  <== NOT EXECUTED
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
   18e94:	e2844020 	add	r4, r4, #32                                   <== NOT EXECUTED
   18e98:	e1540006 	cmp	r4, r6                                        <== NOT EXECUTED
   18e9c:	2a000068 	bcs	19044 <msdos_dir_read+0x2a8>                  <== NOT EXECUTED
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
   18ea0:	e59570a0 	ldr	r7, [r5, #160]	; 0xa0                         <== NOT EXECUTED
                                                                      
            /*                                                        
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
   18ea4:	e7d73004 	ldrb	r3, [r7, r4]                                 <== NOT EXECUTED
   18ea8:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
   18eac:	e0877004 	add	r7, r7, r4                                    <== NOT EXECUTED
                                                                      
            /*                                                        
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
   18eb0:	0a0000bd 	beq	191ac <msdos_dir_read+0x410>                  <== NOT EXECUTED
                rtems_semaphore_release(fs_info->vol_sema);           
                return cmpltd;                                        
            }                                                         
                                                                      
            /* Is the directory entry empty */                        
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
   18eb4:	e35300e5 	cmp	r3, #229	; 0xe5                               <== NOT EXECUTED
   18eb8:	0afffff5 	beq	18e94 <msdos_dir_read+0xf8>                   <== NOT EXECUTED
                continue;                                             
                                                                      
            /* Is the directory entry empty a volume label */         
            if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&  
   18ebc:	e5d7200b 	ldrb	r2, [r7, #11]                                <== NOT EXECUTED
   18ec0:	e3120008 	tst	r2, #8                                        <== NOT EXECUTED
                ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) != MSDOS_ATTR_LFN))
   18ec4:	e202203f 	and	r2, r2, #63	; 0x3f                            <== NOT EXECUTED
            /* Is the directory entry empty */                        
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) == MSDOS_THIS_DIR_ENTRY_EMPTY)
                continue;                                             
                                                                      
            /* Is the directory entry empty a volume label */         
            if (((*MSDOS_DIR_ATTR(entry)) & MSDOS_ATTR_VOLUME_ID) &&  
   18ec8:	1affffef 	bne	18e8c <msdos_dir_read+0xf0>                   <== NOT EXECUTED
                                                                      
            /*                                                        
             * Check the attribute to see if the entry is for a long file
             * name.                                                  
             */                                                       
            if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) ==     
   18ecc:	e352000f 	cmp	r2, #15                                       <== NOT EXECUTED
   18ed0:	0a000050 	beq	19018 <msdos_dir_read+0x27c>                  <== NOT EXECUTED
                fat_dir_pos_t dir_pos;                                
                                                                      
                /*                                                    
                 * Skip active entries until get the entry to start from.
                 */                                                   
                if (start)                                            
   18ed4:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
                    start--;                                          
   18ed8:	12488001 	subne	r8, r8, #1                                  <== NOT EXECUTED
                /*                                                    
                 * Skip active entries until get the entry to start from.
                 */                                                   
                if (start)                                            
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
   18edc:	13e0a000 	mvnne	sl, #0                                      <== NOT EXECUTED
                fat_dir_pos_t dir_pos;                                
                                                                      
                /*                                                    
                 * Skip active entries until get the entry to start from.
                 */                                                   
                if (start)                                            
   18ee0:	1affffeb 	bne	18e94 <msdos_dir_read+0xf8>                   <== NOT EXECUTED
                 * unfortunately there is no method to extract ino except to
                 * open fat-file descriptor :( ... so, open it        
                 */                                                   
                                                                      
                /* get number of cluster we are working with */       
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, 
   18ee4:	e28dce15 	add	ip, sp, #336	; 0x150                          <== NOT EXECUTED
   18ee8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   18eec:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
   18ef0:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
   18ef4:	e59d3008 	ldr	r3, [sp, #8]                                  <== NOT EXECUTED
   18ef8:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   18efc:	ebffe233 	bl	117d0 <fat_file_ioctl>                         <== NOT EXECUTED
                                    j * bts2rd, &cur_cln);            
                if (rc != RC_OK)                                      
   18f00:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   18f04:	1a0000bc 	bne	191fc <msdos_dir_read+0x460>                  <== NOT EXECUTED
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
   18f08:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   18f0c:	e58d3144 	str	r3, [sp, #324]	; 0x144                        <== NOT EXECUTED
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
   18f10:	e58d3148 	str	r3, [sp, #328]	; 0x148                        <== NOT EXECUTED
                    rtems_semaphore_release(fs_info->vol_sema);       
                    return rc;                                        
                }                                                     
                                                                      
                fat_dir_pos_init(&dir_pos);                           
                dir_pos.sname.cln = cur_cln;                          
   18f14:	e59d3150 	ldr	r3, [sp, #336]	; 0x150                        <== NOT EXECUTED
                dir_pos.sname.ofs = i;                                
                rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
   18f18:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   18f1c:	e28d1f4f 	add	r1, sp, #316	; 0x13c                          <== NOT EXECUTED
   18f20:	e28d2f53 	add	r2, sp, #332	; 0x14c                          <== NOT EXECUTED
                    rtems_semaphore_release(fs_info->vol_sema);       
                    return rc;                                        
                }                                                     
                                                                      
                fat_dir_pos_init(&dir_pos);                           
                dir_pos.sname.cln = cur_cln;                          
   18f24:	e58d313c 	str	r3, [sp, #316]	; 0x13c                        <== NOT EXECUTED
                dir_pos.sname.ofs = i;                                
   18f28:	e58d4140 	str	r4, [sp, #320]	; 0x140                        <== NOT EXECUTED
                rc = fat_file_open(&fs_info->fat, &dir_pos, &tmp_fat_fd);
   18f2c:	ebffe0a4 	bl	111c4 <fat_file_open>                          <== NOT EXECUTED
                if (rc != RC_OK)                                      
   18f30:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   18f34:	1a0000b0 	bne	191fc <msdos_dir_read+0x460>                  <== NOT EXECUTED
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
                tmp_dirent.d_reclen = sizeof(struct dirent);          
                tmp_dirent.d_ino = tmp_fat_fd->ino;                   
   18f38:	e59d314c 	ldr	r3, [sp, #332]	; 0x14c                        <== NOT EXECUTED
   18f3c:	e593300c 	ldr	r3, [r3, #12]                                 <== NOT EXECUTED
                }                                                     
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
                tmp_dirent.d_reclen = sizeof(struct dirent);          
   18f40:	e3a02e11 	mov	r2, #272	; 0x110                              <== NOT EXECUTED
                /*                                                    
                 * If a long file name check if the correct number of 
                 * entries have been found and if the checksum is correct.
                 * If not return the short file name.                 
                 */                                                   
                if (lfn_start != FAT_FILE_SHORT_NAME)                 
   18f44:	e37a0001 	cmn	sl, #1                                        <== NOT EXECUTED
                    return rc;                                        
                }                                                     
                                                                      
                /* fill in dirent structure */                        
                /* XXX: from what and in what d_off should be computed ?! */
                tmp_dirent.d_off = start + cmpltd;                    
   18f48:	e58d9030 	str	r9, [sp, #48]	; 0x30                          <== NOT EXECUTED
   18f4c:	e58d8034 	str	r8, [sp, #52]	; 0x34                          <== NOT EXECUTED
                tmp_dirent.d_reclen = sizeof(struct dirent);          
   18f50:	e1cd23b8 	strh	r2, [sp, #56]	; 0x38                         <== NOT EXECUTED
                tmp_dirent.d_ino = tmp_fat_fd->ino;                   
   18f54:	e58d302c 	str	r3, [sp, #44]	; 0x2c                          <== NOT EXECUTED
                /*                                                    
                 * If a long file name check if the correct number of 
                 * entries have been found and if the checksum is correct.
                 * If not return the short file name.                 
                 */                                                   
                if (lfn_start != FAT_FILE_SHORT_NAME)                 
   18f58:	0a000012 	beq	18fa8 <msdos_dir_read+0x20c>                  <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   18f5c:	e287c00b 	add	ip, r7, #11                                   <== NOT EXECUTED
   18f60:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
   18f64:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
   18f68:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   18f6c:	ea000001 	b	18f78 <msdos_dir_read+0x1dc>                    <== NOT EXECUTED
   18f70:	e2100001 	ands	r0, r0, #1                                   <== NOT EXECUTED
   18f74:	13a00080 	movne	r0, #128	; 0x80                             <== NOT EXECUTED
   18f78:	e4d31001 	ldrb	r1, [r3], #1                                 <== NOT EXECUTED
   18f7c:	e08120a2 	add	r2, r1, r2, lsr #1                            <== NOT EXECUTED
   18f80:	e20220ff 	and	r2, r2, #255	; 0xff                           <== NOT EXECUTED
   18f84:	e0820000 	add	r0, r2, r0                                    <== NOT EXECUTED
                {                                                     
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
   18f88:	e153000c 	cmp	r3, ip                                        <== NOT EXECUTED
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
   18f8c:	e20020ff 	and	r2, r0, #255	; 0xff                           <== NOT EXECUTED
                {                                                     
                    uint8_t  cs = 0;                                  
                    uint8_t* p = (uint8_t*) entry;                    
                    int      i;                                       
                                                                      
                    for (i = 0; i < 11; i++, p++)                     
   18f90:	1afffff6 	bne	18f70 <msdos_dir_read+0x1d4>                  <== NOT EXECUTED
                        cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;  
                                                                      
                    if (lfn_entries || (lfn_checksum != cs))          
   18f94:	e59d3018 	ldr	r3, [sp, #24]                                 <== NOT EXECUTED
   18f98:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
   18f9c:	e3510000 	cmp	r1, #0                                        <== NOT EXECUTED
   18fa0:	01520003 	cmpeq	r2, r3                                      <== NOT EXECUTED
   18fa4:	0a000064 	beq	1913c <msdos_dir_read+0x3a0>                  <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   18fa8:	e287c008 	add	ip, r7, #8                                    <== NOT EXECUTED
   18fac:	e1a0300c 	mov	r3, ip                                        <== NOT EXECUTED
   18fb0:	e3a01008 	mov	r1, #8                                        <== NOT EXECUTED
  /*                                                                  
   * find last non-blank character of base name                       
   */                                                                 
  for ((i       =       MSDOS_SHORT_BASE_LEN  ,                       
	src_tmp = src + MSDOS_SHORT_BASE_LEN-1);                             
       ((i > 0) &&                                                    
   18fb4:	e5732001 	ldrb	r2, [r3, #-1]!                               <== NOT EXECUTED
   18fb8:	e3520020 	cmp	r2, #32                                       <== NOT EXECUTED
   18fbc:	1a000094 	bne	19214 <msdos_dir_read+0x478>                  <== NOT EXECUTED
  const char *src_tmp;                                                
                                                                      
  /*                                                                  
   * find last non-blank character of base name                       
   */                                                                 
  for ((i       =       MSDOS_SHORT_BASE_LEN  ,                       
   18fc0:	e2511001 	subs	r1, r1, #1                                   <== NOT EXECUTED
   18fc4:	1afffffa 	bne	18fb4 <msdos_dir_read+0x218>                  <== NOT EXECUTED
   18fc8:	e58d1024 	str	r1, [sp, #36]	; 0x24                          <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
   18fcc:	e28d303c 	add	r3, sp, #60	; 0x3c                            <== NOT EXECUTED
  /*                                                                  
   * find last non-blank character of extension                       
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
	src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);         
       ((i > 0) &&                                                    
   18fd0:	e5d7200a 	ldrb	r2, [r7, #10]                                <== NOT EXECUTED
   18fd4:	e3520020 	cmp	r2, #32                                       <== NOT EXECUTED
   18fd8:	1a0000c9 	bne	19304 <msdos_dir_read+0x568>                  <== NOT EXECUTED
   18fdc:	e5d72009 	ldrb	r2, [r7, #9]                                 <== NOT EXECUTED
   18fe0:	e3520020 	cmp	r2, #32                                       <== NOT EXECUTED
   18fe4:	1a0000aa 	bne	19294 <msdos_dir_read+0x4f8>                  <== NOT EXECUTED
   18fe8:	e5d72008 	ldrb	r2, [r7, #8]                                 <== NOT EXECUTED
   18fec:	e3520020 	cmp	r2, #32                                       <== NOT EXECUTED
   18ff0:	13a0e001 	movne	lr, #1                                      <== NOT EXECUTED
   18ff4:	1a0000a7 	bne	19298 <msdos_dir_read+0x4fc>                  <== NOT EXECUTED
    while (i-- > 0) {                                                 
      *dst++ = tolower((unsigned char)(*src_tmp++));                  
      len++;                                                          
    }                                                                 
  }                                                                   
  *dst = '\0'; /* terminate string */                                 
   18ff8:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   18ffc:	e5c32000 	strb	r2, [r3]                                     <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
   19000:	e59f3308 	ldr	r3, [pc, #776]	; 19310 <msdos_dir_read+0x574> <== NOT EXECUTED
   19004:	e59d2024 	ldr	r2, [sp, #36]	; 0x24                          <== NOT EXECUTED
   19008:	e28d1f55 	add	r1, sp, #340	; 0x154                          <== NOT EXECUTED
   1900c:	e18120b3 	strh	r2, [r1, r3]                                 <== NOT EXECUTED
   19010:	e3e0a000 	mvn	sl, #0                                        <== NOT EXECUTED
   19014:	ea00004d 	b	19150 <msdos_dir_read+0x3b4>                    <== NOT EXECUTED
                int   q;                                              
                                                                      
                /*                                                    
                 * Is this is the first entry of a LFN ?              
                 */                                                   
                if (lfn_start == FAT_FILE_SHORT_NAME)                 
   19018:	e37a0001 	cmn	sl, #1                                        <== NOT EXECUTED
   1901c:	0a000038 	beq	19104 <msdos_dir_read+0x368>                  <== NOT EXECUTED
                 * If the entry number or the check sum do not match  
                 * forget this series of long directory entries. These could
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
   19020:	e5d73000 	ldrb	r3, [r7]                                     <== NOT EXECUTED
   19024:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
   19028:	e203303f 	and	r3, r3, #63	; 0x3f                            <== NOT EXECUTED
   1902c:	e1530001 	cmp	r3, r1                                        <== NOT EXECUTED
   19030:	0a00000f 	beq	19074 <msdos_dir_read+0x2d8>                  <== NOT EXECUTED
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
   19034:	e2844020 	add	r4, r4, #32                                   <== NOT EXECUTED
   19038:	e1540006 	cmp	r4, r6                                        <== NOT EXECUTED
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||  
                    (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry))) 
                {                                                     
                    lfn_start = FAT_FILE_SHORT_NAME;                  
   1903c:	e3e0a000 	mvn	sl, #0                                        <== NOT EXECUTED
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
   19040:	3affff96 	bcc	18ea0 <msdos_dir_read+0x104>                  <== NOT EXECUTED
   19044:	e59d2008 	ldr	r2, [sp, #8]                                  <== NOT EXECUTED
   19048:	e59d3020 	ldr	r3, [sp, #32]                                 <== NOT EXECUTED
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    while (count > 0)                                                 
   1904c:	e35b0000 	cmp	fp, #0                                        <== NOT EXECUTED
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
            rtems_set_errno_and_return_minus_one(EIO);                
        }                                                             
                                                                      
        for (i = 0; i < ret; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)  
   19050:	e0822003 	add	r2, r2, r3                                    <== NOT EXECUTED
   19054:	e58d2008 	str	r2, [sp, #8]                                  <== NOT EXECUTED
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    while (count > 0)                                                 
   19058:	1affff7b 	bne	18e4c <msdos_dir_read+0xb0>                   <== NOT EXECUTED
   1905c:	e1a03009 	mov	r3, r9                                        <== NOT EXECUTED
                break;                                                
        }                                                             
        j++;                                                          
    }                                                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   19060:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         <== NOT EXECUTED
   19064:	e58d3004 	str	r3, [sp, #4]                                  <== NOT EXECUTED
   19068:	ebffbe3b 	bl	895c <rtems_semaphore_release>                 <== NOT EXECUTED
   1906c:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
    return cmpltd;                                                    
   19070:	ea000050 	b	191b8 <msdos_dir_read+0x41c>                    <== NOT EXECUTED
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||  
                    (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry))) 
   19074:	e5d7c00d 	ldrb	ip, [r7, #13]                                <== NOT EXECUTED
                 * forget this series of long directory entries. These could
                 * be orphaned entries depending on the history of the
                 * disk.                                              
                 */                                                   
                if ((lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &   
                                     MSDOS_LAST_LONG_ENTRY_MASK)) ||  
   19078:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
   1907c:	e15c0002 	cmp	ip, r2                                        <== NOT EXECUTED
   19080:	1affffeb 	bne	19034 <msdos_dir_read+0x298>                  <== NOT EXECUTED
                 * The DOS maximum length is 255 characters without the
                 * trailing nul character. We need to range check the length to
                 * fit in the directory entry name field.             
                 */                                                   
                                                                      
                lfn_entries--;                                        
   19084:	e2411001 	sub	r1, r1, #1                                    <== NOT EXECUTED
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
   19088:	e0813081 	add	r3, r1, r1, lsl #1                            <== NOT EXECUTED
                 * The DOS maximum length is 255 characters without the
                 * trailing nul character. We need to range check the length to
                 * fit in the directory entry name field.             
                 */                                                   
                                                                      
                lfn_entries--;                                        
   1908c:	e58d1010 	str	r1, [sp, #16]                                 <== NOT EXECUTED
                p = entry + 1;                                        
   19090:	e2877001 	add	r7, r7, #1                                    <== NOT EXECUTED
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
   19094:	e0813103 	add	r3, r1, r3, lsl #2                            <== NOT EXECUTED
   19098:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   1909c:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
   190a0:	e35300fe 	cmp	r3, #254	; 0xfe                               <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   190a4:	e0810003 	add	r0, r1, r3                                    <== NOT EXECUTED
                 * fit in the directory entry name field.             
                 */                                                   
                                                                      
                lfn_entries--;                                        
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
   190a8:	e1a01002 	mov	r1, r2                                        <== NOT EXECUTED
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
   190ac:	8a000012 	bhi	190fc <msdos_dir_read+0x360>                  <== NOT EXECUTED
                        break;                                        
                                                                      
                    tmp_dirent.d_name[o++] = *p;                      
   190b0:	e5d7e000 	ldrb	lr, [r7]                                     <== NOT EXECUTED
   190b4:	e5c0e010 	strb	lr, [r0, #16]                                <== NOT EXECUTED
                                                                      
                    if (*p == '\0')                                   
   190b8:	e5d70000 	ldrb	r0, [r7]                                     <== NOT EXECUTED
   190bc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
                        break;                                        
                                                                      
                    tmp_dirent.d_name[o++] = *p;                      
   190c0:	e2822001 	add	r2, r2, #1                                    <== NOT EXECUTED
   190c4:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
                                                                      
                    if (*p == '\0')                                   
   190c8:	0a00000b 	beq	190fc <msdos_dir_read+0x360>                  <== NOT EXECUTED
                        break;                                        
                                                                      
                    switch (q)                                        
   190cc:	e3510004 	cmp	r1, #4                                        <== NOT EXECUTED
   190d0:	0a00003b 	beq	191c4 <msdos_dir_read+0x428>                  <== NOT EXECUTED
   190d4:	e351000a 	cmp	r1, #10                                       <== NOT EXECUTED
   190d8:	0a00003b 	beq	191cc <msdos_dir_read+0x430>                  <== NOT EXECUTED
                                                                      
                lfn_entries--;                                        
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
   190dc:	e352000d 	cmp	r2, #13                                       <== NOT EXECUTED
   190e0:	0a000005 	beq	190fc <msdos_dir_read+0x360>                  <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   190e4:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
   190e8:	e35300fe 	cmp	r3, #254	; 0xfe                               <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   190ec:	e0810003 	add	r0, r1, r3                                    <== NOT EXECUTED
                            break;                                    
                        case 10:                                      
                            p += 4;                                   
                            break;                                    
                        default:                                      
                            p += 2;                                   
   190f0:	e2877002 	add	r7, r7, #2                                    <== NOT EXECUTED
                 * fit in the directory entry name field.             
                 */                                                   
                                                                      
                lfn_entries--;                                        
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
   190f4:	e1a01002 	mov	r1, r2                                        <== NOT EXECUTED
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
                {                                                     
                    if (o >= (sizeof(tmp_dirent.d_name) - 1))         
   190f8:	9affffec 	bls	190b0 <msdos_dir_read+0x314>                  <== NOT EXECUTED
                                                                      
                lfn_entries--;                                        
                p = entry + 1;                                        
                o = lfn_entries * MSDOS_LFN_LEN_PER_ENTRY;            
                                                                      
                for (q = 0; q < MSDOS_LFN_LEN_PER_ENTRY; q++)         
   190fc:	e58dc018 	str	ip, [sp, #24]                                 <== NOT EXECUTED
   19100:	ea000026 	b	191a0 <msdos_dir_read+0x404>                    <== NOT EXECUTED
                if (lfn_start == FAT_FILE_SHORT_NAME)                 
                {                                                     
                    /*                                                
                     * The first entry must have the last long entry flag set.
                     */                                               
                    if ((*MSDOS_DIR_ENTRY_TYPE(entry) &               
   19104:	e3130040 	tst	r3, #64	; 0x40                                <== NOT EXECUTED
   19108:	0affff61 	beq	18e94 <msdos_dir_read+0xf8>                   <== NOT EXECUTED
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
                      ((j * bts2rd) + i) / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
   1910c:	e59d1008 	ldr	r1, [sp, #8]                                  <== NOT EXECUTED
                                                                      
                    /*                                                
                     * Get the number of entries so we can count down and
                     * also the checksum of the short entry.          
                     */                                               
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &     
   19110:	e203303f 	and	r3, r3, #63	; 0x3f                            <== NOT EXECUTED
   19114:	e58d3010 	str	r3, [sp, #16]                                 <== NOT EXECUTED
                                   MSDOS_LAST_LONG_ENTRY_MASK);       
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);    
   19118:	e5d7300d 	ldrb	r3, [r7, #13]                                <== NOT EXECUTED
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
                      ((j * bts2rd) + i) / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;
   1911c:	e081a004 	add	sl, r1, r4                                    <== NOT EXECUTED
                     * also the checksum of the short entry.          
                     */                                               
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &     
                                   MSDOS_LAST_LONG_ENTRY_MASK);       
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);    
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
   19120:	e28d003c 	add	r0, sp, #60	; 0x3c                            <== NOT EXECUTED
   19124:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   19128:	e3a02c01 	mov	r2, #256	; 0x100                              <== NOT EXECUTED
                        continue;                                     
                                                                      
                    /*                                                
                     * Remember the start location of the long file name.
                     */                                               
                    lfn_start =                                       
   1912c:	e1a0a2aa 	lsr	sl, sl, #5                                    <== NOT EXECUTED
                     * Get the number of entries so we can count down and
                     * also the checksum of the short entry.          
                     */                                               
                    lfn_entries = (*MSDOS_DIR_ENTRY_TYPE(entry) &     
                                   MSDOS_LAST_LONG_ENTRY_MASK);       
                    lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);    
   19130:	e58d3018 	str	r3, [sp, #24]                                 <== NOT EXECUTED
                    memset (tmp_dirent.d_name, 0, sizeof(tmp_dirent.d_name));
   19134:	eb0004bb 	bl	1a428 <memset>                                 <== NOT EXECUTED
   19138:	eaffffb8 	b	19020 <msdos_dir_read+0x284>                    <== NOT EXECUTED
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
                        tmp_dirent.d_name, entry); /* src text */     
                }                                                     
                else                                                  
                {                                                     
                    tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);  
   1913c:	e28d003c 	add	r0, sp, #60	; 0x3c                            <== NOT EXECUTED
   19140:	eb000b19 	bl	1bdac <strlen>                                 <== NOT EXECUTED
   19144:	e59f31c4 	ldr	r3, [pc, #452]	; 19310 <msdos_dir_read+0x574> <== NOT EXECUTED
   19148:	e28d1f55 	add	r1, sp, #340	; 0x154                          <== NOT EXECUTED
   1914c:	e18100b3 	strh	r0, [r1, r3]                                 <== NOT EXECUTED
                }                                                     
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
   19150:	e59d301c 	ldr	r3, [sp, #28]                                 <== NOT EXECUTED
   19154:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   19158:	e3a02e11 	mov	r2, #272	; 0x110                              <== NOT EXECUTED
   1915c:	e0830009 	add	r0, r3, r9                                    <== NOT EXECUTED
   19160:	eb00047a 	bl	1a350 <memcpy>                                 <== NOT EXECUTED
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
   19164:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
   19168:	e991000c 	ldmib	r1, {r2, r3}                                <== NOT EXECUTED
   1916c:	e3a00e11 	mov	r0, #272	; 0x110                              <== NOT EXECUTED
   19170:	e0922000 	adds	r2, r2, r0                                   <== NOT EXECUTED
   19174:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   19178:	e0a33001 	adc	r3, r3, r1                                    <== NOT EXECUTED
   1917c:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
                cmpltd += (sizeof(struct dirent));                    
                count -= (sizeof(struct dirent));                     
                                                                      
                /* inode number extracted, close fat-file */          
                rc = fat_file_close(&fs_info->fat, tmp_fat_fd);       
   19180:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
                    tmp_dirent.d_namlen = strlen(tmp_dirent.d_name);  
                }                                                     
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
   19184:	e981000c 	stmib	r1, {r2, r3}                                <== NOT EXECUTED
                cmpltd += (sizeof(struct dirent));                    
                count -= (sizeof(struct dirent));                     
                                                                      
                /* inode number extracted, close fat-file */          
                rc = fat_file_close(&fs_info->fat, tmp_fat_fd);       
   19188:	e59d114c 	ldr	r1, [sp, #332]	; 0x14c                        <== NOT EXECUTED
   1918c:	ebffe166 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
                if (rc != RC_OK)                                      
   19190:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   19194:	1a000018 	bne	191fc <msdos_dir_read+0x460>                  <== NOT EXECUTED
                }                                                     
                                                                      
                memcpy(buffer + cmpltd, &tmp_dirent, sizeof(struct dirent));
                                                                      
                iop->offset = iop->offset + sizeof(struct dirent);    
                cmpltd += (sizeof(struct dirent));                    
   19198:	e2899e11 	add	r9, r9, #272	; 0x110                          <== NOT EXECUTED
                count -= (sizeof(struct dirent));                     
   1919c:	e24bbe11 	sub	fp, fp, #272	; 0x110                          <== NOT EXECUTED
                    rtems_semaphore_release(fs_info->vol_sema);       
                    return rc;                                        
                }                                                     
            }                                                         
                                                                      
            if (count <= 0)                                           
   191a0:	e35b0000 	cmp	fp, #0                                        <== NOT EXECUTED
   191a4:	1affff3a 	bne	18e94 <msdos_dir_read+0xf8>                   <== NOT EXECUTED
   191a8:	eaffffab 	b	1905c <msdos_dir_read+0x2c0>                    <== NOT EXECUTED
             * Is this directory from here on empty ?                 
             */                                                       
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
            {                                                         
                rtems_semaphore_release(fs_info->vol_sema);           
   191ac:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         <== NOT EXECUTED
   191b0:	ebffbde9 	bl	895c <rtems_semaphore_release>                 <== NOT EXECUTED
                return cmpltd;                                        
   191b4:	e1a03009 	mov	r3, r9                                        <== NOT EXECUTED
        j++;                                                          
    }                                                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
    return cmpltd;                                                    
}                                                                     
   191b8:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
   191bc:	e28ddf55 	add	sp, sp, #340	; 0x154                          <== NOT EXECUTED
   191c0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
                        break;                                        
                                                                      
                    switch (q)                                        
                    {                                                 
                        case 4:                                       
                            p += 5;                                   
   191c4:	e2877005 	add	r7, r7, #5                                    <== NOT EXECUTED
                            break;                                    
   191c8:	eaffffb3 	b	1909c <msdos_dir_read+0x300>                    <== NOT EXECUTED
                        case 10:                                      
                            p += 4;                                   
   191cc:	e2877004 	add	r7, r7, #4                                    <== NOT EXECUTED
                            break;                                    
   191d0:	eaffffb1 	b	1909c <msdos_dir_read+0x300>                    <== NOT EXECUTED
     * optimization: we know that root directory for FAT12/16 volumes is
     * sequential set of sectors and any cluster is sequential set of sectors
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
   191d4:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   191d8:	e5923024 	ldr	r3, [r2, #36]	; 0x24                          <== NOT EXECUTED
   191dc:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   191e0:	1afffefe 	bne	18de0 <msdos_dir_read+0x44>                   <== NOT EXECUTED
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
   191e4:	e5d5300e 	ldrb	r3, [r5, #14]                                <== NOT EXECUTED
     * optimization: we know that root directory for FAT12/16 volumes is
     * sequential set of sectors and any cluster is sequential set of sectors
     * too, so read such set of sectors is quick operation for low-level IO
     * layer.                                                         
     */                                                               
    bts2rd = (FAT_FD_OF_ROOT_DIR(fat_fd) &&                           
   191e8:	e3130003 	tst	r3, #3                                        <== NOT EXECUTED
   191ec:	0afffefb 	beq	18de0 <msdos_dir_read+0x44>                   <== NOT EXECUTED
             (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16))) ?     
             fat_fd->fat_file_size                              :     
   191f0:	e5923018 	ldr	r3, [r2, #24]                                 <== NOT EXECUTED
   191f4:	e58d3020 	str	r3, [sp, #32]                                 <== NOT EXECUTED
   191f8:	eafffefa 	b	18de8 <msdos_dir_read+0x4c>                     <== NOT EXECUTED
   191fc:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
                                                                      
                /* inode number extracted, close fat-file */          
                rc = fat_file_close(&fs_info->fat, tmp_fat_fd);       
                if (rc != RC_OK)                                      
                {                                                     
                    rtems_semaphore_release(fs_info->vol_sema);       
   19200:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         <== NOT EXECUTED
   19204:	e58d3004 	str	r3, [sp, #4]                                  <== NOT EXECUTED
   19208:	ebffbdd3 	bl	895c <rtems_semaphore_release>                 <== NOT EXECUTED
                    return rc;                                        
   1920c:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
   19210:	eaffffe8 	b	191b8 <msdos_dir_read+0x41c>                    <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
   19214:	e3510000 	cmp	r1, #0                                        <== NOT EXECUTED
   19218:	e58d1024 	str	r1, [sp, #36]	; 0x24                          <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
   1921c:	d28d303c 	addle	r3, sp, #60	; 0x3c                          <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
   19220:	daffff6a 	ble	18fd0 <msdos_dir_read+0x234>                  <== NOT EXECUTED
   19224:	e59f20e8 	ldr	r2, [pc, #232]	; 19314 <msdos_dir_read+0x578> <== NOT EXECUTED
   19228:	e592a000 	ldr	sl, [r2]                                      <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   1922c:	e0872001 	add	r2, r7, r1                                    <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
   19230:	e58db028 	str	fp, [sp, #40]	; 0x28                          <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   19234:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
                {                                                     
                    /*                                                
                     * convert dir entry from fixed 8+3 format (without dot)
                     * to 0..8 + 1dot + 0..3 format                   
                     */                                               
                    tmp_dirent.d_namlen = msdos_format_dirent_with_dot(
   19238:	e28d003c 	add	r0, sp, #60	; 0x3c                            <== NOT EXECUTED
   1923c:	e1a0b002 	mov	fp, r2                                        <== NOT EXECUTED
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
    *dst++ = tolower((unsigned char)(*src_tmp++));                    
   19240:	e4d32001 	ldrb	r2, [r3], #1                                 <== NOT EXECUTED
   19244:	e08ae002 	add	lr, sl, r2                                    <== NOT EXECUTED
   19248:	e5dee001 	ldrb	lr, [lr, #1]                                 <== NOT EXECUTED
   1924c:	e20ee003 	and	lr, lr, #3                                    <== NOT EXECUTED
   19250:	e35e0001 	cmp	lr, #1                                        <== NOT EXECUTED
   19254:	02822020 	addeq	r2, r2, #32                                 <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
   19258:	e153000b 	cmp	r3, fp                                        <== NOT EXECUTED
    *dst++ = tolower((unsigned char)(*src_tmp++));                    
   1925c:	e4c02001 	strb	r2, [r0], #1                                 <== NOT EXECUTED
  /*                                                                  
   * copy base name to destination                                    
   */                                                                 
  src_tmp = src;                                                      
  len = i;                                                            
  while (i-- > 0) {                                                   
   19260:	1afffff6 	bne	19240 <msdos_dir_read+0x4a4>                  <== NOT EXECUTED
   19264:	e2813010 	add	r3, r1, #16                                   <== NOT EXECUTED
   19268:	e28d202c 	add	r2, sp, #44	; 0x2c                            <== NOT EXECUTED
   1926c:	e59db028 	ldr	fp, [sp, #40]	; 0x28                          <== NOT EXECUTED
   19270:	e0823003 	add	r3, r2, r3                                    <== NOT EXECUTED
   19274:	eaffff55 	b	18fd0 <msdos_dir_read+0x234>                    <== NOT EXECUTED
         */                                                           
        ret = fat_file_read(&fs_info->fat, fat_fd, (j * bts2rd),      
                            bts2rd, fs_info->cl_buf);                 
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
        {                                                             
            rtems_semaphore_release(fs_info->vol_sema);               
   19278:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         <== NOT EXECUTED
   1927c:	ebffbdb6 	bl	895c <rtems_semaphore_release>                 <== NOT EXECUTED
            rtems_set_errno_and_return_minus_one(EIO);                
   19280:	eb00018b 	bl	198b4 <__errno>                                <== NOT EXECUTED
   19284:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   19288:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   1928c:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   19290:	eaffffc8 	b	191b8 <msdos_dir_read+0x41c>                    <== NOT EXECUTED
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
	src_tmp = src + MSDOS_SHORT_BASE_LEN+MSDOS_SHORT_EXT_LEN-1);         
       ((i > 0) &&                                                    
	(*src_tmp == ' '));                                                  
       i--,src_tmp--)                                                 
   19294:	e3a0e002 	mov	lr, #2                                        <== NOT EXECUTED
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
   19298:	e28e0001 	add	r0, lr, #1                                    <== NOT EXECUTED
   1929c:	e0810000 	add	r0, r1, r0                                    <== NOT EXECUTED
    {};                                                               
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
   192a0:	e3a0202e 	mov	r2, #46	; 0x2e                                <== NOT EXECUTED
   192a4:	e1a0a003 	mov	sl, r3                                        <== NOT EXECUTED
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
   192a8:	e59f1064 	ldr	r1, [pc, #100]	; 19314 <msdos_dir_read+0x578> <== NOT EXECUTED
    {};                                                               
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
   192ac:	e4ca2001 	strb	r2, [sl], #1                                 <== NOT EXECUTED
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
   192b0:	e24e2001 	sub	r2, lr, #1                                    <== NOT EXECUTED
   192b4:	e58d2028 	str	r2, [sp, #40]	; 0x28                          <== NOT EXECUTED
   192b8:	e5917000 	ldr	r7, [r1]                                      <== NOT EXECUTED
  /*                                                                  
   * extension is not empty                                           
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
   192bc:	e58d0024 	str	r0, [sp, #36]	; 0x24                          <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   192c0:	e083000e 	add	r0, r3, lr                                    <== NOT EXECUTED
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
      *dst++ = tolower((unsigned char)(*src_tmp++));                  
   192c4:	e4dc2001 	ldrb	r2, [ip], #1                                 <== NOT EXECUTED
   192c8:	e0871002 	add	r1, r7, r2                                    <== NOT EXECUTED
   192cc:	e5d11001 	ldrb	r1, [r1, #1]                                 <== NOT EXECUTED
   192d0:	e2011003 	and	r1, r1, #3                                    <== NOT EXECUTED
   192d4:	e3510001 	cmp	r1, #1                                        <== NOT EXECUTED
   192d8:	02822020 	addeq	r2, r2, #32                                 <== NOT EXECUTED
   192dc:	e5e32001 	strb	r2, [r3, #1]!                                <== NOT EXECUTED
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
   192e0:	e1530000 	cmp	r3, r0                                        <== NOT EXECUTED
   192e4:	1afffff6 	bne	192c4 <msdos_dir_read+0x528>                  <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   192e8:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          <== NOT EXECUTED
   192ec:	e59d1028 	ldr	r1, [sp, #40]	; 0x28                          <== NOT EXECUTED
   192f0:	e2832001 	add	r2, r3, #1                                    <== NOT EXECUTED
   192f4:	e0822001 	add	r2, r2, r1                                    <== NOT EXECUTED
   */                                                                 
  if (i > 0) {                                                        
    *dst++ = '.'; /* append dot */                                    
    len += i + 1; /* extension + dot */                               
    src_tmp = src + MSDOS_SHORT_BASE_LEN;                             
    while (i-- > 0) {                                                 
   192f8:	e08a300e 	add	r3, sl, lr                                    <== NOT EXECUTED
 * RETURNS:                                                           
 *     the number of bytes read on success, or -1 if error occured (errno
 *     set apropriately).                                             
 */                                                                   
ssize_t                                                               
msdos_dir_read(rtems_libio_t *iop, void *buffer, size_t count)        
   192fc:	e58d2024 	str	r2, [sp, #36]	; 0x24                          <== NOT EXECUTED
   19300:	eaffff3c 	b	18ff8 <msdos_dir_read+0x25c>                    <== NOT EXECUTED
    *dst++ = tolower((unsigned char)(*src_tmp++));                    
  }                                                                   
  /*                                                                  
   * find last non-blank character of extension                       
   */                                                                 
  for ((i       =                            MSDOS_SHORT_EXT_LEN  ,   
   19304:	e3a0e003 	mov	lr, #3                                        <== NOT EXECUTED
   19308:	eaffffe2 	b	19298 <msdos_dir_read+0x4fc>                    <== NOT EXECUTED
                                                                      

00019318 <msdos_dir_stat>: const rtems_filesystem_location_info_t *loc, struct stat *buf ) { rtems_status_code sc = RTEMS_SUCCESSFUL; msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
   19318:	e5902014 	ldr	r2, [r0, #20]                                 
int                                                                   
msdos_dir_stat(                                                       
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
   1931c:	e92d43f0 	push	{r4, r5, r6, r7, r8, r9, lr}                 
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
   19320:	e5925008 	ldr	r5, [r2, #8]                                  
int                                                                   
msdos_dir_stat(                                                       
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
   19324:	e1a04001 	mov	r4, r1                                        
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19328:	e3a01000 	mov	r1, #0                                        
int                                                                   
msdos_dir_stat(                                                       
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
   1932c:	e1a03000 	mov	r3, r0                                        
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19330:	e1a02001 	mov	r2, r1                                        
   19334:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         
    struct stat *buf                                                  
)                                                                     
{                                                                     
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
   19338:	e5936008 	ldr	r6, [r3, #8]                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   1933c:	ebffbd3d 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   19340:	e2507000 	subs	r7, r0, #0                                   
   19344:	1a000017 	bne	193a8 <msdos_dir_stat+0x90>                   
                                                                      
static inline dev_t rtems_disk_get_device_identifier(                 
  const rtems_disk_device *dd                                         
)                                                                     
{                                                                     
  return dd->dev;                                                     
   19348:	e5952064 	ldr	r2, [r5, #100]	; 0x64                         
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
   1934c:	e596c00c 	ldr	ip, [r6, #12]                                 
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
   19350:	e8920300 	ldm	r2, {r8, r9}                                  
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
   19354:	e5963018 	ldr	r3, [r6, #24]                                 
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
    buf->st_blksize = fs_info->fat.vol.bps;                           
   19358:	e1d510b0 	ldrh	r1, [r5]                                     
    buf->st_mtime = fat_fd->mtime;                                    
   1935c:	e5962040 	ldr	r2, [r6, #64]	; 0x40                          
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
   19360:	e584c008 	str	ip, [r4, #8]                                  
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
   19364:	e59fc050 	ldr	ip, [pc, #80]	; 193bc <msdos_dir_stat+0xa4>   
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
   19368:	e1a004a3 	lsr	r0, r3, #9                                    
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
   1936c:	e8840300 	stm	r4, {r8, r9}                                  
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
   19370:	e3a08000 	mov	r8, #0                                        
   19374:	e3a09000 	mov	r9, #0                                        
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
   19378:	e5840044 	str	r0, [r4, #68]	; 0x44                          
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO;            
   1937c:	e584c00c 	str	ip, [r4, #12]                                 
    buf->st_rdev = 0ll;                                               
   19380:	e5848018 	str	r8, [r4, #24]                                 
   19384:	e584901c 	str	r9, [r4, #28]                                 
    buf->st_size = fat_fd->fat_file_size;                             
   19388:	e5843020 	str	r3, [r4, #32]                                 
   1938c:	e5847024 	str	r7, [r4, #36]	; 0x24                          
    buf->st_blocks = fat_fd->fat_file_size >> FAT_SECTOR512_BITS;     
    buf->st_blksize = fs_info->fat.vol.bps;                           
   19390:	e5841040 	str	r1, [r4, #64]	; 0x40                          
    buf->st_mtime = fat_fd->mtime;                                    
   19394:	e5842030 	str	r2, [r4, #48]	; 0x30                          
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   19398:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         
   1939c:	ebffbd6e 	bl	895c <rtems_semaphore_release>                 
    return RC_OK;                                                     
   193a0:	e1a00007 	mov	r0, r7                                        
}                                                                     
   193a4:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  
    fat_file_fd_t     *fat_fd = loc->node_access;                     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   193a8:	eb000141 	bl	198b4 <__errno>                                <== NOT EXECUTED
   193ac:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   193b0:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   193b4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   193b8:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  <== NOT EXECUTED
                                                                      

000163e8 <msdos_eval_token>: static inline bool rtems_filesystem_is_current_directory( const char *token, size_t tokenlen ) { return tokenlen == 1 && token [0] == '.';
   163e8:	e3530001 	cmp	r3, #1                                        
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
   163ec:	e92d4010 	push	{r4, lr}                                     
   163f0:	e1a04000 	mov	r4, r0                                        
   163f4:	0a00000a 	beq	16424 <msdos_eval_token+0x3c>                 
    rtems_filesystem_eval_path_clear_token(ctx);                      
    status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;             
  } else {                                                            
    rtems_filesystem_location_info_t *currentloc =                    
      rtems_filesystem_eval_path_get_currentloc(ctx);                 
    int rc = msdos_find_name(currentloc, token, tokenlen);            
   163f8:	e1a01002 	mov	r1, r2                                        
   163fc:	e2840018 	add	r0, r4, #24                                   
   16400:	e1a02003 	mov	r2, r3                                        
   16404:	eb000576 	bl	179e4 <msdos_find_name>                        
                                                                      
    if (rc == RC_OK) {                                                
   16408:	e3500000 	cmp	r0, #0                                        
   1640c:	0a00000f 	beq	16450 <msdos_eval_token+0x68>                 
      rtems_filesystem_eval_path_clear_token(ctx);                    
      msdos_set_handlers(currentloc);                                 
      if (rtems_filesystem_eval_path_has_path(ctx)) {                 
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;         
      }                                                               
    } else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {                      
   16410:	e59f3080 	ldr	r3, [pc, #128]	; 16498 <msdos_eval_token+0xb0>
   16414:	e1500003 	cmp	r0, r3                                        
   16418:	1a000019 	bne	16484 <msdos_eval_token+0x9c>                 
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
   1641c:	e3a00002 	mov	r0, #2                                        
      rtems_filesystem_eval_path_error(ctx, 0);                       
    }                                                                 
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
   16420:	e8bd8010 	pop	{r4, pc}                                      
   16424:	e5d21000 	ldrb	r1, [r2]                                     
   16428:	e351002e 	cmp	r1, #46	; 0x2e                                
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
   1642c:	03a00000 	moveq	r0, #0                                      
   16430:	0584000c 	streq	r0, [r4, #12]                               
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
   16434:	08bd8010 	popeq	{r4, pc}                                    
    rtems_filesystem_eval_path_clear_token(ctx);                      
    status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;             
  } else {                                                            
    rtems_filesystem_location_info_t *currentloc =                    
      rtems_filesystem_eval_path_get_currentloc(ctx);                 
    int rc = msdos_find_name(currentloc, token, tokenlen);            
   16438:	e1a01002 	mov	r1, r2                                        
   1643c:	e2840018 	add	r0, r4, #24                                   
   16440:	e1a02003 	mov	r2, r3                                        
   16444:	eb000566 	bl	179e4 <msdos_find_name>                        
                                                                      
    if (rc == RC_OK) {                                                
   16448:	e3500000 	cmp	r0, #0                                        
   1644c:	1affffef 	bne	16410 <msdos_eval_token+0x28>                 
msdos_set_handlers(rtems_filesystem_location_info_t *loc)             
{                                                                     
    msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;                
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
   16450:	e5943020 	ldr	r3, [r4, #32]                                 
   16454:	e5932010 	ldr	r2, [r3, #16]                                 
 *     None                                                           
 */                                                                   
static void                                                           
msdos_set_handlers(rtems_filesystem_location_info_t *loc)             
{                                                                     
    msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;                
   16458:	e594302c 	ldr	r3, [r4, #44]	; 0x2c                          
   1645c:	e5933008 	ldr	r3, [r3, #8]                                  
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
   16460:	e3520000 	cmp	r2, #0                                        
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
   16464:	e584000c 	str	r0, [r4, #12]                                 
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   16468:	e5940004 	ldr	r0, [r4, #4]                                  
{                                                                     
    msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;                
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
        loc->handlers = fs_info->directory_handlers;                  
   1646c:	05933094 	ldreq	r3, [r3, #148]	; 0x94                       
    else                                                              
        loc->handlers = fs_info->file_handlers;                       
   16470:	15933098 	ldrne	r3, [r3, #152]	; 0x98                       
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   16474:	e2700001 	rsbs	r0, r0, #1                                   
    fat_file_fd_t   *fat_fd = loc->node_access;                       
                                                                      
    if (fat_fd->fat_file_type == FAT_DIRECTORY)                       
        loc->handlers = fs_info->directory_handlers;                  
    else                                                              
        loc->handlers = fs_info->file_handlers;                       
   16478:	e5843028 	str	r3, [r4, #40]	; 0x28                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   1647c:	33a00000 	movcc	r0, #0                                      
   16480:	e8bd8010 	pop	{r4, pc}                                      
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;         
      }                                                               
    } else if (rc == MSDOS_NAME_NOT_FOUND_ERR) {                      
      status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;           
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, 0);                       
   16484:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   16488:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1648c:	ebffbc3d 	bl	5588 <rtems_filesystem_eval_path_error>        <== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   16490:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   16494:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

00019418 <msdos_file_close>: int msdos_file_close(rtems_libio_t *iop) { int rc = RC_OK; rtems_status_code sc = RTEMS_SUCCESSFUL; msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
   19418:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
 *     RC_OK, if file closed successfully, or -1 if error occured (errno set
 *     appropriately)                                                 
 */                                                                   
int                                                                   
msdos_file_close(rtems_libio_t *iop)                                  
{                                                                     
   1941c:	e92d4030 	push	{r4, r5, lr}                                 
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   19420:	e5934008 	ldr	r4, [r3, #8]                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19424:	e3a01000 	mov	r1, #0                                        
 *     RC_OK, if file closed successfully, or -1 if error occured (errno set
 *     appropriately)                                                 
 */                                                                   
int                                                                   
msdos_file_close(rtems_libio_t *iop)                                  
{                                                                     
   19428:	e1a05000 	mov	r5, r0                                        
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   1942c:	e1a02001 	mov	r2, r1                                        
   19430:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   19434:	ebffbcff 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   19438:	e3500000 	cmp	r0, #0                                        
   1943c:	1a000006 	bne	1945c <msdos_file_close+0x44>                 
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    rc = msdos_file_update(iop);                                      
   19440:	e1a00005 	mov	r0, r5                                        
   19444:	ebffffdd 	bl	193c0 <msdos_file_update>                      
   19448:	e1a05000 	mov	r5, r0                                        
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   1944c:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   19450:	ebffbd41 	bl	895c <rtems_semaphore_release>                 
    return rc;                                                        
}                                                                     
   19454:	e1a00005 	mov	r0, r5                                        
   19458:	e8bd8030 	pop	{r4, r5, pc}                                  
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   1945c:	eb000114 	bl	198b4 <__errno>                                <== NOT EXECUTED
   19460:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   19464:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   19468:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   1946c:	eafffff8 	b	19454 <msdos_file_close+0x3c>                   <== NOT EXECUTED
                                                                      

00019684 <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) {
   19684:	e92d43f0 	push	{r4, r5, r6, r7, r8, r9, lr}                 
   19688:	e1a03000 	mov	r3, r0                                        
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   1968c:	e5900024 	ldr	r0, [r0, #36]	; 0x24                          
   19690:	e5904008 	ldr	r4, [r0, #8]                                  
 * RETURNS:                                                           
 *     RC_OK on success, or -1 if error occured (errno set appropriately).
 */                                                                   
int                                                                   
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)                
{                                                                     
   19694:	e1a08001 	mov	r8, r1                                        
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
    uint32_t old_length;                                              
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19698:	e3a01000 	mov	r1, #0                                        
 * RETURNS:                                                           
 *     RC_OK on success, or -1 if error occured (errno set appropriately).
 */                                                                   
int                                                                   
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)                
{                                                                     
   1969c:	e24dd008 	sub	sp, sp, #8                                    
   196a0:	e1a09002 	mov	r9, r2                                        
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
    uint32_t old_length;                                              
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   196a4:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   196a8:	e1a02001 	mov	r2, r1                                        
msdos_file_ftruncate(rtems_libio_t *iop, off_t length)                
{                                                                     
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
   196ac:	e5935018 	ldr	r5, [r3, #24]                                 
    uint32_t old_length;                                              
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   196b0:	ebffbc60 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   196b4:	e3500000 	cmp	r0, #0                                        
   196b8:	1a000029 	bne	19764 <msdos_file_ftruncate+0xe0>             
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    old_length = fat_fd->fat_file_size;                               
   196bc:	e5956018 	ldr	r6, [r5, #24]                                 
    if (length < old_length) {                                        
   196c0:	e3a03000 	mov	r3, #0                                        
   196c4:	e1a02006 	mov	r2, r6                                        
   196c8:	e1580002 	cmp	r8, r2                                        
   196cc:	e0d91003 	sbcs	r1, r9, r3                                   
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
   196d0:	e1a00004 	mov	r0, r4                                        
   196d4:	e1a01005 	mov	r1, r5                                        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    old_length = fat_fd->fat_file_size;                               
    if (length < old_length) {                                        
   196d8:	aa00000b 	bge	1970c <msdos_file_ftruncate+0x88>             
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
   196dc:	e1a02008 	mov	r2, r8                                        
   196e0:	ebffdfd0 	bl	11628 <fat_file_truncate>                      
            errno = ENOSPC;                                           
            rc = -1;                                                  
        }                                                             
    }                                                                 
                                                                      
    if (rc == RC_OK) {                                                
   196e4:	e2507000 	subs	r7, r0, #0                                   
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    old_length = fat_fd->fat_file_size;                               
    if (length < old_length) {                                        
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
   196e8:	e1a01008 	mov	r1, r8                                        
            errno = ENOSPC;                                           
            rc = -1;                                                  
        }                                                             
    }                                                                 
                                                                      
    if (rc == RC_OK) {                                                
   196ec:	1a000001 	bne	196f8 <msdos_file_ftruncate+0x74>             
        fat_fd->fat_file_size = length;                               
   196f0:	e5851018 	str	r1, [r5, #24]                                 
   196f4:	e3a07000 	mov	r7, #0                                        
    }                                                                 
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   196f8:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   196fc:	ebffbc96 	bl	895c <rtems_semaphore_release>                 
                                                                      
    return rc;                                                        
}                                                                     
   19700:	e1a00007 	mov	r0, r7                                        
   19704:	e28dd008 	add	sp, sp, #8                                    
   19708:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  
    if (length < old_length) {                                        
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
    } else {                                                          
        uint32_t new_length;                                          
                                                                      
        rc = fat_file_extend(&fs_info->fat,                           
   1970c:	e28dc004 	add	ip, sp, #4                                    
   19710:	e3a02001 	mov	r2, #1                                        
   19714:	e1a03008 	mov	r3, r8                                        
   19718:	e58dc000 	str	ip, [sp]                                      
   1971c:	ebffe05c 	bl	11894 <fat_file_extend>                        
                             fat_fd,                                  
                             true,                                    
                             length,                                  
                             &new_length);                            
        if (rc == RC_OK && length != new_length) {                    
   19720:	e2507000 	subs	r7, r0, #0                                   
    if (length < old_length) {                                        
        rc = fat_file_truncate(&fs_info->fat, fat_fd, length);        
    } else {                                                          
        uint32_t new_length;                                          
                                                                      
        rc = fat_file_extend(&fs_info->fat,                           
   19724:	e1a01008 	mov	r1, r8                                        
                             fat_fd,                                  
                             true,                                    
                             length,                                  
                             &new_length);                            
        if (rc == RC_OK && length != new_length) {                    
   19728:	1afffff2 	bne	196f8 <msdos_file_ftruncate+0x74>             
   1972c:	e59d2004 	ldr	r2, [sp, #4]                                  
   19730:	e3a03000 	mov	r3, #0                                        
   19734:	e1530009 	cmp	r3, r9                                        
   19738:	01520008 	cmpeq	r2, r8                                      
   1973c:	0affffeb 	beq	196f0 <msdos_file_ftruncate+0x6c>             
            fat_file_truncate(&fs_info->fat, fat_fd, old_length);     
   19740:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   19744:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   19748:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1974c:	ebffdfb5 	bl	11628 <fat_file_truncate>                      <== NOT EXECUTED
            errno = ENOSPC;                                           
   19750:	eb000057 	bl	198b4 <__errno>                                <== NOT EXECUTED
   19754:	e3a0301c 	mov	r3, #28                                       <== NOT EXECUTED
   19758:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
            rc = -1;                                                  
   1975c:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
   19760:	eaffffe4 	b	196f8 <msdos_file_ftruncate+0x74>               <== NOT EXECUTED
    uint32_t old_length;                                              
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   19764:	eb000052 	bl	198b4 <__errno>                                <== NOT EXECUTED
   19768:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   1976c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   19770:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
   19774:	eaffffe1 	b	19700 <msdos_file_ftruncate+0x7c>               <== NOT EXECUTED
                                                                      

00019470 <msdos_file_read>: * the number of bytes read on success, or -1 if error occured (errno set * appropriately) */ ssize_t msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count) {
   19470:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   19474:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
   19478:	e5935008 	ldr	r5, [r3, #8]                                  
 *     the number of bytes read on success, or -1 if error occured (errno set
 *     appropriately)                                                 
 */                                                                   
ssize_t                                                               
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)       
{                                                                     
   1947c:	e1a06001 	mov	r6, r1                                        
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19480:	e3a01000 	mov	r1, #0                                        
 *     the number of bytes read on success, or -1 if error occured (errno set
 *     appropriately)                                                 
 */                                                                   
ssize_t                                                               
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)       
{                                                                     
   19484:	e1a04000 	mov	r4, r0                                        
   19488:	e24dd004 	sub	sp, sp, #4                                    
   1948c:	e1a07002 	mov	r7, r2                                        
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19490:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         
   19494:	e1a02001 	mov	r2, r1                                        
msdos_file_read(rtems_libio_t *iop, void *buffer, size_t count)       
{                                                                     
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
   19498:	e5948018 	ldr	r8, [r4, #24]                                 
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   1949c:	ebffbce5 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   194a0:	e3500000 	cmp	r0, #0                                        
   194a4:	1a000010 	bne	194ec <msdos_file_read+0x7c>                  
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    ret = fat_file_read(&fs_info->fat, fat_fd, iop->offset, count,    
   194a8:	e5942004 	ldr	r2, [r4, #4]                                  
   194ac:	e1a00005 	mov	r0, r5                                        
   194b0:	e1a01008 	mov	r1, r8                                        
   194b4:	e1a03007 	mov	r3, r7                                        
   194b8:	e58d6000 	str	r6, [sp]                                      
   194bc:	ebffdfde 	bl	1143c <fat_file_read>                          
                        buffer);                                      
    if (ret > 0)                                                      
   194c0:	e2506000 	subs	r6, r0, #0                                   
   194c4:	da000003 	ble	194d8 <msdos_file_read+0x68>                  
        iop->offset += ret;                                           
   194c8:	e994000c 	ldmib	r4, {r2, r3}                                
   194cc:	e0922006 	adds	r2, r2, r6                                   
   194d0:	e0a33fc6 	adc	r3, r3, r6, asr #31                           
   194d4:	e984000c 	stmib	r4, {r2, r3}                                
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   194d8:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         
   194dc:	ebffbd1e 	bl	895c <rtems_semaphore_release>                 
    return ret;                                                       
}                                                                     
   194e0:	e1a00006 	mov	r0, r6                                        
   194e4:	e28dd004 	add	sp, sp, #4                                    
   194e8:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   194ec:	eb0000f0 	bl	198b4 <__errno>                                <== NOT EXECUTED
   194f0:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   194f4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   194f8:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
   194fc:	eafffff7 	b	194e0 <msdos_file_read+0x70>                    <== NOT EXECUTED
                                                                      

000195cc <msdos_file_stat>: const rtems_filesystem_location_info_t *loc, struct stat *buf ) { rtems_status_code sc = RTEMS_SUCCESSFUL; msdos_fs_info_t *fs_info = loc->mt_entry->fs_info;
   195cc:	e5902014 	ldr	r2, [r0, #20]                                 
int                                                                   
msdos_file_stat(                                                      
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
   195d0:	e92d43f0 	push	{r4, r5, r6, r7, r8, r9, lr}                 
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
   195d4:	e5925008 	ldr	r5, [r2, #8]                                  
int                                                                   
msdos_file_stat(                                                      
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
   195d8:	e1a04001 	mov	r4, r1                                        
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   195dc:	e3a01000 	mov	r1, #0                                        
int                                                                   
msdos_file_stat(                                                      
    const rtems_filesystem_location_info_t *loc,                      
    struct stat *buf                                                  
)                                                                     
{                                                                     
   195e0:	e1a03000 	mov	r3, r0                                        
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   195e4:	e1a02001 	mov	r2, r1                                        
   195e8:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         
    struct stat *buf                                                  
)                                                                     
{                                                                     
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
   195ec:	e5936008 	ldr	r6, [r3, #8]                                  
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
   195f0:	e1d580b6 	ldrh	r8, [r5, #6]                                 
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   195f4:	ebffbc8f 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   195f8:	e2507000 	subs	r7, r0, #0                                   
   195fc:	1a00001a 	bne	1966c <msdos_file_stat+0xa0>                  
   19600:	e5951064 	ldr	r1, [r5, #100]	; 0x64                         
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
   19604:	e5963018 	ldr	r3, [r6, #24]                                 
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
   19608:	e596c00c 	ldr	ip, [r6, #12]                                 
)                                                                     
{                                                                     
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = loc->mt_entry->fs_info;              
    fat_file_fd_t     *fat_fd = loc->node_access;                     
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
   1960c:	e2480001 	sub	r0, r8, #1                                    
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
   19610:	e0802003 	add	r2, r0, r3                                    
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
   19614:	e8910300 	ldm	r1, {r8, r9}                                  
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
   19618:	e1c20000 	bic	r0, r2, r0                                    
      >> FAT_SECTOR512_BITS;                                          
    buf->st_blksize = fs_info->fat.vol.bpc;                           
   1961c:	e1d510b6 	ldrh	r1, [r5, #6]                                 
    buf->st_mtime = fat_fd->mtime;                                    
   19620:	e5962040 	ldr	r2, [r6, #64]	; 0x40                          
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
   19624:	e584c008 	str	ip, [r4, #8]                                  
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
   19628:	e59fc050 	ldr	ip, [pc, #80]	; 19680 <msdos_file_stat+0xb4>  
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
   1962c:	e8840300 	stm	r4, {r8, r9}                                  
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
      >> FAT_SECTOR512_BITS;                                          
   19630:	e1a004a0 	lsr	r0, r0, #9                                    
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
    buf->st_rdev = 0ll;                                               
   19634:	e3a08000 	mov	r8, #0                                        
   19638:	e3a09000 	mov	r9, #0                                        
    buf->st_size = fat_fd->fat_file_size;                             
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
   1963c:	e5840044 	str	r0, [r4, #68]	; 0x44                          
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    buf->st_dev = rtems_disk_get_device_identifier(fs_info->fat.vol.dd);
    buf->st_ino = fat_fd->ino;                                        
    buf->st_mode  = S_IFREG | S_IRWXU | S_IRWXG | S_IRWXO;            
   19640:	e584c00c 	str	ip, [r4, #12]                                 
    buf->st_rdev = 0ll;                                               
   19644:	e5848018 	str	r8, [r4, #24]                                 
   19648:	e584901c 	str	r9, [r4, #28]                                 
    buf->st_size = fat_fd->fat_file_size;                             
   1964c:	e5843020 	str	r3, [r4, #32]                                 
   19650:	e5847024 	str	r7, [r4, #36]	; 0x24                          
    buf->st_blocks = ((fat_fd->fat_file_size + cl_mask) & ~cl_mask)   
      >> FAT_SECTOR512_BITS;                                          
    buf->st_blksize = fs_info->fat.vol.bpc;                           
   19654:	e5841040 	str	r1, [r4, #64]	; 0x40                          
    buf->st_mtime = fat_fd->mtime;                                    
   19658:	e5842030 	str	r2, [r4, #48]	; 0x30                          
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   1965c:	e595009c 	ldr	r0, [r5, #156]	; 0x9c                         
   19660:	ebffbcbd 	bl	895c <rtems_semaphore_release>                 
    return RC_OK;                                                     
   19664:	e1a00007 	mov	r0, r7                                        
}                                                                     
   19668:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  
    uint32_t           cl_mask = fs_info->fat.vol.bpc - 1;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   1966c:	eb000090 	bl	198b4 <__errno>                                <== NOT EXECUTED
   19670:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   19674:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   19678:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   1967c:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  <== NOT EXECUTED
                                                                      

00019778 <msdos_file_sync>: int msdos_file_sync(rtems_libio_t *iop) { int rc = RC_OK; rtems_status_code sc = RTEMS_SUCCESSFUL; msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
   19778:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
 * RETURNS:                                                           
 *     RC_OK on success, or -1 if error occured (errno set appropriately)
 */                                                                   
int                                                                   
msdos_file_sync(rtems_libio_t *iop)                                   
{                                                                     
   1977c:	e92d4030 	push	{r4, r5, lr}                                 
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   19780:	e5934008 	ldr	r4, [r3, #8]                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19784:	e3a01000 	mov	r1, #0                                        
 * RETURNS:                                                           
 *     RC_OK on success, or -1 if error occured (errno set appropriately)
 */                                                                   
int                                                                   
msdos_file_sync(rtems_libio_t *iop)                                   
{                                                                     
   19788:	e1a05000 	mov	r5, r0                                        
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   1978c:	e1a02001 	mov	r2, r1                                        
   19790:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   19794:	ebffbc27 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   19798:	e3500000 	cmp	r0, #0                                        
   1979c:	1a000008 	bne	197c4 <msdos_file_sync+0x4c>                  
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    rc = msdos_file_update(iop);                                      
   197a0:	e1a00005 	mov	r0, r5                                        
   197a4:	ebffff05 	bl	193c0 <msdos_file_update>                      
    if (rc != RC_OK)                                                  
   197a8:	e2505000 	subs	r5, r0, #0                                   
    {                                                                 
        rtems_semaphore_release(fs_info->vol_sema);                   
        return rc;                                                    
    }                                                                 
                                                                      
    rc = fat_sync(&fs_info->fat);                                     
   197ac:	01a00004 	moveq	r0, r4                                      
   197b0:	0bffe50d 	bleq	12bec <fat_sync>                             
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   197b4:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   197b8:	ebffbc67 	bl	895c <rtems_semaphore_release>                 
    return RC_OK;                                                     
}                                                                     
   197bc:	e1a00005 	mov	r0, r5                                        
   197c0:	e8bd8030 	pop	{r4, r5, pc}                                  
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   197c4:	eb00003a 	bl	198b4 <__errno>                                <== NOT EXECUTED
   197c8:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   197cc:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   197d0:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   197d4:	eafffff8 	b	197bc <msdos_file_sync+0x44>                    <== NOT EXECUTED
                                                                      

000193c0 <msdos_file_update>: #include "msdos.h" static int msdos_file_update(rtems_libio_t *iop) {
   193c0:	e92d4030 	push	{r4, r5, lr}                                 
    int              rc = RC_OK;                                      
    fat_file_fd_t   *fat_fd = iop->pathinfo.node_access;              
   193c4:	e5904018 	ldr	r4, [r0, #24]                                 
                                                                      
    /*                                                                
     * if fat-file descriptor is not marked as "removed", synchronize 
     * size, first cluster number, write time and date fields of the file
     */                                                               
    if (!FAT_FILE_IS_REMOVED(fat_fd))                                 
   193c8:	e5d43030 	ldrb	r3, [r4, #48]	; 0x30                         
   193cc:	e3130001 	tst	r3, #1                                        
                                                                      
#include "msdos.h"                                                    
                                                                      
static int                                                            
msdos_file_update(rtems_libio_t *iop)                                 
{                                                                     
   193d0:	e1a05000 	mov	r5, r0                                        
                                                                      
    /*                                                                
     * if fat-file descriptor is not marked as "removed", synchronize 
     * size, first cluster number, write time and date fields of the file
     */                                                               
    if (!FAT_FILE_IS_REMOVED(fat_fd))                                 
   193d4:	0a000001 	beq	193e0 <msdos_file_update+0x20>                
#include "msdos.h"                                                    
                                                                      
static int                                                            
msdos_file_update(rtems_libio_t *iop)                                 
{                                                                     
    int              rc = RC_OK;                                      
   193d8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
            return rc;                                                
        }                                                             
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
   193dc:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
     * if fat-file descriptor is not marked as "removed", synchronize 
     * size, first cluster number, write time and date fields of the file
     */                                                               
    if (!FAT_FILE_IS_REMOVED(fat_fd))                                 
    {                                                                 
        rc = msdos_set_first_cluster_num(iop->pathinfo.mt_entry, fat_fd);
   193e0:	e5900024 	ldr	r0, [r0, #36]	; 0x24                          
   193e4:	e1a01004 	mov	r1, r4                                        
   193e8:	ebfff502 	bl	167f8 <msdos_set_first_cluster_num>            
        if (rc != RC_OK)                                              
   193ec:	e3500000 	cmp	r0, #0                                        
   193f0:	18bd8030 	popne	{r4, r5, pc}                                
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        rc = msdos_set_file_size(iop->pathinfo.mt_entry, fat_fd);     
   193f4:	e5950024 	ldr	r0, [r5, #36]	; 0x24                          
   193f8:	e1a01004 	mov	r1, r4                                        
   193fc:	ebfff52b 	bl	168b0 <msdos_set_file_size>                    
        if (rc != RC_OK)                                              
   19400:	e3500000 	cmp	r0, #0                                        
   19404:	18bd8030 	popne	{r4, r5, pc}                                
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        rc = msdos_set_dir_wrt_time_and_date(iop->pathinfo.mt_entry, fat_fd);
   19408:	e5950024 	ldr	r0, [r5, #36]	; 0x24                          
   1940c:	e1a01004 	mov	r1, r4                                        
            return rc;                                                
        }                                                             
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
   19410:	e8bd4030 	pop	{r4, r5, lr}                                  
        if (rc != RC_OK)                                              
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        rc = msdos_set_dir_wrt_time_and_date(iop->pathinfo.mt_entry, fat_fd);
   19414:	eafff4bf 	b	16718 <msdos_set_dir_wrt_time_and_date>         
                                                                      

00019500 <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) {
   19500:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   19504:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
   19508:	e5936008 	ldr	r6, [r3, #8]                                  
 *     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) 
{                                                                     
   1950c:	e1a07001 	mov	r7, r1                                        
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19510:	e3a01000 	mov	r1, #0                                        
 *     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) 
{                                                                     
   19514:	e1a04000 	mov	r4, r0                                        
   19518:	e24dd004 	sub	sp, sp, #4                                    
   1951c:	e1a08002 	mov	r8, r2                                        
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   19520:	e596009c 	ldr	r0, [r6, #156]	; 0x9c                         
   19524:	e1a02001 	mov	r2, r1                                        
msdos_file_write(rtems_libio_t *iop,const void *buffer, size_t count) 
{                                                                     
    ssize_t            ret = 0;                                       
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
   19528:	e5945018 	ldr	r5, [r4, #24]                                 
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   1952c:	ebffbcc1 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   19530:	e3500000 	cmp	r0, #0                                        
   19534:	1a00001b 	bne	195a8 <msdos_file_write+0xa8>                 
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)                       
   19538:	e594300c 	ldr	r3, [r4, #12]                                 
   1953c:	e3130c02 	tst	r3, #512	; 0x200                              
        iop->offset = fat_fd->fat_file_size;                          
   19540:	15952018 	ldrne	r2, [r5, #24]                               
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    if ((iop->flags & LIBIO_FLAGS_APPEND) != 0)                       
   19544:	05942004 	ldreq	r2, [r4, #4]                                
        iop->offset = fat_fd->fat_file_size;                          
   19548:	15840008 	strne	r0, [r4, #8]                                
   1954c:	15842004 	strne	r2, [r4, #4]                                
                                                                      
    ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,   
   19550:	e1a00006 	mov	r0, r6                                        
   19554:	e1a01005 	mov	r1, r5                                        
   19558:	e1a03008 	mov	r3, r8                                        
   1955c:	e58d7000 	str	r7, [sp]                                      
   19560:	ebffe15b 	bl	11ad4 <fat_file_write>                         
                         buffer);                                     
    if (ret < 0)                                                      
   19564:	e2507000 	subs	r7, r0, #0                                   
   19568:	ba000013 	blt	195bc <msdos_file_write+0xbc>                 
                                                                      
    /*                                                                
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
   1956c:	e994000c 	ldmib	r4, {r2, r3}                                
    if (iop->offset > fat_fd->fat_file_size)                          
   19570:	e595c018 	ldr	ip, [r5, #24]                                 
                                                                      
    /*                                                                
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
   19574:	e0922007 	adds	r2, r2, r7                                   
    if (iop->offset > fat_fd->fat_file_size)                          
   19578:	e1a0000c 	mov	r0, ip                                        
                                                                      
    /*                                                                
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
   1957c:	e0a33fc7 	adc	r3, r3, r7, asr #31                           
    if (iop->offset > fat_fd->fat_file_size)                          
   19580:	e3a01000 	mov	r1, #0                                        
   19584:	e1500002 	cmp	r0, r2                                        
   19588:	e0d1c003 	sbcs	ip, r1, r3                                   
                                                                      
    /*                                                                
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
   1958c:	e984000c 	stmib	r4, {r2, r3}                                
    if (iop->offset > fat_fd->fat_file_size)                          
        fat_fd->fat_file_size = iop->offset;                          
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   19590:	e596009c 	ldr	r0, [r6, #156]	; 0x9c                         
     * update file size in both fat-file descriptor and file control block if
     * file was extended                                              
     */                                                               
    iop->offset += ret;                                               
    if (iop->offset > fat_fd->fat_file_size)                          
        fat_fd->fat_file_size = iop->offset;                          
   19594:	b5852018 	strlt	r2, [r5, #24]                               
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   19598:	ebffbcef 	bl	895c <rtems_semaphore_release>                 
    return ret;                                                       
}                                                                     
   1959c:	e1a00007 	mov	r0, r7                                        
   195a0:	e28dd004 	add	sp, sp, #4                                    
   195a4:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    fat_file_fd_t     *fat_fd = iop->pathinfo.node_access;            
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   195a8:	eb0000c1 	bl	198b4 <__errno>                                <== NOT EXECUTED
   195ac:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   195b0:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   195b4:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
   195b8:	eafffff7 	b	1959c <msdos_file_write+0x9c>                   <== NOT EXECUTED
                                                                      
    ret = fat_file_write(&fs_info->fat, fat_fd, iop->offset, count,   
                         buffer);                                     
    if (ret < 0)                                                      
    {                                                                 
        rtems_semaphore_release(fs_info->vol_sema);                   
   195bc:	e596009c 	ldr	r0, [r6, #156]	; 0x9c                         <== NOT EXECUTED
   195c0:	ebffbce5 	bl	895c <rtems_semaphore_release>                 <== NOT EXECUTED
        return -1;                                                    
   195c4:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
   195c8:	eafffff3 	b	1959c <msdos_file_write+0x9c>                   <== NOT EXECUTED
                                                                      

00018bc4 <msdos_filename_unix2dos>: * Convert a unix filename to a DOS filename. Return -1 if wrong name is * supplied. */ int msdos_filename_unix2dos(const char *un, int unlen, char *dn) {
   18bc4:	e92d0030 	push	{r4, r5}                                     
                                                                      
	/*                                                                   
	 * Fill the dos filename string with blanks. These are DOS's pad     
	 * characters.                                                       
	 */                                                                  
	for (i = 0; i <= 10; i++)                                            
   18bc8:	e3a03000 	mov	r3, #0                                        
		dn[i] = ' ';                                                        
   18bcc:	e3a0c020 	mov	ip, #32                                       
   18bd0:	e7c2c003 	strb	ip, [r2, r3]                                 
                                                                      
	/*                                                                   
	 * Fill the dos filename string with blanks. These are DOS's pad     
	 * characters.                                                       
	 */                                                                  
	for (i = 0; i <= 10; i++)                                            
   18bd4:	e2833001 	add	r3, r3, #1                                    
   18bd8:	e353000b 	cmp	r3, #11                                       
   18bdc:	1afffffb 	bne	18bd0 <msdos_filename_unix2dos+0xc>           
                                                                      
	/*                                                                   
	 * The filenames "." and ".." are handled specially, since they      
	 * don't follow dos filename rules.                                  
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
   18be0:	e5d03000 	ldrb	r3, [r0]                                     
   18be4:	e353002e 	cmp	r3, #46	; 0x2e                                
   18be8:	13a0c000 	movne	ip, #0                                      
   18bec:	03a0c001 	moveq	ip, #1                                      
   18bf0:	e3510001 	cmp	r1, #1                                        
   18bf4:	0353002e 	cmpeq	r3, #46	; 0x2e                              
		dn[0] = '.';                                                        
   18bf8:	03a0302e 	moveq	r3, #46	; 0x2e                              
   18bfc:	05c23000 	strbeq	r3, [r2]                                   
                                                                      
	/*                                                                   
	 * The filenames "." and ".." are handled specially, since they      
	 * don't follow dos filename rules.                                  
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
   18c00:	0a000052 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
		dn[0] = '.';                                                        
		return 0;                                                           
	}                                                                    
	if (un[0] == '.' && un[1] == '.' && unlen == 2) {                    
   18c04:	e35c0000 	cmp	ip, #0                                        
   18c08:	1a00005a 	bne	18d78 <msdos_filename_unix2dos+0x1b4>         
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
   18c0c:	e3510000 	cmp	r1, #0                                        
   18c10:	0a00004e 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
   18c14:	e35c0000 	cmp	ip, #0                                        
		return 0;                                                           
	}                                                                    
	if (un[0] == '.' && un[1] == '.' && unlen == 2) {                    
		dn[0] = '.';                                                        
		dn[1] = '.';                                                        
		return 0;                                                           
   18c18:	11a0c000 	movne	ip, r0                                      
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
   18c1c:	1a000051 	bne	18d68 <msdos_filename_unix2dos+0x1a4>         
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
   18c20:	e3530000 	cmp	r3, #0                                        
   18c24:	0a00001d 	beq	18ca0 <msdos_filename_unix2dos+0xdc>          
   18c28:	e353002e 	cmp	r3, #46	; 0x2e                                
   18c2c:	0a00001b 	beq	18ca0 <msdos_filename_unix2dos+0xdc>          
    if (msdos_map[c] == 0)                                            
   18c30:	e59f4160 	ldr	r4, [pc, #352]	; 18d98 <msdos_filename_unix2dos+0x1d4>
   18c34:	e7d4c003 	ldrb	ip, [r4, r3]                                 
   18c38:	e35c0000 	cmp	ip, #0                                        
   18c3c:	11a05000 	movne	r5, r0                                      
/*                                                                    
 * Convert a unix filename to a DOS filename. Return -1 if wrong name is
 * supplied.                                                          
 */                                                                   
int                                                                   
msdos_filename_unix2dos(const char *un, int unlen, char *dn)          
   18c40:	13a03000 	movne	r3, #0                                      
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
    if (msdos_map[c] == 0)                                            
   18c44:	1a000008 	bne	18c6c <msdos_filename_unix2dos+0xa8>          
   18c48:	ea000014 	b	18ca0 <msdos_filename_unix2dos+0xdc>            
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
   18c4c:	e5f5c001 	ldrb	ip, [r5, #1]!                                
   18c50:	e35c0000 	cmp	ip, #0                                        
   18c54:	0a000011 	beq	18ca0 <msdos_filename_unix2dos+0xdc>          
   18c58:	e35c002e 	cmp	ip, #46	; 0x2e                                
   18c5c:	0a00000f 	beq	18ca0 <msdos_filename_unix2dos+0xdc>          
    if (msdos_map[c] == 0)                                            
   18c60:	e7d4c00c 	ldrb	ip, [r4, ip]                                 
   18c64:	e35c0000 	cmp	ip, #0                                        
   18c68:	0a00000c 	beq	18ca0 <msdos_filename_unix2dos+0xdc>          
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
   18c6c:	e2511001 	subs	r1, r1, #1                                   
    if (msdos_map[c] == 0)                                            
      break;                                                          
		dn[i] = msdos_map[c];                                               
   18c70:	e7c2c003 	strb	ip, [r2, r3]                                 
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
   18c74:	03a0c000 	moveq	ip, #0                                      
   18c78:	13a0c001 	movne	ip, #1                                      
   18c7c:	e2833001 	add	r3, r3, #1                                    
   18c80:	e3530007 	cmp	r3, #7                                        
   18c84:	c3a0c000 	movgt	ip, #0                                      
   18c88:	d20cc001 	andle	ip, ip, #1                                  
   18c8c:	e35c0000 	cmp	ip, #0                                        
    if (msdos_map[c] == 0)                                            
      break;                                                          
		dn[i] = msdos_map[c];                                               
		un++;                                                               
   18c90:	e2800001 	add	r0, r0, #1                                    
	 * Copy the unix filename into the dos filename string upto the end  
	 * of string, a '.', or 8 characters. Whichever happens first stops  
	 * us. This forms the name portion of the dos filename. Fold to      
	 * upper case.                                                       
	 */                                                                  
	for (i = 0; i <= 7 && unlen && (c = *un) && c != '.'; i++) {         
   18c94:	1affffec 	bne	18c4c <msdos_filename_unix2dos+0x88>          
                                                                      
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
   18c98:	e3510000 	cmp	r1, #0                                        
   18c9c:	0a00002b 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
   18ca0:	e5d03000 	ldrb	r3, [r0]                                     
   18ca4:	e3530000 	cmp	r3, #0                                        
   18ca8:	0a000028 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
		un++;                                                               
		unlen--;                                                            
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
   18cac:	e353002e 	cmp	r3, #46	; 0x2e                                
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
		un++;                                                               
   18cb0:	e2800001 	add	r0, r0, #1                                    
		unlen--;                                                            
   18cb4:	e2411001 	sub	r1, r1, #1                                    
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
   18cb8:	11a03000 	movne	r3, r0                                      
   18cbc:	0a000008 	beq	18ce4 <msdos_filename_unix2dos+0x120>         
                                                                      
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
   18cc0:	e3510000 	cmp	r1, #0                                        
   18cc4:	0a000021 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
   18cc8:	e4d30001 	ldrb	r0, [r3], #1                                 
   18ccc:	e3500000 	cmp	r0, #0                                        
   18cd0:	0a00001e 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
		un++;                                                               
		unlen--;                                                            
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
   18cd4:	e350002e 	cmp	r0, #46	; 0x2e                                
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
		un++;                                                               
		unlen--;                                                            
   18cd8:	e2411001 	sub	r1, r1, #1                                    
	/*                                                                   
	 * Strip any further characters up to a '.' or the end of the        
	 * string.                                                           
	 */                                                                  
	while (unlen && (c = *un)) {                                         
		un++;                                                               
   18cdc:	e1a00003 	mov	r0, r3                                        
		unlen--;                                                            
		/* Make sure we've skipped over the dot before stopping. */         
		if (c == '.')                                                       
   18ce0:	1afffff6 	bne	18cc0 <msdos_filename_unix2dos+0xfc>          
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
   18ce4:	e3510000 	cmp	r1, #0                                        
   18ce8:	0a000018 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
   18cec:	e5d03000 	ldrb	r3, [r0]                                     
   18cf0:	e3530000 	cmp	r3, #0                                        
   18cf4:	0a000015 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
    if (msdos_map[c] == 0)                                            
   18cf8:	e59f4098 	ldr	r4, [pc, #152]	; 18d98 <msdos_filename_unix2dos+0x1d4>
   18cfc:	e7d4c003 	ldrb	ip, [r4, r3]                                 
   18d00:	e35c0000 	cmp	ip, #0                                        
/*                                                                    
 * Convert a unix filename to a DOS filename. Return -1 if wrong name is
 * supplied.                                                          
 */                                                                   
int                                                                   
msdos_filename_unix2dos(const char *un, int unlen, char *dn)          
   18d04:	13a03008 	movne	r3, #8                                      
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
    if (msdos_map[c] == 0)                                            
   18d08:	1a000006 	bne	18d28 <msdos_filename_unix2dos+0x164>         
   18d0c:	ea00000f 	b	18d50 <msdos_filename_unix2dos+0x18c>           
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
   18d10:	e5f0c001 	ldrb	ip, [r0, #1]!                                
   18d14:	e35c0000 	cmp	ip, #0                                        
   18d18:	0a00000c 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
    if (msdos_map[c] == 0)                                            
   18d1c:	e7d4c00c 	ldrb	ip, [r4, ip]                                 
   18d20:	e35c0000 	cmp	ip, #0                                        
   18d24:	0a000009 	beq	18d50 <msdos_filename_unix2dos+0x18c>         
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
   18d28:	e2511001 	subs	r1, r1, #1                                   
    if (msdos_map[c] == 0)                                            
      break;                                                          
    dn[i] = msdos_map[c];                                             
   18d2c:	e7c2c003 	strb	ip, [r2, r3]                                 
	/*                                                                   
	 * Copy in the extension part of the name, if any. Force to upper    
	 * case. Note that the extension is allowed to contain '.'s.         
	 * Filenames in this form are probably inaccessable under dos.       
	 */                                                                  
	for (i = 8; i <= 10 && unlen && (c = *un); i++) {                    
   18d30:	03a0c000 	moveq	ip, #0                                      
   18d34:	13a0c001 	movne	ip, #1                                      
   18d38:	e2833001 	add	r3, r3, #1                                    
   18d3c:	e353000a 	cmp	r3, #10                                       
   18d40:	c3a0c000 	movgt	ip, #0                                      
   18d44:	d20cc001 	andle	ip, ip, #1                                  
   18d48:	e35c0000 	cmp	ip, #0                                        
   18d4c:	1affffef 	bne	18d10 <msdos_filename_unix2dos+0x14c>         
    dn[i] = msdos_map[c];                                             
		un++;                                                               
		unlen--;                                                            
	}                                                                    
	return 0;                                                            
}                                                                     
   18d50:	e3a00000 	mov	r0, #0                                        
   18d54:	e8bd0030 	pop	{r4, r5}                                      
   18d58:	e12fff1e 	bx	lr                                             
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
   18d5c:	e5fc3001 	ldrb	r3, [ip, #1]!                                <== NOT EXECUTED
   18d60:	e353002e 	cmp	r3, #46	; 0x2e                                <== NOT EXECUTED
   18d64:	1affffad 	bne	18c20 <msdos_filename_unix2dos+0x5c>          <== NOT EXECUTED
   18d68:	e2511001 	subs	r1, r1, #1                                   <== NOT EXECUTED
		un++;                                                               
   18d6c:	e2800001 	add	r0, r0, #1                                    <== NOT EXECUTED
	}                                                                    
                                                                      
  /*                                                                  
   * Remove any dots from the start of a file name.                   
   */                                                                 
	while (unlen && (*un == '.')) {                                      
   18d70:	1afffff9 	bne	18d5c <msdos_filename_unix2dos+0x198>         <== NOT EXECUTED
   18d74:	eafffff5 	b	18d50 <msdos_filename_unix2dos+0x18c>           <== NOT EXECUTED
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
		dn[0] = '.';                                                        
		return 0;                                                           
	}                                                                    
	if (un[0] == '.' && un[1] == '.' && unlen == 2) {                    
   18d78:	e5d04001 	ldrb	r4, [r0, #1]                                 <== NOT EXECUTED
   18d7c:	e3510002 	cmp	r1, #2                                        <== NOT EXECUTED
   18d80:	0354002e 	cmpeq	r4, #46	; 0x2e                              <== NOT EXECUTED
		dn[0] = '.';                                                        
   18d84:	03a0302e 	moveq	r3, #46	; 0x2e                              <== NOT EXECUTED
   18d88:	05c23000 	strbeq	r3, [r2]                                   <== NOT EXECUTED
		dn[1] = '.';                                                        
   18d8c:	05c23001 	strbeq	r3, [r2, #1]                               <== NOT EXECUTED
	 */                                                                  
	if (un[0] == '.' && unlen == 1) {                                    
		dn[0] = '.';                                                        
		return 0;                                                           
	}                                                                    
	if (un[0] == '.' && un[1] == '.' && unlen == 2) {                    
   18d90:	1affff9d 	bne	18c0c <msdos_filename_unix2dos+0x48>          <== NOT EXECUTED
   18d94:	eaffffed 	b	18d50 <msdos_filename_unix2dos+0x18c>           <== NOT EXECUTED
                                                                      

000179e4 <msdos_find_name>: msdos_find_name( rtems_filesystem_location_info_t *parent_loc, const char *name, int name_len ) {
   179e4:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
   179e8:	e24dd040 	sub	sp, sp, #64	; 0x40                            
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;       
   179ec:	e590c014 	ldr	ip, [r0, #20]                                 
msdos_find_name(                                                      
    rtems_filesystem_location_info_t *parent_loc,                     
    const char                       *name,                           
    int                               name_len                        
    )                                                                 
{                                                                     
   179f0:	e1a07001 	mov	r7, r1                                        
    fat_dir_pos_t      dir_pos;                                       
    unsigned short     time_val = 0;                                  
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
   179f4:	e28d600c 	add	r6, sp, #12                                   
    int                               name_len                        
    )                                                                 
{                                                                     
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;       
    fat_file_fd_t     *fat_fd = NULL;                                 
   179f8:	e3a04000 	mov	r4, #0                                        
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
                                                                      
    name_type = msdos_long_to_short (name,                            
   179fc:	e1a01002 	mov	r1, r2                                        
msdos_find_name(                                                      
    rtems_filesystem_location_info_t *parent_loc,                     
    const char                       *name,                           
    int                               name_len                        
    )                                                                 
{                                                                     
   17a00:	e1a05000 	mov	r5, r0                                        
   17a04:	e1a08002 	mov	r8, r2                                        
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
                                                                      
    name_type = msdos_long_to_short (name,                            
   17a08:	e3a0300b 	mov	r3, #11                                       
   17a0c:	e1a02006 	mov	r2, r6                                        
   17a10:	e1a00007 	mov	r0, r7                                        
    const char                       *name,                           
    int                               name_len                        
    )                                                                 
{                                                                     
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = parent_loc->mt_entry->fs_info;       
   17a14:	e59c9008 	ldr	r9, [ip, #8]                                  
    fat_file_fd_t     *fat_fd = NULL;                                 
   17a18:	e58d403c 	str	r4, [sp, #60]	; 0x3c                          
    fat_dir_pos_t      dir_pos;                                       
    unsigned short     time_val = 0;                                  
    unsigned short     date = 0;                                      
    char               node_entry[MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE]; 
                                                                      
    memset(node_entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);         
   17a1c:	e58d400c 	str	r4, [sp, #12]                                 
   17a20:	e58d4010 	str	r4, [sp, #16]                                 
   17a24:	e58d4014 	str	r4, [sp, #20]                                 
   17a28:	e58d4018 	str	r4, [sp, #24]                                 
   17a2c:	e58d401c 	str	r4, [sp, #28]                                 
   17a30:	e58d4020 	str	r4, [sp, #32]                                 
   17a34:	e58d4024 	str	r4, [sp, #36]	; 0x24                          
   17a38:	e58d4028 	str	r4, [sp, #40]	; 0x28                          
                                                                      
    name_type = msdos_long_to_short (name,                            
   17a3c:	ebfffaae 	bl	164fc <msdos_long_to_short>                    
                                                                      
    /*                                                                
     * find the node which correspondes to the name in the directory pointed by
     * 'parent_loc'                                                   
     */                                                               
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
   17a40:	e28da02c 	add	sl, sp, #44	; 0x2c                            
   17a44:	e58d0000 	str	r0, [sp]                                      
   17a48:	e1a01004 	mov	r1, r4                                        
   17a4c:	e1a00005 	mov	r0, r5                                        
   17a50:	e1a02007 	mov	r2, r7                                        
   17a54:	e1a03008 	mov	r3, r8                                        
   17a58:	e58da004 	str	sl, [sp, #4]                                  
   17a5c:	e58d6008 	str	r6, [sp, #8]                                  
   17a60:	ebffffa7 	bl	17904 <msdos_get_name_node>                    
                             &dir_pos, node_entry);                   
    if (rc != RC_OK)                                                  
   17a64:	e2504000 	subs	r4, r0, #0                                   
   17a68:	1a000003 	bne	17a7c <msdos_find_name+0x98>                  
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
   17a6c:	e5dd3017 	ldrb	r3, [sp, #23]                                
   17a70:	e3130008 	tst	r3, #8                                        
   17a74:	0a000003 	beq	17a88 <msdos_find_name+0xa4>                  
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
        return MSDOS_NAME_NOT_FOUND_ERR;                              
   17a78:	e59f4120 	ldr	r4, [pc, #288]	; 17ba0 <msdos_find_name+0x1bc><== NOT EXECUTED
                                                                      
    /* update node_info_ptr field */                                  
    parent_loc->node_access = fat_fd;                                 
                                                                      
    return rc;                                                        
}                                                                     
   17a7c:	e1a00004 	mov	r0, r4                                        
   17a80:	e28dd040 	add	sp, sp, #64	; 0x40                            
   17a84:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
                             &dir_pos, node_entry);                   
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
   17a88:	e203303f 	and	r3, r3, #63	; 0x3f                            
    rc = msdos_get_name_node(parent_loc, false, name, name_len, name_type,
                             &dir_pos, node_entry);                   
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    if (((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_VOLUME_ID) ||     
   17a8c:	e353000f 	cmp	r3, #15                                       
   17a90:	0afffff8 	beq	17a78 <msdos_find_name+0x94>                  
        ((*MSDOS_DIR_ATTR(node_entry) & MSDOS_ATTR_LFN_MASK) == MSDOS_ATTR_LFN))
        return MSDOS_NAME_NOT_FOUND_ERR;                              
                                                                      
    /* open fat-file corresponded to the found node */                
    rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);             
   17a94:	e1a00009 	mov	r0, r9                                        
   17a98:	e1a0100a 	mov	r1, sl                                        
   17a9c:	e28d203c 	add	r2, sp, #60	; 0x3c                            
   17aa0:	ebffe5c7 	bl	111c4 <fat_file_open>                          
    if (rc != RC_OK)                                                  
   17aa4:	e2504000 	subs	r4, r0, #0                                   
   17aa8:	1afffff3 	bne	17a7c <msdos_find_name+0x98>                  
        return rc;                                                    
                                                                      
    fat_fd->dir_pos = dir_pos;                                        
   17aac:	e59d703c 	ldr	r7, [sp, #60]	; 0x3c                          
     * size and first cluster num to the disk after each write operation
     * (even if one byte is written  - that is TOO slow) because      
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
   17ab0:	e597e008 	ldr	lr, [r7, #8]                                  
    /* open fat-file corresponded to the found node */                
    rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);             
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->dir_pos = dir_pos;                                        
   17ab4:	e89a000f 	ldm	sl, {r0, r1, r2, r3}                          
   17ab8:	e287c020 	add	ip, r7, #32                                   
     * size and first cluster num to the disk after each write operation
     * (even if one byte is written  - that is TOO slow) because      
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
   17abc:	e35e0001 	cmp	lr, #1                                        
    /* open fat-file corresponded to the found node */                
    rc = fat_file_open(&fs_info->fat, &dir_pos, &fat_fd);             
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->dir_pos = dir_pos;                                        
   17ac0:	e88c000f 	stm	ip, {r0, r1, r2, r3}                          
     * size and first cluster num to the disk after each write operation
     * (even if one byte is written  - that is TOO slow) because      
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
   17ac4:	0a000007 	beq	17ae8 <msdos_find_name+0x104>                 
            fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;               
        }                                                             
    }                                                                 
                                                                      
    /* close fat-file corresponded to the node we searched in */      
    rc = fat_file_close(&fs_info->fat, parent_loc->node_access);      
   17ac8:	e1a00009 	mov	r0, r9                                        
   17acc:	e5951008 	ldr	r1, [r5, #8]                                  
   17ad0:	ebffe715 	bl	1172c <fat_file_close>                         
    if (rc != RC_OK)                                                  
   17ad4:	e2504000 	subs	r4, r0, #0                                   
   17ad8:	1a000021 	bne	17b64 <msdos_find_name+0x180>                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* update node_info_ptr field */                                  
    parent_loc->node_access = fat_fd;                                 
   17adc:	e59d303c 	ldr	r3, [sp, #60]	; 0x3c                          
   17ae0:	e5853008 	str	r3, [r5, #8]                                  
                                                                      
    return rc;                                                        
   17ae4:	eaffffe4 	b	17a7c <msdos_find_name+0x98>                    
     * otherwise real values of these fields stored in fat-file descriptor
     * may be accidentally rewritten with wrong values stored on the disk
     */                                                               
    if (fat_fd->links_num == 1)                                       
    {                                                                 
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);          
   17ae8:	e1d621b4 	ldrh	r2, [r6, #20]                                
   17aec:	e1d631ba 	ldrh	r3, [r6, #26]                                
   17af0:	e1833802 	orr	r3, r3, r2, lsl #16                           
   17af4:	e587301c 	str	r3, [r7, #28]                                 
                                                                      
        time_val = *MSDOS_DIR_WRITE_TIME(node_entry);                 
        date = *MSDOS_DIR_WRITE_DATE(node_entry);                     
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
   17af8:	e1d601b8 	ldrh	r0, [r6, #24]                                
   17afc:	e1d611b6 	ldrh	r1, [r6, #22]                                
   17b00:	eb0003e8 	bl	18aa8 <msdos_date_dos2unix>                    
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
   17b04:	e5dd3017 	ldrb	r3, [sp, #23]                                
   17b08:	e3130010 	tst	r3, #16                                       
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(node_entry);          
                                                                      
        time_val = *MSDOS_DIR_WRITE_TIME(node_entry);                 
        date = *MSDOS_DIR_WRITE_DATE(node_entry);                     
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
   17b0c:	e5870040 	str	r0, [r7, #64]	; 0x40                          
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
   17b10:	1a000017 	bne	17b74 <msdos_find_name+0x190>                 
                return rc;                                            
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
   17b14:	e59d303c 	ldr	r3, [sp, #60]	; 0x3c                          
   17b18:	e596201c 	ldr	r2, [r6, #28]                                 
            fat_fd->fat_file_type = FAT_FILE;                         
   17b1c:	e3a01004 	mov	r1, #4                                        
   17b20:	e5831010 	str	r1, [r3, #16]                                 
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
   17b24:	e3e01000 	mvn	r1, #0                                        
                return rc;                                            
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            fat_fd->fat_file_size = CF_LE_L(*MSDOS_DIR_FILE_SIZE(node_entry));
   17b28:	e5832018 	str	r2, [r3, #24]                                 
            fat_fd->fat_file_type = FAT_FILE;                         
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
   17b2c:	e5831014 	str	r1, [r3, #20]                                 
        }                                                             
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
        fat_fd->map.disk_cln = fat_fd->cln;                           
   17b30:	e593101c 	ldr	r1, [r3, #28]                                 
            fat_fd->fat_file_type = FAT_FILE;                         
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
        }                                                             
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
   17b34:	e3a00000 	mov	r0, #0                                        
        fat_fd->map.disk_cln = fat_fd->cln;                           
                                                                      
        if ((fat_fd->fat_file_size != 0) &&                           
   17b38:	e3520000 	cmp	r2, #0                                        
            fat_fd->fat_file_type = FAT_FILE;                         
            fat_fd->size_limit = MSDOS_MAX_FILE_SIZE;                 
        }                                                             
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
   17b3c:	e5830034 	str	r0, [r3, #52]	; 0x34                          
        fat_fd->map.disk_cln = fat_fd->cln;                           
   17b40:	e5831038 	str	r1, [r3, #56]	; 0x38                          
                                                                      
        if ((fat_fd->fat_file_size != 0) &&                           
   17b44:	0a000003 	beq	17b58 <msdos_find_name+0x174>                 
            (fat_fd->fat_file_size <= fs_info->fat.vol.bpc))          
   17b48:	e1d900b6 	ldrh	r0, [r9, #6]                                 
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
        fat_fd->map.disk_cln = fat_fd->cln;                           
                                                                      
        if ((fat_fd->fat_file_size != 0) &&                           
   17b4c:	e1500002 	cmp	r0, r2                                        
            (fat_fd->fat_file_size <= fs_info->fat.vol.bpc))          
        {                                                             
            fat_fd->map.last_cln = fat_fd->cln;                       
   17b50:	2583103c 	strcs	r1, [r3, #60]	; 0x3c                        
                                                                      
        /* these data is not actual for zero-length fat-file */       
        fat_fd->map.file_cln = 0;                                     
        fat_fd->map.disk_cln = fat_fd->cln;                           
                                                                      
        if ((fat_fd->fat_file_size != 0) &&                           
   17b54:	2affffdb 	bcs	17ac8 <msdos_find_name+0xe4>                  
        {                                                             
            fat_fd->map.last_cln = fat_fd->cln;                       
        }                                                             
        else                                                          
        {                                                             
            fat_fd->map.last_cln = FAT_UNDEFINED_VALUE;               
   17b58:	e3e02000 	mvn	r2, #0                                        
   17b5c:	e583203c 	str	r2, [r3, #60]	; 0x3c                          
   17b60:	eaffffd8 	b	17ac8 <msdos_find_name+0xe4>                    
                                                                      
    /* close fat-file corresponded to the node we searched in */      
    rc = fat_file_close(&fs_info->fat, parent_loc->node_access);      
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
   17b64:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   17b68:	e59d103c 	ldr	r1, [sp, #60]	; 0x3c                          <== NOT EXECUTED
   17b6c:	ebffe6ee 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
        return rc;                                                    
   17b70:	eaffffc1 	b	17a7c <msdos_find_name+0x98>                    <== NOT EXECUTED
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
        {                                                             
            fat_fd->fat_file_type = FAT_DIRECTORY;                    
   17b74:	e59d103c 	ldr	r1, [sp, #60]	; 0x3c                          
            fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                
   17b78:	e3a03602 	mov	r3, #2097152	; 0x200000                       
                                                                      
        fat_fd->mtime = msdos_date_dos2unix(CF_LE_W(date), CF_LE_W(time_val));
                                                                      
        if ((*MSDOS_DIR_ATTR(node_entry)) & MSDOS_ATTR_DIRECTORY)     
        {                                                             
            fat_fd->fat_file_type = FAT_DIRECTORY;                    
   17b7c:	e5814010 	str	r4, [r1, #16]                                 
            fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                
   17b80:	e5813014 	str	r3, [r1, #20]                                 
                                                                      
            rc = fat_file_size(&fs_info->fat, fat_fd);                
   17b84:	e1a00009 	mov	r0, r9                                        
   17b88:	ebffe87e 	bl	11d88 <fat_file_size>                          
            if (rc != RC_OK)                                          
   17b8c:	e2504000 	subs	r4, r0, #0                                   
   17b90:	1afffff3 	bne	17b64 <msdos_find_name+0x180>                 
   17b94:	e59d303c 	ldr	r3, [sp, #60]	; 0x3c                          
   17b98:	e5932018 	ldr	r2, [r3, #24]                                 
   17b9c:	eaffffe3 	b	17b30 <msdos_find_name+0x14c>                   
                                                                      

00016bc0 <msdos_find_name_in_fat_file>: int name_len, msdos_name_type_t name_type, fat_dir_pos_t *dir_pos, char *name_dir_entry ) {
   16bc0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   16bc4:	e24dd050 	sub	sp, sp, #80	; 0x50                            
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
                                                                      
    assert(name_len > 0);                                             
   16bc8:	e59dc074 	ldr	ip, [sp, #116]	; 0x74                         
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
   16bcc:	e5900008 	ldr	r0, [r0, #8]                                  
    int                                   name_len,                   
    msdos_name_type_t                     name_type,                  
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
   16bd0:	e20220ff 	and	r2, r2, #255	; 0xff                           
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
                                                                      
    assert(name_len > 0);                                             
   16bd4:	e35c0000 	cmp	ip, #0                                        
    int                                   name_len,                   
    msdos_name_type_t                     name_type,                  
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
   16bd8:	e58d102c 	str	r1, [sp, #44]	; 0x2c                          
   16bdc:	e58d3034 	str	r3, [sp, #52]	; 0x34                          
   16be0:	e58d2008 	str	r2, [sp, #8]                                  
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
   16be4:	e58d0020 	str	r0, [sp, #32]                                 
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
                                                                      
    assert(name_len > 0);                                             
   16be8:	da000251 	ble	17534 <msdos_find_name_in_fat_file+0x974>     
     * is short still check for possible long entries with the short name.
     *                                                                
     * In PR1491 we need to have a LFN for a short file name entry. To
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
   16bec:	e59dc008 	ldr	ip, [sp, #8]                                  
static inline void                                                    
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
   16bf0:	e3a02000 	mov	r2, #0                                        
   16bf4:	e15c0002 	cmp	ip, r2                                        
   16bf8:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
   16bfc:	e3e03000 	mvn	r3, #0                                        
static inline void                                                    
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
   16c00:	e58c2000 	str	r2, [ip]                                      
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
   16c04:	e98c000c 	stmib	ip, {r2, r3}                                
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
   16c08:	e58c300c 	str	r3, [ip, #12]                                 
                                                                      
    assert(name_len > 0);                                             
                                                                      
    fat_dir_pos_init(dir_pos);                                        
                                                                      
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
   16c0c:	e58d3048 	str	r3, [sp, #72]	; 0x48                          
   16c10:	e58d3044 	str	r3, [sp, #68]	; 0x44                          
     * is short still check for possible long entries with the short name.
     *                                                                
     * In PR1491 we need to have a LFN for a short file name entry. To
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
   16c14:	0a000003 	beq	16c28 <msdos_find_name_in_fat_file+0x68>      
   16c18:	e59dc078 	ldr	ip, [sp, #120]	; 0x78                         
   16c1c:	e35c0001 	cmp	ip, #1                                        
      lfn_entries = 0;                                                
   16c20:	058d2028 	streq	r2, [sp, #40]	; 0x28                        
     * is short still check for possible long entries with the short name.
     *                                                                
     * In PR1491 we need to have a LFN for a short file name entry. To
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
   16c24:	0a000006 	beq	16c44 <msdos_find_name_in_fat_file+0x84>      
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
   16c28:	e59dc074 	ldr	ip, [sp, #116]	; 0x74                         
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
   16c2c:	e59f2914 	ldr	r2, [pc, #2324]	; 17548 <msdos_find_name_in_fat_file+0x988>
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
   16c30:	e28c300c 	add	r3, ip, #12                                   
     * test this make this test always fail, ie add "0 &&".           
     */                                                               
    if (create_node && (name_type == MSDOS_NAME_SHORT))               
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
   16c34:	e0c2e293 	smull	lr, r2, r3, r2                              
   16c38:	e1a03fc3 	asr	r3, r3, #31                                   
   16c3c:	e0633142 	rsb	r3, r3, r2, asr #2                            
   16c40:	e58d3028 	str	r3, [sp, #40]	; 0x28                          
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
   16c44:	e59dc02c 	ldr	ip, [sp, #44]	; 0x2c                          
   16c48:	e59c3020 	ldr	r3, [ip, #32]                                 
   16c4c:	e3530001 	cmp	r3, #1                                        
   16c50:	0a00014f 	beq	17194 <msdos_find_name_in_fat_file+0x5d4>     
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
   16c54:	e59dc020 	ldr	ip, [sp, #32]                                 
   16c58:	e1dcc0b6 	ldrh	ip, [ip, #6]                                 
   16c5c:	e58dc004 	str	ip, [sp, #4]                                  
    /*                                                                
     * Scan the directory seeing if the file is present. While        
     * doing this see if a suitable location can be found to          
     * create the entry if the name is not found.                     
     */                                                               
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, (dir_offset * bts2rd),
   16c60:	e3a0c000 	mov	ip, #0                                        
   16c64:	e58dc01c 	str	ip, [sp, #28]                                 
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
   16c68:	e1a0900c 	mov	r9, ip                                        
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
    uint32_t         empty_space_count = 0;                           
   16c6c:	e1a0700c 	mov	r7, ip                                        
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
   16c70:	e1a0500c 	mov	r5, ip                                        
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
    uint32_t         empty_space_offset = 0;                          
   16c74:	e1a0a00c 	mov	sl, ip                                        
    uint32_t         bts2rd = 0;                                      
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
    int              lfn_entries;                                     
    int              lfn_entry = 0;                                   
   16c78:	e58dc00c 	str	ip, [sp, #12]                                 
    uint32_t         dir_offset = 0;                                  
    uint32_t         dir_entry = 0;                                   
    uint32_t         bts2rd = 0;                                      
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
    uint8_t          lfn_checksum = 0;                                
   16c7c:	e58dc010 	str	ip, [sp, #16]                                 
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_offset = 0;                                  
    uint32_t         dir_entry = 0;                                   
    uint32_t         bts2rd = 0;                                      
    fat_pos_t        lfn_start;                                       
    bool             lfn_matched = false;                             
   16c80:	e1a0b00c 	mov	fp, ip                                        
    char                                 *name_dir_entry              
                                )                                     
{                                                                     
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_offset = 0;                                  
   16c84:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
   16c88:	e59dc020 	ldr	ip, [sp, #32]                                 
   16c8c:	e59c80a0 	ldr	r8, [ip, #160]	; 0xa0                         
    /*                                                                
     * Scan the directory seeing if the file is present. While        
     * doing this see if a suitable location can be found to          
     * create the entry if the name is not found.                     
     */                                                               
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, (dir_offset * bts2rd),
   16c90:	e59d0020 	ldr	r0, [sp, #32]                                 
   16c94:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   16c98:	e59d201c 	ldr	r2, [sp, #28]                                 
   16c9c:	e59d3004 	ldr	r3, [sp, #4]                                  
   16ca0:	e58d8000 	str	r8, [sp]                                      
   16ca4:	ebffe9e4 	bl	1143c <fat_file_read>                          
   16ca8:	e3500000 	cmp	r0, #0                                        
   16cac:	0a00014b 	beq	171e0 <msdos_find_name_in_fat_file+0x620>     
        bool remainder_empty = false;                                 
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[2] dir_offset:%li\n", dir_offset);             
#endif                                                                
                                                                      
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
   16cb0:	e350001f 	cmp	r0, #31                                       
   16cb4:	da0001c9 	ble	173e0 <msdos_find_name_in_fat_file+0x820>     
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
   16cb8:	e59dc004 	ldr	ip, [sp, #4]                                  
   16cbc:	e150000c 	cmp	r0, ip                                        
   16cc0:	1a000216 	bne	17520 <msdos_find_name_in_fat_file+0x960>     
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
   16cc4:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
   16cc8:	e59dc020 	ldr	ip, [sp, #32]                                 
   16ccc:	e2833001 	add	r3, r3, #1                                    
   16cd0:	e1a0200b 	mov	r2, fp                                        
   16cd4:	e59c80a0 	ldr	r8, [ip, #160]	; 0xa0                         
   16cd8:	e58d3024 	str	r3, [sp, #36]	; 0x24                          
   16cdc:	e59db030 	ldr	fp, [sp, #48]	; 0x30                          
#endif                                                                
                                                                      
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
   16ce0:	e3a04000 	mov	r4, #0                                        
                                                                      
            /*                                                        
             * See if the entry is empty or the remainder of the directory is
             * empty ? Localise to make the code read better.         
             */                                                       
            bool entry_empty = (*MSDOS_DIR_ENTRY_TYPE(entry) ==       
   16ce4:	e7d83004 	ldrb	r3, [r8, r4]                                 
             * to here and write the long file name if this is the start of
             * a series of empty entries. If empty_space_count is 0 then
             * we are currently not inside an empty series of entries. It
             * is a count of empty entries.                           
             */                                                       
            if (empty_space_count == 0)                               
   16ce8:	e3570000 	cmp	r7, #0                                        
   16cec:	01a05004 	moveq	r5, r4                                      
   16cf0:	01a0a00b 	moveq	sl, fp                                      
            {                                                         
                empty_space_entry = dir_entry;                        
                empty_space_offset = dir_offset;                      
            }                                                         
                                                                      
            if (remainder_empty)                                      
   16cf4:	e3530000 	cmp	r3, #0                                        
#endif                                                                
                /*                                                    
                 * If just looking and there is no more entries in the
                 * directory - return name-not-found                  
                 */                                                   
                if (!create_node)                                     
   16cf8:	e59dc008 	ldr	ip, [sp, #8]                                  
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char* entry = (char*) fs_info->cl_buf + dir_entry;        
   16cfc:	e0886004 	add	r6, r8, r4                                    
            {                                                         
                empty_space_entry = dir_entry;                        
                empty_space_offset = dir_offset;                      
            }                                                         
                                                                      
            if (remainder_empty)                                      
   16d00:	0a0000b4 	beq	16fd8 <msdos_find_name_in_fat_file+0x418>     
                  printf ("MSFS:[3.2] esf:%i esc%i\n", empty_space_found, empty_space_count);
#endif                                                                
                }                                                     
                break;                                                
            }                                                         
            else if (entry_empty)                                     
   16d04:	e35300e5 	cmp	r3, #229	; 0xe5                               
   16d08:	0a000040 	beq	16e10 <msdos_find_name_in_fat_file+0x250>     
                 * A valid entry so handle it.                        
                 *                                                    
                 * If empty space has not been found we need to start the
                 * count again.                                       
                 */                                                   
                if (create_node && !empty_space_found)                
   16d0c:	e35c0000 	cmp	ip, #0                                        
   16d10:	0a000002 	beq	16d20 <msdos_find_name_in_fat_file+0x160>     
                {                                                     
                    empty_space_entry = 0;                            
                    empty_space_count = 0;                            
   16d14:	e3590000 	cmp	r9, #0                                        
   16d18:	01a07009 	moveq	r7, r9                                      
   16d1c:	01a05009 	moveq	r5, r9                                      
                                                                      
                /*                                                    
                 * Check the attribute to see if the entry is for a long
                 * file name.                                         
                 */                                                   
                if ((*MSDOS_DIR_ATTR(entry) & MSDOS_ATTR_LFN_MASK) == 
   16d20:	e5d6100b 	ldrb	r1, [r6, #11]                                
   16d24:	e201103f 	and	r1, r1, #63	; 0x3f                            
   16d28:	e351000f 	cmp	r1, #15                                       
   16d2c:	0a000050 	beq	16e74 <msdos_find_name_in_fat_file+0x2b4>     
                     * If a LFN has been found and it matched check the
                     * entries have all been found and the checksum is
                     * correct. If this is the case return the short file
                     * name entry.                                    
                     */                                               
                    if (lfn_matched)                                  
   16d30:	e3520000 	cmp	r2, #0                                        
   16d34:	0a000047 	beq	16e58 <msdos_find_name_in_fat_file+0x298>     
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   16d38:	e3a01000 	mov	r1, #0                                        
                     * If a LFN has been found and it matched check the
                     * entries have all been found and the checksum is
                     * correct. If this is the case return the short file
                     * name entry.                                    
                     */                                               
                    if (lfn_matched)                                  
   16d3c:	e1a02006 	mov	r2, r6                                        
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   16d40:	e286c00a 	add	ip, r6, #10                                   
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
   16d44:	e1a00001 	mov	r0, r1                                        
   16d48:	ea000002 	b	16d58 <msdos_find_name_in_fat_file+0x198>       
   16d4c:	e2100001 	ands	r0, r0, #1                                   
   16d50:	e5f23001 	ldrb	r3, [r2, #1]!                                
   16d54:	13a00080 	movne	r0, #128	; 0x80                             
   16d58:	e0830000 	add	r0, r3, r0                                    
   16d5c:	e08000a1 	add	r0, r0, r1, lsr #1                            
                    {                                                 
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
   16d60:	e152000c 	cmp	r2, ip                                        
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
   16d64:	e20010ff 	and	r1, r0, #255	; 0xff                           
                    {                                                 
                        uint8_t  cs = 0;                              
                        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(entry);
                        int      i;                                   
                                                                      
                        for (i = 0; i < MSDOS_SHORT_NAME_LEN; i++, p++)
   16d68:	1afffff7 	bne	16d4c <msdos_find_name_in_fat_file+0x18c>     
                            cs = ((cs & 1) ? 0x80 : 0) + (cs >> 1) + *p;
                                                                      
                        if (lfn_entry || (lfn_checksum != cs))        
   16d6c:	e28d000c 	add	r0, sp, #12                                   
   16d70:	e8901001 	ldm	r0, {r0, ip}                                  
   16d74:	e3500000 	cmp	r0, #0                                        
   16d78:	015c0001 	cmpeq	ip, r1                                      
   16d7c:	1a000035 	bne	16e58 <msdos_find_name_in_fat_file+0x298>     
#endif                                                                
                        /*                                            
                         * We get the entry we looked for - fill the position
                         * structure and the 32 bytes of the short entry
                         */                                           
                        int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
   16d80:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
   16d84:	e59d0020 	ldr	r0, [sp, #32]                                 
   16d88:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   16d8c:	e3a02001 	mov	r2, #1                                        
   16d90:	e59d301c 	ldr	r3, [sp, #28]                                 
   16d94:	e58dc000 	str	ip, [sp]                                      
   16d98:	ebffea8c 	bl	117d0 <fat_file_ioctl>                         
                                                dir_offset * bts2rd,  
                                                &dir_pos->sname.cln); 
                        if (rc != RC_OK)                              
   16d9c:	e2505000 	subs	r5, r0, #0                                   
   16da0:	1a000017 	bne	16e04 <msdos_find_name_in_fat_file+0x244>     
                            return rc;                                
                                                                      
                        dir_pos->sname.ofs = dir_entry;               
                                                                      
                        if (lfn_start.cln != FAT_FILE_SHORT_NAME)     
   16da4:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
                                                dir_offset * bts2rd,  
                                                &dir_pos->sname.cln); 
                        if (rc != RC_OK)                              
                            return rc;                                
                                                                      
                        dir_pos->sname.ofs = dir_entry;               
   16da8:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
                                                                      
                        if (lfn_start.cln != FAT_FILE_SHORT_NAME)     
   16dac:	e3730001 	cmn	r3, #1                                        
                                                dir_offset * bts2rd,  
                                                &dir_pos->sname.cln); 
                        if (rc != RC_OK)                              
                            return rc;                                
                                                                      
                        dir_pos->sname.ofs = dir_entry;               
   16db0:	e58c4004 	str	r4, [ip, #4]                                  
                                                                      
                        if (lfn_start.cln != FAT_FILE_SHORT_NAME)     
   16db4:	0a00000a 	beq	16de4 <msdos_find_name_in_fat_file+0x224>     
                        {                                             
                          rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
   16db8:	e59dc004 	ldr	ip, [sp, #4]                                  
   16dbc:	e59d0020 	ldr	r0, [sp, #32]                                 
   16dc0:	e003039c 	mul	r3, ip, r3                                    
   16dc4:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   16dc8:	e28dc044 	add	ip, sp, #68	; 0x44                            
   16dcc:	e3a02001 	mov	r2, #1                                        
   16dd0:	e58dc000 	str	ip, [sp]                                      
   16dd4:	ebffea7d 	bl	117d0 <fat_file_ioctl>                         
                                              lfn_start.cln * bts2rd, 
                                              &lfn_start.cln);        
                          if (rc != RC_OK)                            
   16dd8:	e3500000 	cmp	r0, #0                                        
   16ddc:	1a0000fd 	bne	171d8 <msdos_find_name_in_fat_file+0x618>     
   16de0:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
                            return rc;                                
                        }                                             
                                                                      
                        dir_pos->lname.cln = lfn_start.cln;           
   16de4:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
   16de8:	e58c3008 	str	r3, [ip, #8]                                  
                        dir_pos->lname.ofs = lfn_start.ofs;           
   16dec:	e59d3048 	ldr	r3, [sp, #72]	; 0x48                          
                                                                      
                        memcpy(name_dir_entry, entry,                 
   16df0:	e59d0080 	ldr	r0, [sp, #128]	; 0x80                         
                          if (rc != RC_OK)                            
                            return rc;                                
                        }                                             
                                                                      
                        dir_pos->lname.cln = lfn_start.cln;           
                        dir_pos->lname.ofs = lfn_start.ofs;           
   16df4:	e58c300c 	str	r3, [ip, #12]                                 
                                                                      
                        memcpy(name_dir_entry, entry,                 
   16df8:	e1a01006 	mov	r1, r6                                        
   16dfc:	e3a02020 	mov	r2, #32                                       
   16e00:	eb000d52 	bl	1a350 <memcpy>                                 
        empty_space_entry = 0;                                        
        read_cluster = true;                                          
    }                                                                 
                                                                      
    return 0;                                                         
}                                                                     
   16e04:	e1a00005 	mov	r0, r5                                        
   16e08:	e28dd050 	add	sp, sp, #80	; 0x50                            
   16e0c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                }                                                     
                break;                                                
            }                                                         
            else if (entry_empty)                                     
            {                                                         
                if (create_node)                                      
   16e10:	e35c0000 	cmp	ip, #0                                        
   16e14:	0a000003 	beq	16e28 <msdos_find_name_in_fat_file+0x268>     
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
                    empty_space_found = true;                         
   16e18:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          
                if (create_node)                                      
                {                                                     
                  /*                                                  
                   * Remainder is not empty so is this entry empty ?  
                   */                                                 
                  empty_space_count++;                                
   16e1c:	e2877001 	add	r7, r7, #1                                    
                                                                      
                  if (empty_space_count == (lfn_entries + 1))         
                    empty_space_found = true;                         
   16e20:	e1530007 	cmp	r3, r7                                        
   16e24:	03a09001 	moveq	r9, #1                                      
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
   16e28:	e59dc004 	ldr	ip, [sp, #4]                                  
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
   16e2c:	e2844020 	add	r4, r4, #32                                   
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
   16e30:	e15c0004 	cmp	ip, r4                                        
   16e34:	8affffaa 	bhi	16ce4 <msdos_find_name_in_fat_file+0x124>     
   16e38:	e59de01c 	ldr	lr, [sp, #28]                                 
   16e3c:	e08ee00c 	add	lr, lr, ip                                    
        }                                                             
                                                                      
        if (remainder_empty)                                          
            break;                                                    
                                                                      
        dir_offset++;                                                 
   16e40:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
   16e44:	e28cc001 	add	ip, ip, #1                                    
   16e48:	e1a0b002 	mov	fp, r2                                        
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
                                                                      
        /* have to look at the DIR_NAME as "raw" 8-bit data */        
        for (dir_entry = 0;                                           
   16e4c:	e58de01c 	str	lr, [sp, #28]                                 
        }                                                             
                                                                      
        if (remainder_empty)                                          
            break;                                                    
                                                                      
        dir_offset++;                                                 
   16e50:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
   16e54:	eaffff8d 	b	16c90 <msdos_find_name_in_fat_file+0xd0>        
                     * short and they match then we have the entry. We will not
                     * match a long file name against a short file name because
                     * a long file name that generates a matching short file
                     * name is not a long file name.                  
                     */                                               
                    if (lfn_matched ||                                
   16e58:	e59dc078 	ldr	ip, [sp, #120]	; 0x78                         
   16e5c:	e35c0001 	cmp	ip, #1                                        
   16e60:	0a00000e 	beq	16ea0 <msdos_find_name_in_fat_file+0x2e0>     
                        memcpy(name_dir_entry, entry,                 
                               MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);    
                        return RC_OK;                                 
                    }                                                 
                                                                      
                    lfn_start.cln = FAT_FILE_SHORT_NAME;              
   16e64:	e3e00000 	mvn	r0, #0                                        
   16e68:	e58d0044 	str	r0, [sp, #68]	; 0x44                          
                    lfn_matched = false;                              
   16e6c:	e3a02000 	mov	r2, #0                                        
   16e70:	eaffffec 	b	16e28 <msdos_find_name_in_fat_file+0x268>       
#endif                                                                
                    /*                                                
                     * If we are not already processing a LFN see if this is
                     * the first entry of a LFN ?                     
                     */                                               
                    if (lfn_start.cln == FAT_FILE_SHORT_NAME)         
   16e74:	e59d1044 	ldr	r1, [sp, #68]	; 0x44                          
   16e78:	e3710001 	cmn	r1, #1                                        
   16e7c:	0a000011 	beq	16ec8 <msdos_find_name_in_fat_file+0x308>     
                     * If the entry number or the check sum do not match
                     * forget this series of long directory entries. These
                     * could be orphaned entries depending on the history
                     * of the disk.                                   
                     */                                               
                    if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) & 
   16e80:	e59dc00c 	ldr	ip, [sp, #12]                                 
   16e84:	e203303f 	and	r3, r3, #63	; 0x3f                            
   16e88:	e153000c 	cmp	r3, ip                                        
   16e8c:	e58d3014 	str	r3, [sp, #20]                                 
   16e90:	0a000014 	beq	16ee8 <msdos_find_name_in_fat_file+0x328>     
                        (lfn_checksum != *MSDOS_DIR_LFN_CHECKSUM(entry)))
                    {                                                 
#if MSDOS_FIND_PRINT                                                  
                        printf ("MSFS:[4.4] no match\n");             
#endif                                                                
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
   16e94:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   16e98:	e58d0044 	str	r0, [sp, #68]	; 0x44                          <== NOT EXECUTED
                        continue;                                     
   16e9c:	eaffffe1 	b	16e28 <msdos_find_name_in_fat_file+0x268>       <== NOT EXECUTED
                     * match a long file name against a short file name because
                     * a long file name that generates a matching short file
                     * name is not a long file name.                  
                     */                                               
                    if (lfn_matched ||                                
                        ((name_type == MSDOS_NAME_SHORT) &&           
   16ea0:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
   16ea4:	e3730001 	cmn	r3, #1                                        
   16ea8:	1affffed 	bne	16e64 <msdos_find_name_in_fat_file+0x2a4>     
                         (lfn_start.cln == FAT_FILE_SHORT_NAME) &&    
                         (memcmp(MSDOS_DIR_NAME(entry),               
   16eac:	e1a00006 	mov	r0, r6                                        
   16eb0:	e59d1080 	ldr	r1, [sp, #128]	; 0x80                         
   16eb4:	e3a0200b 	mov	r2, #11                                       
   16eb8:	eb000cf7 	bl	1a29c <memcmp>                                 
                     * a long file name that generates a matching short file
                     * name is not a long file name.                  
                     */                                               
                    if (lfn_matched ||                                
                        ((name_type == MSDOS_NAME_SHORT) &&           
                         (lfn_start.cln == FAT_FILE_SHORT_NAME) &&    
   16ebc:	e3500000 	cmp	r0, #0                                        
   16ec0:	1affffe7 	bne	16e64 <msdos_find_name_in_fat_file+0x2a4>     
   16ec4:	eaffffad 	b	16d80 <msdos_find_name_in_fat_file+0x1c0>       
                                                                      
                        /*                                            
                         * The first entry must have the last long entry
                         * flag set.                                  
                         */                                           
                        if ((*MSDOS_DIR_ENTRY_TYPE(entry) &           
   16ec8:	e2132040 	ands	r2, r3, #64	; 0x40                           
   16ecc:	0affffd5 	beq	16e28 <msdos_find_name_in_fat_file+0x268>     
                         * entry match the number we expect for this  
                         * file name. Note we do not know the number of
                         * characters in the entry so this is check further
                         * on when the characters are checked.        
                         */                                           
                        if (lfn_entries != (*MSDOS_DIR_ENTRY_TYPE(entry) &
   16ed0:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
   16ed4:	e203303f 	and	r3, r3, #63	; 0x3f                            
   16ed8:	e153000c 	cmp	r3, ip                                        
   16edc:	0a000099 	beq	17148 <msdos_find_name_in_fat_file+0x588>     
                     * If we are not already processing a LFN see if this is
                     * the first entry of a LFN ?                     
                     */                                               
                    if (lfn_start.cln == FAT_FILE_SHORT_NAME)         
                    {                                                 
                        lfn_matched = false;                          
   16ee0:	e3a02000 	mov	r2, #0                                        
   16ee4:	eaffffcf 	b	16e28 <msdos_find_name_in_fat_file+0x268>       
                     * forget this series of long directory entries. These
                     * could be orphaned entries depending on the history
                     * of the disk.                                   
                     */                                               
                    if ((lfn_entry != (*MSDOS_DIR_ENTRY_TYPE(entry) & 
                                       MSDOS_LAST_LONG_ENTRY_MASK)) ||
   16ee8:	e5d6300d 	ldrb	r3, [r6, #13]                                
   16eec:	e59dc010 	ldr	ip, [sp, #16]                                 
   16ef0:	e153000c 	cmp	r3, ip                                        
   16ef4:	1affffe6 	bne	16e94 <msdos_find_name_in_fat_file+0x2d4>     
#endif                                                                
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
   16ef8:	e59dc00c 	ldr	ip, [sp, #12]                                 
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
   16efc:	e2866001 	add	r6, r6, #1                                    
#endif                                                                
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
   16f00:	e24cc001 	sub	ip, ip, #1                                    
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
   16f04:	e08c308c 	add	r3, ip, ip, lsl #1                            
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
   16f08:	e5d62000 	ldrb	r2, [r6]                                     
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
   16f0c:	e08c3103 	add	r3, ip, r3, lsl #2                            
#endif                                                                
                        lfn_start.cln = FAT_FILE_SHORT_NAME;          
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
   16f10:	e58dc00c 	str	ip, [sp, #12]                                 
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
   16f14:	e58d3038 	str	r3, [sp, #56]	; 0x38                          
                    p = entry + 1;                                    
   16f18:	e1a0c003 	mov	ip, r3                                        
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
   16f1c:	e3520000 	cmp	r2, #0                                        
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
   16f20:	e3a03000 	mov	r3, #0                                        
   16f24:	e58db03c 	str	fp, [sp, #60]	; 0x3c                          
   16f28:	e58da040 	str	sl, [sp, #64]	; 0x40                          
   16f2c:	e1a0b005 	mov	fp, r5                                        
   16f30:	e59da034 	ldr	sl, [sp, #52]	; 0x34                          
   16f34:	e59d5074 	ldr	r5, [sp, #116]	; 0x74                         
   16f38:	e1a01003 	mov	r1, r3                                        
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
   16f3c:	0a000011 	beq	16f88 <msdos_find_name_in_fat_file+0x3c8>     
                                ((o + i) != name_len))                
                                lfn_start.cln = FAT_FILE_SHORT_NAME;  
                            break;                                    
                        }                                             
                                                                      
                        if (((o + i) >= name_len) || (*p != name[o + i]))
   16f40:	e15c0005 	cmp	ip, r5                                        
   16f44:	aa00009d 	bge	171c0 <msdos_find_name_in_fat_file+0x600>     
   16f48:	e7da000c 	ldrb	r0, [sl, ip]                                 
   16f4c:	e1500002 	cmp	r0, r2                                        
   16f50:	e2833001 	add	r3, r3, #1                                    
   16f54:	1a000099 	bne	171c0 <msdos_find_name_in_fat_file+0x600>     
                        {                                             
                            lfn_start.cln = FAT_FILE_SHORT_NAME;      
                            break;                                    
                        }                                             
                                                                      
                        switch (i)                                    
   16f58:	e3510004 	cmp	r1, #4                                        
   16f5c:	0a00001a 	beq	16fcc <msdos_find_name_in_fat_file+0x40c>     
   16f60:	e351000a 	cmp	r1, #10                                       
   16f64:	0a000015 	beq	16fc0 <msdos_find_name_in_fat_file+0x400>     
                    p = entry + 1;                                    
                                                                      
#if MSDOS_FIND_PRINT                                                  
                    printf ("MSFS:[5] lfne:%i\n", lfn_entry);         
#endif                                                                
                    for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)     
   16f68:	e353000d 	cmp	r3, #13                                       
   16f6c:	0a00007e 	beq	1716c <msdos_find_name_in_fat_file+0x5ac>     
                                break;                                
                            case 10:                                  
                                p += 4;                               
                                break;                                
                            default:                                  
                                p += 2;                               
   16f70:	e2866002 	add	r6, r6, #2                                    
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
   16f74:	e28cc001 	add	ip, ip, #1                                    
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
   16f78:	e5d62000 	ldrb	r2, [r6]                                     
   16f7c:	e3520000 	cmp	r2, #0                                        
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
   16f80:	e1a01003 	mov	r1, r3                                        
                    {                                                 
#if MSDOS_FIND_PRINT > 1                                              
                        printf ("MSFS:[6] o:%i i:%i *p:%c(%02x) name[o + i]:%c(%02x)\n",
                                o, i, *p, *p, name[o + i], name[o + i]);
#endif                                                                
                        if (*p == '\0')                               
   16f84:	1affffed 	bne	16f40 <msdos_find_name_in_fat_file+0x380>     
                            /*                                        
                             * If this is the first entry, ie the last part of the
                             * long file name and the length does not match then
                             * the file names do not match.           
                             */                                       
                            if (((lfn_entry + 1) == lfn_entries) &&   
   16f88:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
   16f8c:	e59d0014 	ldr	r0, [sp, #20]                                 
   16f90:	e15c0000 	cmp	ip, r0                                        
   16f94:	e1a0500b 	mov	r5, fp                                        
   16f98:	e59da040 	ldr	sl, [sp, #64]	; 0x40                          
   16f9c:	e59db03c 	ldr	fp, [sp, #60]	; 0x3c                          
   16fa0:	1a000074 	bne	17178 <msdos_find_name_in_fat_file+0x5b8>     
                                ((o + i) != name_len))                
   16fa4:	e59d1038 	ldr	r1, [sp, #56]	; 0x38                          
                            /*                                        
                             * If this is the first entry, ie the last part of the
                             * long file name and the length does not match then
                             * the file names do not match.           
                             */                                       
                            if (((lfn_entry + 1) == lfn_entries) &&   
   16fa8:	e59dc074 	ldr	ip, [sp, #116]	; 0x74                         
                                ((o + i) != name_len))                
   16fac:	e0813003 	add	r3, r1, r3                                    
                            /*                                        
                             * If this is the first entry, ie the last part of the
                             * long file name and the length does not match then
                             * the file names do not match.           
                             */                                       
                            if (((lfn_entry + 1) == lfn_entries) &&   
   16fb0:	e153000c 	cmp	r3, ip                                        
                                ((o + i) != name_len))                
                                lfn_start.cln = FAT_FILE_SHORT_NAME;  
   16fb4:	13e00000 	mvnne	r0, #0                                      
   16fb8:	158d0044 	strne	r0, [sp, #68]	; 0x44                        
   16fbc:	ea00006d 	b	17178 <msdos_find_name_in_fat_file+0x5b8>       
                        {                                             
                            case 4:                                   
                                p += 5;                               
                                break;                                
                            case 10:                                  
                                p += 4;                               
   16fc0:	e2866004 	add	r6, r6, #4                                    
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
   16fc4:	e28cc001 	add	ip, ip, #1                                    
   16fc8:	eaffffea 	b	16f78 <msdos_find_name_in_fat_file+0x3b8>       
                        }                                             
                                                                      
                        switch (i)                                    
                        {                                             
                            case 4:                                   
                                p += 5;                               
   16fcc:	e2866005 	add	r6, r6, #5                                    
                        continue;                                     
                    }                                                 
                                                                      
                    lfn_entry--;                                      
                    o = lfn_entry * MSDOS_LFN_LEN_PER_ENTRY;          
                    p = entry + 1;                                    
   16fd0:	e28cc001 	add	ip, ip, #1                                    
   16fd4:	eaffffe7 	b	16f78 <msdos_find_name_in_fat_file+0x3b8>       
#endif                                                                
                /*                                                    
                 * If just looking and there is no more entries in the
                 * directory - return name-not-found                  
                 */                                                   
                if (!create_node)                                     
   16fd8:	e35c0000 	cmp	ip, #0                                        
   16fdc:	0a000082 	beq	171ec <msdos_find_name_in_fat_file+0x62c>     
                 * Lets go and write the directory entries. If we have not found
                 * any available space add the remaining number of entries to any that
                 * we may have already found that are just before this entry. If more
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
   16fe0:	e3590000 	cmp	r9, #0                                        
                {                                                     
                  empty_space_count +=                                
                    entries_per_block - (dir_entry / MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);
   16fe4:	059dc004 	ldreq	ip, [sp, #4]                                
   16fe8:	008772ac 	addeq	r7, r7, ip, lsr #5                          
                 * we may have already found that are just before this entry. If more
                 * are needed FAT_EOF is returned by the read and we extend the file.
                 */                                                   
                if (!empty_space_found)                               
                {                                                     
                  empty_space_count +=                                
   16fec:	004772a4 	subeq	r7, r7, r4, lsr #5                          
     * data to place in each long file name entry. First set the short
     * file name to the slot of the SFN entry. This will mean no clashes
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
   16ff0:	e59dc078 	ldr	ip, [sp, #120]	; 0x78                         
   16ff4:	e35c0002 	cmp	ip, #2                                        
   16ff8:	0a000110 	beq	17440 <msdos_find_name_in_fat_file+0x880>     
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
        msdos_short_name_hex(MSDOS_DIR_NAME(name_dir_entry), slot);   
    }                                                                 
                                                                      
    if (lfn_entries)                                                  
   16ffc:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
   17000:	e35c0000 	cmp	ip, #0                                        
   17004:	1a0000fa 	bne	173f4 <msdos_find_name_in_fat_file+0x834>     
     * If a long file name calculate the checksum of the short file name
     * data to place in each long file name entry. First set the short
     * file name to the slot of the SFN entry. This will mean no clashes
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
   17008:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
   1700c:	e58dc014 	str	ip, [sp, #20]                                 
     * empty_space_count is a count of empty entries in the currently 
     * read cluster so if 0 there is no space. Note, dir_offset will  
     * be at the next cluster so we can just make empty_space_offset  
     * that value.                                                    
     */                                                               
    if (empty_space_count == 0)                                       
   17010:	e3570000 	cmp	r7, #0                                        
   17014:	0a000137 	beq	174f8 <msdos_find_name_in_fat_file+0x938>     
    uint32_t         empty_space_offset = 0;                          
    uint32_t         empty_space_entry = 0;                           
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
   17018:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
   1701c:	e05a300c 	subs	r3, sl, ip                                   
   17020:	13a03001 	movne	r3, #1                                      
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   17024:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
        read_cluster = true;                                          
                                                                      
    /*                                                                
     * Handle the entry writes.                                       
     */                                                               
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
   17028:	e3e02000 	mvn	r2, #0                                        
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   1702c:	e35c0000 	cmp	ip, #0                                        
        read_cluster = true;                                          
                                                                      
    /*                                                                
     * Handle the entry writes.                                       
     */                                                               
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
   17030:	e58d2048 	str	r2, [sp, #72]	; 0x48                          
   17034:	e58d2044 	str	r2, [sp, #68]	; 0x44                          
        empty_space_offset++;                                         
        empty_space_entry = 0;                                        
        read_cluster = true;                                          
    }                                                                 
                                                                      
    return 0;                                                         
   17038:	b3a05000 	movlt	r5, #0                                      
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   1703c:	baffff70 	blt	16e04 <msdos_find_name_in_fat_file+0x244>     
   17040:	e59de004 	ldr	lr, [sp, #4]                                  
   17044:	e00c0a9e 	mul	ip, lr, sl                                    
    {                                                                 
        int length = 0;                                               
                                                                      
        if (read_cluster)                                             
   17048:	e3530000 	cmp	r3, #0                                        
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   1704c:	e58dc00c 	str	ip, [sp, #12]                                 
                                                                      
    /*                                                                
     * Handle the entry writes.                                       
     */                                                               
    lfn_start.cln = lfn_start.ofs = FAT_FILE_SHORT_NAME;              
    lfn_entry = 0;                                                    
   17050:	e3a06000 	mov	r6, #0                                        
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
    {                                                                 
        int length = 0;                                               
                                                                      
        if (read_cluster)                                             
   17054:	1a0000b6 	bne	17334 <msdos_find_name_in_fat_file+0x774>     
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
   17058:	e59dc004 	ldr	ip, [sp, #4]                                  
   1705c:	e15c0005 	cmp	ip, r5                                        
   17060:	9a00012b 	bls	17514 <msdos_find_name_in_fat_file+0x954>     
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
   17064:	e59dc020 	ldr	ip, [sp, #32]                                 
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17068:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
   1706c:	e59c40a0 	ldr	r4, [ip, #160]	; 0xa0                         
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17070:	e2833001 	add	r3, r3, #1                                    
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
            lfn_entry++;                                              
   17074:	e2867001 	add	r7, r6, #1                                    
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17078:	e1530007 	cmp	r3, r7                                        
   1707c:	e58d3008 	str	r3, [sp, #8]                                  
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
   17080:	e0844005 	add	r4, r4, r5                                    
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17084:	0a00011f 	beq	17508 <msdos_find_name_in_fat_file+0x948>     
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   17088:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
   1708c:	e1e02006 	mvn	r2, r6                                        
   17090:	e082200c 	add	r2, r2, ip                                    
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
   17094:	e20c30ff 	and	r3, ip, #255	; 0xff                           
   17098:	e2833001 	add	r3, r3, #1                                    
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   1709c:	e0821082 	add	r1, r2, r2, lsl #1                            
   170a0:	e59dc034 	ldr	ip, [sp, #52]	; 0x34                          
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
   170a4:	e0673003 	rsb	r3, r7, r3                                    
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   170a8:	e0822101 	add	r2, r2, r1, lsl #2                            
   170ac:	e1a06005 	mov	r6, r5                                        
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
   170b0:	e58da010 	str	sl, [sp, #16]                                 
   170b4:	e58d5018 	str	r5, [sp, #24]                                 
   170b8:	e59da014 	ldr	sl, [sp, #20]                                 
   170bc:	e59d5020 	ldr	r5, [sp, #32]                                 
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
                        MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
                break;                                                
   170c0:	e20380ff 	and	r8, r3, #255	; 0xff                           
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   170c4:	e08c9002 	add	r9, ip, r2                                    
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
   170c8:	e3a0b020 	mov	fp, #32                                       
             * This is a long file name and we need to write          
             * a long file name entry. See if this is the             
             * first entry written and if so remember the             
             * the location of the long file name.                    
             */                                                       
            if (lfn_start.cln == FAT_FILE_SHORT_NAME)                 
   170cc:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
   170d0:	e3730001 	cmn	r3, #1                                        
            {                                                         
              lfn_start.cln = empty_space_offset;                     
   170d4:	059d3010 	ldreq	r3, [sp, #16]                               
            }                                                         
                                                                      
            /*                                                        
             * Clear the entry before loading the data.               
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
   170d8:	e3a02020 	mov	r2, #32                                       
   170dc:	e1a00004 	mov	r0, r4                                        
   170e0:	e3a01000 	mov	r1, #0                                        
             * first entry written and if so remember the             
             * the location of the long file name.                    
             */                                                       
            if (lfn_start.cln == FAT_FILE_SHORT_NAME)                 
            {                                                         
              lfn_start.cln = empty_space_offset;                     
   170e4:	058d3044 	streq	r3, [sp, #68]	; 0x44                        
              lfn_start.ofs = dir_entry;                              
   170e8:	058d6048 	streq	r6, [sp, #72]	; 0x48                        
            }                                                         
                                                                      
            /*                                                        
             * Clear the entry before loading the data.               
             */                                                       
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
   170ec:	eb000ccd 	bl	1a428 <memset>                                 
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
   170f0:	e5c4a00d 	strb	sl, [r4, #13]                                
                                                                      
            p = entry + 1;                                            
   170f4:	e2843001 	add	r3, r4, #1                                    
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
   170f8:	e1a0c009 	mov	ip, r9                                        
   170fc:	e3a02001 	mov	r2, #1                                        
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
   17100:	e3a0e000 	mov	lr, #0                                        
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
   17104:	e5dc0000 	ldrb	r0, [ip]                                     
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   17108:	e2421001 	sub	r1, r2, #1                                    
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
   1710c:	e3500000 	cmp	r0, #0                                        
                    *p = *n;                                          
                    n++;                                              
                }                                                     
                else                                                  
                {                                                     
                    p [0] = fill;                                     
   17110:	05c3e000 	strbeq	lr, [r3]                                   
                    p [1] = fill;                                     
   17114:	05c3e001 	strbeq	lr, [r3, #1]                               
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
            {                                                         
                if (*n != 0)                                          
                {                                                     
                    *p = *n;                                          
   17118:	15c30000 	strbne	r0, [r3]                                   
                    n++;                                              
   1711c:	128cc001 	addne	ip, ip, #1                                  
                }                                                     
                else                                                  
                {                                                     
                    p [0] = fill;                                     
                    p [1] = fill;                                     
                    fill = 0xff;                                      
   17120:	03a0e0ff 	moveq	lr, #255	; 0xff                             
                }                                                     
                                                                      
                switch (i)                                            
   17124:	e3510004 	cmp	r1, #4                                        
   17128:	0a0000ea 	beq	174d8 <msdos_find_name_in_fat_file+0x918>     
   1712c:	e351000a 	cmp	r1, #10                                       
   17130:	0a0000e5 	beq	174cc <msdos_find_name_in_fat_file+0x90c>     
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
            for (i = 0; i < MSDOS_LFN_LEN_PER_ENTRY; i++)             
   17134:	e352000d 	cmp	r2, #13                                       
   17138:	0a00002d 	beq	171f4 <msdos_find_name_in_fat_file+0x634>     
                        break;                                        
                    case 10:                                          
                        p += 4;                                       
                        break;                                        
                    default:                                          
                        p += 2;                                       
   1713c:	e2833002 	add	r3, r3, #2                                    
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
   17140:	e2822001 	add	r2, r2, #1                                    
   17144:	eaffffee 	b	17104 <msdos_find_name_in_fat_file+0x544>       
                         * Get the checksum of the short entry.       
                         */                                           
                        lfn_start.cln = dir_offset;                   
                        lfn_start.ofs = dir_entry;                    
                        lfn_entry = lfn_entries;                      
                        lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
   17148:	e5d6c00d 	ldrb	ip, [r6, #13]                                
                            continue;                                 
                                                                      
                        /*                                            
                         * Get the checksum of the short entry.       
                         */                                           
                        lfn_start.cln = dir_offset;                   
   1714c:	e58db044 	str	fp, [sp, #68]	; 0x44                          
                        lfn_start.ofs = dir_entry;                    
   17150:	e58d4048 	str	r4, [sp, #72]	; 0x48                          
                        lfn_entry = lfn_entries;                      
                        lfn_checksum = *MSDOS_DIR_LFN_CHECKSUM(entry);
   17154:	e58dc010 	str	ip, [sp, #16]                                 
   17158:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
   1715c:	e5d63000 	ldrb	r3, [r6]                                     
   17160:	e58dc00c 	str	ip, [sp, #12]                                 
                     * If we are not already processing a LFN see if this is
                     * the first entry of a LFN ?                     
                     */                                               
                    if (lfn_start.cln == FAT_FILE_SHORT_NAME)         
                    {                                                 
                        lfn_matched = false;                          
   17164:	e3a02000 	mov	r2, #0                                        
   17168:	eaffff44 	b	16e80 <msdos_find_name_in_fat_file+0x2c0>       
   1716c:	e1a0500b 	mov	r5, fp                                        
   17170:	e59da040 	ldr	sl, [sp, #64]	; 0x40                          
   17174:	e59db03c 	ldr	fp, [sp, #60]	; 0x3c                          
                                p += 2;                               
                                break;                                
                        }                                             
                    }                                                 
                                                                      
                    lfn_matched = ((lfn_entry == 0) &&                
   17178:	e59dc00c 	ldr	ip, [sp, #12]                                 
   1717c:	e35c0000 	cmp	ip, #0                                        
   17180:	1affff56 	bne	16ee0 <msdos_find_name_in_fat_file+0x320>     
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   17184:	e59d2044 	ldr	r2, [sp, #68]	; 0x44                          
   17188:	e2922001 	adds	r2, r2, #1                                   
   1718c:	13a02001 	movne	r2, #1                                      
   17190:	eaffff24 	b	16e28 <msdos_find_name_in_fat_file+0x268>       
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
   17194:	e59c3024 	ldr	r3, [ip, #36]	; 0x24                          
   17198:	e3530000 	cmp	r3, #0                                        
   1719c:	1afffeac 	bne	16c54 <msdos_find_name_in_fat_file+0x94>      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
   171a0:	e59dc020 	ldr	ip, [sp, #32]                                 
   171a4:	e5dc300e 	ldrb	r3, [ip, #14]                                
      lfn_entries = 0;                                                
    else                                                              
      lfn_entries =                                                   
        ((name_len - 1) + MSDOS_LFN_LEN_PER_ENTRY) / MSDOS_LFN_LEN_PER_ENTRY;
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
   171a8:	e3130003 	tst	r3, #3                                        
   171ac:	0afffea8 	beq	16c54 <msdos_find_name_in_fat_file+0x94>      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
        bts2rd = fat_fd->fat_file_size;                               
   171b0:	e59dc02c 	ldr	ip, [sp, #44]	; 0x2c                          
   171b4:	e59cc018 	ldr	ip, [ip, #24]                                 
   171b8:	e58dc004 	str	ip, [sp, #4]                                  
   171bc:	eafffea7 	b	16c60 <msdos_find_name_in_fat_file+0xa0>        
                            break;                                    
                        }                                             
                                                                      
                        if (((o + i) >= name_len) || (*p != name[o + i]))
                        {                                             
                            lfn_start.cln = FAT_FILE_SHORT_NAME;      
   171c0:	e3e01000 	mvn	r1, #0                                        
   171c4:	e1a0500b 	mov	r5, fp                                        
   171c8:	e59da040 	ldr	sl, [sp, #64]	; 0x40                          
   171cc:	e59db03c 	ldr	fp, [sp, #60]	; 0x3c                          
   171d0:	e58d1044 	str	r1, [sp, #68]	; 0x44                          
                            break;                                    
   171d4:	eaffffe7 	b	17178 <msdos_find_name_in_fat_file+0x5b8>       
        }                                                             
                                                                      
        ret = fat_file_write(&fs_info->fat, fat_fd,                   
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
   171d8:	e1a05000 	mov	r5, r0                                        
   171dc:	eaffff08 	b	16e04 <msdos_find_name_in_fat_file+0x244>       
    }                                                                 
                                                                      
    /*                                                                
     * If we are not to create the entry return a not found error.    
     */                                                               
    if (!create_node)                                                 
   171e0:	e59dc008 	ldr	ip, [sp, #8]                                  
   171e4:	e35c0000 	cmp	ip, #0                                        
   171e8:	1affff80 	bne	16ff0 <msdos_find_name_in_fat_file+0x430>     
      return MSDOS_NAME_NOT_FOUND_ERR;                                
   171ec:	e59f5358 	ldr	r5, [pc, #856]	; 1754c <msdos_find_name_in_fat_file+0x98c>
   171f0:	eaffff03 	b	16e04 <msdos_find_name_in_fat_file+0x244>       
                        break;                                        
                }                                                     
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
            if (lfn_entry == 1)                                       
   171f4:	e3570001 	cmp	r7, #1                                        
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
   171f8:	03883040 	orreq	r3, r8, #64	; 0x40                          
                        p += 2;                                       
                        break;                                        
                }                                                     
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
   171fc:	e5c48000 	strb	r8, [r4]                                     
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
   17200:	e59dc004 	ldr	ip, [sp, #4]                                  
                }                                                     
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
   17204:	05c43000 	strbeq	r3, [r4]                                   
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
   17208:	e5d4300b 	ldrb	r3, [r4, #11]                                
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
   1720c:	e2866020 	add	r6, r6, #32                                   
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
   17210:	e383300f 	orr	r3, r3, #15                                   
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
   17214:	e15c0006 	cmp	ip, r6                                        
            }                                                         
                                                                      
            *MSDOS_DIR_ENTRY_TYPE(entry) = (lfn_entries - lfn_entry) + 1;
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
   17218:	e5c4300b 	strb	r3, [r4, #11]                                
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
   1721c:	9a0000b0 	bls	174e4 <msdos_find_name_in_fat_file+0x924>     
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17220:	e59d3008 	ldr	r3, [sp, #8]                                  
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
   17224:	e59540a0 	ldr	r4, [r5, #160]	; 0xa0                         
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
            lfn_entry++;                                              
   17228:	e2877001 	add	r7, r7, #1                                    
   1722c:	e2488001 	sub	r8, r8, #1                                    
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17230:	e1530007 	cmp	r3, r7                                        
                                                                      
        for (dir_entry = empty_space_entry;                           
             dir_entry < bts2rd;                                      
             dir_entry += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)          
        {                                                             
            char*       entry = (char*) fs_info->cl_buf + dir_entry;  
   17234:	e0844006 	add	r4, r4, r6                                    
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
   17238:	e28bb020 	add	fp, fp, #32                                   
            lfn_entry++;                                              
   1723c:	e20880ff 	and	r8, r8, #255	; 0xff                           
   17240:	e249900d 	sub	r9, r9, #13                                   
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17244:	1affffa0 	bne	170cc <msdos_find_name_in_fat_file+0x50c>     
   17248:	e59da010 	ldr	sl, [sp, #16]                                 
   1724c:	e59d5018 	ldr	r5, [sp, #24]                                 
            {                                                         
                /* get current cluster number */                      
                int rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
   17250:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
   17254:	e59d0020 	ldr	r0, [sp, #32]                                 
   17258:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   1725c:	e3a02001 	mov	r2, #1                                        
   17260:	e59d300c 	ldr	r3, [sp, #12]                                 
   17264:	e58dc000 	str	ip, [sp]                                      
   17268:	ebffe958 	bl	117d0 <fat_file_ioctl>                         
                                        empty_space_offset * bts2rd,  
                                        &dir_pos->sname.cln);         
                if (rc != RC_OK)                                      
   1726c:	e3500000 	cmp	r0, #0                                        
   17270:	1affffd8 	bne	171d8 <msdos_find_name_in_fat_file+0x618>     
                  return rc;                                          
                                                                      
                dir_pos->sname.ofs = dir_entry;                       
                                                                      
                if (lfn_start.cln != FAT_FILE_SHORT_NAME)             
   17274:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
                                        empty_space_offset * bts2rd,  
                                        &dir_pos->sname.cln);         
                if (rc != RC_OK)                                      
                  return rc;                                          
                                                                      
                dir_pos->sname.ofs = dir_entry;                       
   17278:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
                                                                      
                if (lfn_start.cln != FAT_FILE_SHORT_NAME)             
   1727c:	e3730001 	cmn	r3, #1                                        
                                        empty_space_offset * bts2rd,  
                                        &dir_pos->sname.cln);         
                if (rc != RC_OK)                                      
                  return rc;                                          
                                                                      
                dir_pos->sname.ofs = dir_entry;                       
   17280:	e58c6004 	str	r6, [ip, #4]                                  
                                                                      
                if (lfn_start.cln != FAT_FILE_SHORT_NAME)             
   17284:	0a00000a 	beq	172b4 <msdos_find_name_in_fat_file+0x6f4>     
                {                                                     
                  rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM,
   17288:	e59dc004 	ldr	ip, [sp, #4]                                  
   1728c:	e59d0020 	ldr	r0, [sp, #32]                                 
   17290:	e003039c 	mul	r3, ip, r3                                    
   17294:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   17298:	e28dc044 	add	ip, sp, #68	; 0x44                            
   1729c:	e3a02001 	mov	r2, #1                                        
   172a0:	e58dc000 	str	ip, [sp]                                      
   172a4:	ebffe949 	bl	117d0 <fat_file_ioctl>                         
                                      lfn_start.cln * bts2rd,         
                                      &lfn_start.cln);                
                  if (rc != RC_OK)                                    
   172a8:	e3500000 	cmp	r0, #0                                        
   172ac:	1affffc9 	bne	171d8 <msdos_find_name_in_fat_file+0x618>     
   172b0:	e59d3044 	ldr	r3, [sp, #68]	; 0x44                          
                    return rc;                                        
                }                                                     
                                                                      
                dir_pos->lname.cln = lfn_start.cln;                   
   172b4:	e59dc07c 	ldr	ip, [sp, #124]	; 0x7c                         
   172b8:	e58c3008 	str	r3, [ip, #8]                                  
                dir_pos->lname.ofs = lfn_start.ofs;                   
   172bc:	e59d3048 	ldr	r3, [sp, #72]	; 0x48                          
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
   172c0:	e1a00004 	mov	r0, r4                                        
                  if (rc != RC_OK)                                    
                    return rc;                                        
                }                                                     
                                                                      
                dir_pos->lname.cln = lfn_start.cln;                   
                dir_pos->lname.ofs = lfn_start.ofs;                   
   172c4:	e58c300c 	str	r3, [ip, #12]                                 
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
   172c8:	e59d1080 	ldr	r1, [sp, #128]	; 0x80                         
   172cc:	e3a02020 	mov	r2, #32                                       
   172d0:	eb000c1e 	bl	1a350 <memcpy>                                 
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
            lfn_entry++;                                              
   172d4:	e1a06007 	mov	r6, r7                                        
                                                                      
                dir_pos->lname.cln = lfn_start.cln;                   
                dir_pos->lname.ofs = lfn_start.ofs;                   
                                                                      
                /* write new node entry */                            
                memcpy (entry, (uint8_t *) name_dir_entry,            
   172d8:	e1a0300b 	mov	r3, fp                                        
            if (lfn_entry == 1)                                       
                *MSDOS_DIR_ENTRY_TYPE(entry) |= MSDOS_LAST_LONG_ENTRY;
            *MSDOS_DIR_ATTR(entry) |= MSDOS_ATTR_LFN;                 
        }                                                             
                                                                      
        ret = fat_file_write(&fs_info->fat, fat_fd,                   
   172dc:	e59de020 	ldr	lr, [sp, #32]                                 
   172e0:	e59ec0a0 	ldr	ip, [lr, #160]	; 0xa0                         
   172e4:	e1a0000e 	mov	r0, lr                                        
   172e8:	e59de00c 	ldr	lr, [sp, #12]                                 
   172ec:	e08cc005 	add	ip, ip, r5                                    
   172f0:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   172f4:	e08e2005 	add	r2, lr, r5                                    
   172f8:	e58dc000 	str	ip, [sp]                                      
   172fc:	ebffe9f4 	bl	11ad4 <fat_file_write>                         
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
   17300:	e3700001 	cmn	r0, #1                                        
   17304:	0affffb3 	beq	171d8 <msdos_find_name_in_fat_file+0x618>     
            return ret;                                               
        else if (ret != length)                                       
   17308:	e150000b 	cmp	r0, fp                                        
   1730c:	1a000033 	bne	173e0 <msdos_find_name_in_fat_file+0x820>     
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   17310:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        empty_space_offset++;                                         
   17314:	e59d0004 	ldr	r0, [sp, #4]                                  
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   17318:	e15c0006 	cmp	ip, r6                                        
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        empty_space_offset++;                                         
   1731c:	e59dc00c 	ldr	ip, [sp, #12]                                 
   17320:	e08cc000 	add	ip, ip, r0                                    
        empty_space_entry = 0;                                        
   17324:	e3a05000 	mov	r5, #0                                        
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        empty_space_offset++;                                         
   17328:	e28aa001 	add	sl, sl, #1                                    
   1732c:	e58dc00c 	str	ip, [sp, #12]                                 
#endif                                                                
                                                                      
    /*                                                                
     * The one more is the short entry.                               
     */                                                               
    while (lfn_entry < (lfn_entries + 1))                             
   17330:	bafffeb3 	blt	16e04 <msdos_find_name_in_fat_file+0x244>     
        {                                                             
          uint32_t new_length;                                        
#if MSDOS_FIND_PRINT                                                  
          printf ("MSFS:[9.1] eso:%li\n", empty_space_offset);        
#endif                                                                
          ret = fat_file_read(&fs_info->fat, fat_fd,                  
   17334:	e59d0020 	ldr	r0, [sp, #32]                                 
   17338:	e590c0a0 	ldr	ip, [r0, #160]	; 0xa0                         
   1733c:	e59d200c 	ldr	r2, [sp, #12]                                 
   17340:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   17344:	e59d3004 	ldr	r3, [sp, #4]                                  
   17348:	e58dc000 	str	ip, [sp]                                      
   1734c:	ebffe83a 	bl	1143c <fat_file_read>                          
                              (empty_space_offset * bts2rd), bts2rd,  
                              fs_info->cl_buf);                       
                                                                      
          if (ret != bts2rd)                                          
   17350:	e59dc004 	ldr	ip, [sp, #4]                                  
   17354:	e150000c 	cmp	r0, ip                                        
        {                                                             
          uint32_t new_length;                                        
#if MSDOS_FIND_PRINT                                                  
          printf ("MSFS:[9.1] eso:%li\n", empty_space_offset);        
#endif                                                                
          ret = fat_file_read(&fs_info->fat, fat_fd,                  
   17358:	e1a02000 	mov	r2, r0                                        
                              (empty_space_offset * bts2rd), bts2rd,  
                              fs_info->cl_buf);                       
                                                                      
          if (ret != bts2rd)                                          
   1735c:	0affff3d 	beq	17058 <msdos_find_name_in_fat_file+0x498>     
          {                                                           
            if (ret != FAT_EOF)                                       
   17360:	e3500000 	cmp	r0, #0                                        
   17364:	1a00001d 	bne	173e0 <msdos_find_name_in_fat_file+0x820>     
              rtems_set_errno_and_return_minus_one(EIO);              
                                                                      
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.2] extending file:%li\n", empty_space_offset);
#endif                                                                
            ret = fat_file_extend (&fs_info->fat, fat_fd, false,      
   17368:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   1736c:	e28dc04c 	add	ip, sp, #76	; 0x4c                            
   17370:	e59d0020 	ldr	r0, [sp, #32]                                 
   17374:	e59d300c 	ldr	r3, [sp, #12]                                 
   17378:	e58dc000 	str	ip, [sp]                                      
   1737c:	ebffe944 	bl	11894 <fat_file_extend>                        
                                   empty_space_offset * bts2rd, &new_length);
                                                                      
            if (ret != RC_OK)                                         
   17380:	e2501000 	subs	r1, r0, #0                                   
              rtems_set_errno_and_return_minus_one(EIO);              
                                                                      
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.2] extending file:%li\n", empty_space_offset);
#endif                                                                
            ret = fat_file_extend (&fs_info->fat, fat_fd, false,      
   17384:	11a05001 	movne	r5, r1                                      
                                   empty_space_offset * bts2rd, &new_length);
                                                                      
            if (ret != RC_OK)                                         
   17388:	1afffe9d 	bne	16e04 <msdos_find_name_in_fat_file+0x244>     
              return ret;                                             
                                                                      
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.3] extended: %d <-> %d\n", new_length, empty_space_offset * bts2rd);
#endif                                                                
            if (new_length != (empty_space_offset * bts2rd))          
   1738c:	e59d304c 	ldr	r3, [sp, #76]	; 0x4c                          
   17390:	e59dc00c 	ldr	ip, [sp, #12]                                 
   17394:	e153000c 	cmp	r3, ip                                        
   17398:	1a000010 	bne	173e0 <msdos_find_name_in_fat_file+0x820>     
              rtems_set_errno_and_return_minus_one(EIO);              
                                                                      
            memset(fs_info->cl_buf, 0, bts2rd);                       
   1739c:	e59dc020 	ldr	ip, [sp, #32]                                 
   173a0:	e59d2004 	ldr	r2, [sp, #4]                                  
   173a4:	e59c00a0 	ldr	r0, [ip, #160]	; 0xa0                         
   173a8:	eb000c1e 	bl	1a428 <memset>                                 
                                                                      
            ret = fat_file_write(&fs_info->fat, fat_fd,               
   173ac:	e59de020 	ldr	lr, [sp, #32]                                 
   173b0:	e59ec0a0 	ldr	ip, [lr, #160]	; 0xa0                         
   173b4:	e1a0000e 	mov	r0, lr                                        
   173b8:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
   173bc:	e59d200c 	ldr	r2, [sp, #12]                                 
   173c0:	e59d3004 	ldr	r3, [sp, #4]                                  
   173c4:	e58dc000 	str	ip, [sp]                                      
   173c8:	ebffe9c1 	bl	11ad4 <fat_file_write>                         
                                 empty_space_offset * bts2rd,         
                                 bts2rd, fs_info->cl_buf);            
#if MSDOS_FIND_PRINT                                                  
            printf ("MSFS:[9.4] clear write: %d\n", ret);             
#endif                                                                
            if (ret == -1)                                            
   173cc:	e3700001 	cmn	r0, #1                                        
   173d0:	0affff80 	beq	171d8 <msdos_find_name_in_fat_file+0x618>     
              return ret;                                             
            else if (ret != bts2rd)                                   
   173d4:	e59dc004 	ldr	ip, [sp, #4]                                  <== NOT EXECUTED
   173d8:	e150000c 	cmp	r0, ip                                        <== NOT EXECUTED
   173dc:	0affff1d 	beq	17058 <msdos_find_name_in_fat_file+0x498>     <== NOT EXECUTED
                             (empty_space_offset * bts2rd) + empty_space_entry,
                             length, fs_info->cl_buf + empty_space_entry);
        if (ret == -1)                                                
            return ret;                                               
        else if (ret != length)                                       
            rtems_set_errno_and_return_minus_one(EIO);                
   173e0:	eb000933 	bl	198b4 <__errno>                                <== NOT EXECUTED
   173e4:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   173e8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   173ec:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   173f0:	eafffe83 	b	16e04 <msdos_find_name_in_fat_file+0x244>       <== NOT EXECUTED
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   173f4:	e3a0c000 	mov	ip, #0                                        
   173f8:	e58dc014 	str	ip, [sp, #20]                                 
   173fc:	e59dc080 	ldr	ip, [sp, #128]	; 0x80                         
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
            lfn_checksum =                                            
   17400:	e3a01000 	mov	r1, #0                                        
 *     RC_OK on success, or error code if error occured (errno set    
 *     appropriately)                                                 
 *                                                                    
 */                                                                   
#define MSDOS_FIND_PRINT 0                                            
int msdos_find_name_in_fat_file(                                      
   17404:	e28c000b 	add	r0, ip, #11                                   
   17408:	e1a0200c 	mov	r2, ip                                        
   1740c:	e1a03001 	mov	r3, r1                                        
   17410:	ea000001 	b	1741c <msdos_find_name_in_fat_file+0x85c>       
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
            lfn_checksum =                                            
   17414:	e2111001 	ands	r1, r1, #1                                   
   17418:	13a01080 	movne	r1, #128	; 0x80                             
   1741c:	e4d2c001 	ldrb	ip, [r2], #1                                 
   17420:	e08c30a3 	add	r3, ip, r3, lsr #1                            
   17424:	e20330ff 	and	r3, r3, #255	; 0xff                           
   17428:	e0831001 	add	r1, r3, r1                                    
                                                                      
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
   1742c:	e1520000 	cmp	r2, r0                                        
            lfn_checksum =                                            
   17430:	e20130ff 	and	r3, r1, #255	; 0xff                           
                                                                      
    if (lfn_entries)                                                  
    {                                                                 
        uint8_t* p = (uint8_t*) MSDOS_DIR_NAME(name_dir_entry);       
        int      i;                                                   
        for (i = 0; i < 11; i++, p++)                                 
   17434:	1afffff6 	bne	17414 <msdos_find_name_in_fat_file+0x854>     
   17438:	e58d3014 	str	r3, [sp, #20]                                 
   1743c:	eafffef3 	b	17010 <msdos_find_name_in_fat_file+0x450>       
     * in this directory.                                             
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
   17440:	e59dc004 	ldr	ip, [sp, #4]                                  
   17444:	e0215a9c 	mla	r1, ip, sl, r5                                
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
   17448:	e59dc080 	ldr	ip, [sp, #128]	; 0x80                         
   1744c:	e5dc3000 	ldrb	r3, [ip]                                     
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
   17450:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
   17454:	e3530020 	cmp	r3, #32                                       
   17458:	1353002e 	cmpne	r3, #46	; 0x2e                              
        *c = '_';                                                     
   1745c:	059d0080 	ldreq	r0, [sp, #128]	; 0x80                       
   17460:	03a0305f 	moveq	r3, #95	; 0x5f                              
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
   17464:	e28c2001 	add	r2, ip, #1                                    
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
   17468:	05c03000 	strbeq	r3, [r0]                                   
     */                                                               
    lfn_checksum = 0;                                                 
    if (name_type == MSDOS_NAME_LONG)                                 
    {                                                                 
        int      slot = (((empty_space_offset * bts2rd) + empty_space_entry) /
                         MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE) + lfn_entries + 1;
   1746c:	e082c2a1 	add	ip, r2, r1, lsr #5                            
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
   17470:	e59d1080 	ldr	r1, [sp, #128]	; 0x80                         
   17474:	e5d13001 	ldrb	r3, [r1, #1]                                 
msdos_short_name_hex(char* sfn, int num)                              
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
   17478:	e59d2080 	ldr	r2, [sp, #128]	; 0x80                         
      if ((*c == ' ') || (*c == '.'))                                 
   1747c:	e3530020 	cmp	r3, #32                                       
   17480:	1353002e 	cmpne	r3, #46	; 0x2e                              
        *c = '_';                                                     
   17484:	03a0305f 	moveq	r3, #95	; 0x5f                              
   17488:	e59f00c0 	ldr	r0, [pc, #192]	; 17550 <msdos_find_name_in_fat_file+0x990>
   1748c:	05c13001 	strbeq	r3, [r1, #1]                               
msdos_short_name_hex(char* sfn, int num)                              
{                                                                     
    static const char* hex = "0123456789ABCDEF";                      
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
   17490:	e2821002 	add	r1, r2, #2                                    
   17494:	e3a0300c 	mov	r3, #12                                       
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
    for (i = 0; i < 4; i++, c++)                                      
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];                         
   17498:	e1a0235c 	asr	r2, ip, r3                                    
   1749c:	e202200f 	and	r2, r2, #15                                   
   174a0:	e7d02002 	ldrb	r2, [r0, r2]                                 
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
    for (i = 0; i < 4; i++, c++)                                      
   174a4:	e2433004 	sub	r3, r3, #4                                    
   174a8:	e3730004 	cmn	r3, #4                                        
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];                         
   174ac:	e4c12001 	strb	r2, [r1], #1                                 
    char* c = MSDOS_DIR_NAME(sfn);                                    
    int   i;                                                          
    for (i = 0; i < 2; i++, c++)                                      
      if ((*c == ' ') || (*c == '.'))                                 
        *c = '_';                                                     
    for (i = 0; i < 4; i++, c++)                                      
   174b0:	1afffff8 	bne	17498 <msdos_find_name_in_fat_file+0x8d8>     
      *c = hex[(num >> ((3 - i) * 4)) & 0xf];                         
    *c++ = '~';                                                       
   174b4:	e59dc080 	ldr	ip, [sp, #128]	; 0x80                         
   174b8:	e3a0307e 	mov	r3, #126	; 0x7e                               
   174bc:	e5cc3006 	strb	r3, [ip, #6]                                 
    *c++ = '1';                                                       
   174c0:	e3a03031 	mov	r3, #49	; 0x31                                
   174c4:	e5cc3007 	strb	r3, [ip, #7]                                 
   174c8:	eafffecb 	b	16ffc <msdos_find_name_in_fat_file+0x43c>       
                {                                                     
                    case 4:                                           
                        p += 5;                                       
                        break;                                        
                    case 10:                                          
                        p += 4;                                       
   174cc:	e2833004 	add	r3, r3, #4                                    
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
   174d0:	e2822001 	add	r2, r2, #1                                    
   174d4:	eaffff0a 	b	17104 <msdos_find_name_in_fat_file+0x544>       
                }                                                     
                                                                      
                switch (i)                                            
                {                                                     
                    case 4:                                           
                        p += 5;                                       
   174d8:	e2833005 	add	r3, r3, #5                                    
            memset (entry, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);     
                                                                      
            *MSDOS_DIR_LFN_CHECKSUM(entry) = lfn_checksum;            
                                                                      
            p = entry + 1;                                            
            n = name + (lfn_entries - lfn_entry) * MSDOS_LFN_LEN_PER_ENTRY;
   174dc:	e2822001 	add	r2, r2, #1                                    
   174e0:	eaffff07 	b	17104 <msdos_find_name_in_fat_file+0x544>       
   174e4:	e59da010 	ldr	sl, [sp, #16]                                 <== NOT EXECUTED
   174e8:	e59d5018 	ldr	r5, [sp, #24]                                 <== NOT EXECUTED
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
   174ec:	e1a0300b 	mov	r3, fp                                        <== NOT EXECUTED
   174f0:	e1a06007 	mov	r6, r7                                        <== NOT EXECUTED
   174f4:	eaffff78 	b	172dc <msdos_find_name_in_fat_file+0x71c>       <== NOT EXECUTED
     * empty_space_count is a count of empty entries in the currently 
     * read cluster so if 0 there is no space. Note, dir_offset will  
     * be at the next cluster so we can just make empty_space_offset  
     * that value.                                                    
     */                                                               
    if (empty_space_count == 0)                                       
   174f8:	e59da030 	ldr	sl, [sp, #48]	; 0x30                          
    {                                                                 
        read_cluster = true;                                          
   174fc:	e3a03001 	mov	r3, #1                                        
        empty_space_offset = dir_offset;                              
        empty_space_entry = 0;                                        
   17500:	e1a05007 	mov	r5, r7                                        
   17504:	eafffec6 	b	17024 <msdos_find_name_in_fat_file+0x464>       
                    length, lfn_entry);                               
#endif                                                                
            /*                                                        
             * Time to write the short file name entry.               
             */                                                       
            if (lfn_entry == (lfn_entries + 1))                       
   17508:	e1a06005 	mov	r6, r5                                        
            char*       p;                                            
            const char* n;                                            
            int         i;                                            
            char        fill = 0;                                     
                                                                      
            length += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;              
   1750c:	e3a0b020 	mov	fp, #32                                       
   17510:	eaffff4e 	b	17250 <msdos_find_name_in_fat_file+0x690>       
                                                                      
#if MSDOS_FIND_PRINT                                                  
        printf ("MSFS:[10] eso:%li\n", empty_space_offset);           
#endif                                                                
                                                                      
        for (dir_entry = empty_space_entry;                           
   17514:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   17518:	e1a0b003 	mov	fp, r3                                        <== NOT EXECUTED
   1751c:	eaffff6e 	b	172dc <msdos_find_name_in_fat_file+0x71c>       <== NOT EXECUTED
#endif                                                                
                                                                      
        if (ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)                  
            rtems_set_errno_and_return_minus_one(EIO);                
                                                                      
        assert(ret == bts2rd);                                        
   17520:	e59f002c 	ldr	r0, [pc, #44]	; 17554 <msdos_find_name_in_fat_file+0x994><== NOT EXECUTED
   17524:	e59f102c 	ldr	r1, [pc, #44]	; 17558 <msdos_find_name_in_fat_file+0x998><== NOT EXECUTED
   17528:	e59f202c 	ldr	r2, [pc, #44]	; 1755c <msdos_find_name_in_fat_file+0x99c><== NOT EXECUTED
   1752c:	e59f302c 	ldr	r3, [pc, #44]	; 17560 <msdos_find_name_in_fat_file+0x9a0><== NOT EXECUTED
   17530:	ebfff097 	bl	13794 <__assert_func>                          <== NOT EXECUTED
    uint32_t         empty_space_count = 0;                           
    bool             empty_space_found = false;                       
    uint32_t         entries_per_block;                               
    bool             read_cluster = false;                            
                                                                      
    assert(name_len > 0);                                             
   17534:	e59f0018 	ldr	r0, [pc, #24]	; 17554 <msdos_find_name_in_fat_file+0x994><== NOT EXECUTED
   17538:	e59f1024 	ldr	r1, [pc, #36]	; 17564 <msdos_find_name_in_fat_file+0x9a4><== NOT EXECUTED
   1753c:	e59f2018 	ldr	r2, [pc, #24]	; 1755c <msdos_find_name_in_fat_file+0x99c><== NOT EXECUTED
   17540:	e59f3020 	ldr	r3, [pc, #32]	; 17568 <msdos_find_name_in_fat_file+0x9a8><== NOT EXECUTED
   17544:	ebfff092 	bl	13794 <__assert_func>                          <== NOT EXECUTED
                                                                      

0001756c <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 ) {
   1756c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   17570:	e1a0a001 	mov	sl, r1                                        
    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) &&                                 
   17574:	e5911020 	ldr	r1, [r1, #32]                                 
   17578:	e3510001 	cmp	r1, #1                                        
    fat_file_fd_t                        *fat_fd,                     
    uint32_t                              cl4find,                    
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
   1757c:	e24dd004 	sub	sp, sp, #4                                    
   17580:	e1a07002 	mov	r7, r2                                        
   17584:	e1a0b003 	mov	fp, r3                                        
    int              rc = RC_OK;                                      
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
   17588:	e5908008 	ldr	r8, [r0, #8]                                  
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
   1758c:	0a000025 	beq	17628 <msdos_find_node_by_cluster_num_in_fat_file+0xbc>
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
   17590:	e1d860b6 	ldrh	r6, [r8, #6]                                 
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
   17594:	e598c0a0 	ldr	ip, [r8, #160]	; 0xa0                         
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
            rtems_set_errno_and_return_minus_one( EIO );              
                                                                      
        assert(ret == bts2rd);                                        
   17598:	e3a09000 	mov	r9, #0                                        
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
    else                                                              
        bts2rd = fs_info->fat.vol.bpc;                                
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,
   1759c:	e1a00008 	mov	r0, r8                                        
   175a0:	e1a0100a 	mov	r1, sl                                        
   175a4:	e1a02009 	mov	r2, r9                                        
   175a8:	e1a03006 	mov	r3, r6                                        
   175ac:	e58dc000 	str	ip, [sp]                                      
   175b0:	ebffe7a1 	bl	1143c <fat_file_read>                          
   175b4:	e3500000 	cmp	r0, #0                                        
   175b8:	0a000016 	beq	17618 <msdos_find_node_by_cluster_num_in_fat_file+0xac>
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
   175bc:	e350001f 	cmp	r0, #31                                       
   175c0:	da000031 	ble	1768c <msdos_find_node_by_cluster_num_in_fat_file+0x120>
            rtems_set_errno_and_return_minus_one( EIO );              
                                                                      
        assert(ret == bts2rd);                                        
   175c4:	e1500006 	cmp	r0, r6                                        
   175c8:	1a000034 	bne	176a0 <msdos_find_node_by_cluster_num_in_fat_file+0x134>
   175cc:	e598c0a0 	ldr	ip, [r8, #160]	; 0xa0                         
   175d0:	e3a04000 	mov	r4, #0                                        
   175d4:	e1a0500c 	mov	r5, ip                                        
        for (i = 0; i < bts2rd; i += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE)
        {                                                             
            char* entry = (char*) fs_info->cl_buf + i;                
                                                                      
            /* if this and all rest entries are empty - return not-found */
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
   175d8:	e7dc3004 	ldrb	r3, [ip, r4]                                 
   175dc:	e3530000 	cmp	r3, #0                                        
   175e0:	0a00000c 	beq	17618 <msdos_find_node_by_cluster_num_in_fat_file+0xac>
                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)) ==                     
   175e4:	e35300e5 	cmp	r3, #229	; 0xe5                               
   175e8:	0a000004 	beq	17600 <msdos_find_node_by_cluster_num_in_fat_file+0x94>
                MSDOS_THIS_DIR_ENTRY_EMPTY)                           
                continue;                                             
                                                                      
            /* if get a non-empty entry - compare clusters num */     
            if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)          
   175ec:	e1d521b4 	ldrh	r2, [r5, #20]                                
   175f0:	e1d531ba 	ldrh	r3, [r5, #26]                                
   175f4:	e1833802 	orr	r3, r3, r2, lsl #16                           
   175f8:	e1530007 	cmp	r3, r7                                        
   175fc:	0a000011 	beq	17648 <msdos_find_node_by_cluster_num_in_fat_file+0xdc>
        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)
   17600:	e2844020 	add	r4, r4, #32                                   
   17604:	e1540006 	cmp	r4, r6                                        
   17608:	e2855020 	add	r5, r5, #32                                   
   1760c:	3afffff1 	bcc	175d8 <msdos_find_node_by_cluster_num_in_fat_file+0x6c>
   17610:	e0899006 	add	r9, r9, r6                                    <== NOT EXECUTED
   17614:	eaffffe0 	b	1759c <msdos_find_node_by_cluster_num_in_fat_file+0x30><== NOT EXECUTED
            char* entry = (char*) fs_info->cl_buf + i;                
                                                                      
            /* if this and all rest entries are empty - return not-found */
            if ((*MSDOS_DIR_ENTRY_TYPE(entry)) ==                     
                MSDOS_THIS_DIR_ENTRY_AND_REST_EMPTY)                  
                return MSDOS_NAME_NOT_FOUND_ERR;                      
   17618:	e59f6094 	ldr	r6, [pc, #148]	; 176b4 <msdos_find_node_by_cluster_num_in_fat_file+0x148><== NOT EXECUTED
            }                                                         
        }                                                             
        j++;                                                          
    }                                                                 
    return MSDOS_NAME_NOT_FOUND_ERR;                                  
}                                                                     
   1761c:	e1a00006 	mov	r0, r6                                        
   17620:	e28dd004 	add	sp, sp, #4                                    
   17624:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    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) &&                                 
   17628:	e59a3024 	ldr	r3, [sl, #36]	; 0x24                          <== NOT EXECUTED
   1762c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   17630:	1affffd6 	bne	17590 <msdos_find_node_by_cluster_num_in_fat_file+0x24><== NOT EXECUTED
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
   17634:	e5d8300e 	ldrb	r3, [r8, #14]                                <== NOT EXECUTED
    ssize_t          ret = 0;                                         
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         bts2rd = 0;                                      
    uint32_t         i = 0, j = 0;                                    
                                                                      
    if (FAT_FD_OF_ROOT_DIR(fat_fd) &&                                 
   17638:	e3130003 	tst	r3, #3                                        <== NOT EXECUTED
   1763c:	0affffd3 	beq	17590 <msdos_find_node_by_cluster_num_in_fat_file+0x24><== NOT EXECUTED
       (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))             
        bts2rd = fat_fd->fat_file_size;                               
   17640:	e59a6018 	ldr	r6, [sl, #24]                                 <== NOT EXECUTED
   17644:	eaffffd2 	b	17594 <msdos_find_node_by_cluster_num_in_fat_file+0x28><== NOT EXECUTED
                                                                      
            /* if get a non-empty entry - compare clusters num */     
            if (MSDOS_EXTRACT_CLUSTER_NUM(entry) == cl4find)          
            {                                                         
                /* on success fill aux structure and copy all 32 bytes */
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,
   17648:	e1a00008 	mov	r0, r8                                        
   1764c:	e1a0100a 	mov	r1, sl                                        
   17650:	e3a02001 	mov	r2, #1                                        
   17654:	e1a03009 	mov	r3, r9                                        
   17658:	e58db000 	str	fp, [sp]                                      
   1765c:	ebffe85b 	bl	117d0 <fat_file_ioctl>                         
                                    &dir_pos->sname.cln);             
                if (rc != RC_OK)                                      
   17660:	e2506000 	subs	r6, r0, #0                                   
   17664:	1affffec 	bne	1761c <msdos_find_node_by_cluster_num_in_fat_file+0xb0>
                    return rc;                                        
                                                                      
                dir_pos->sname.ofs = i;                               
                dir_pos->lname.cln = FAT_FILE_SHORT_NAME;             
   17668:	e3e03000 	mvn	r3, #0                                        
                rc = fat_file_ioctl(&fs_info->fat, fat_fd, F_CLU_NUM, j * bts2rd,
                                    &dir_pos->sname.cln);             
                if (rc != RC_OK)                                      
                    return rc;                                        
                                                                      
                dir_pos->sname.ofs = i;                               
   1766c:	e58b4004 	str	r4, [fp, #4]                                  
                dir_pos->lname.cln = FAT_FILE_SHORT_NAME;             
   17670:	e58b3008 	str	r3, [fp, #8]                                  
                dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;             
   17674:	e58b300c 	str	r3, [fp, #12]                                 
                                                                      
                memcpy(dir_entry, entry,                              
   17678:	e59d0028 	ldr	r0, [sp, #40]	; 0x28                          
   1767c:	e1a01005 	mov	r1, r5                                        
   17680:	e3a02020 	mov	r2, #32                                       
   17684:	eb000b31 	bl	1a350 <memcpy>                                 
                       MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);            
                return RC_OK;                                         
   17688:	eaffffe3 	b	1761c <msdos_find_node_by_cluster_num_in_fat_file+0xb0>
                                                                      
    while ((ret = fat_file_read(&fs_info->fat, fat_fd, j * bts2rd, bts2rd,
                                  fs_info->cl_buf)) != FAT_EOF)       
    {                                                                 
        if ( ret < MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE )                
            rtems_set_errno_and_return_minus_one( EIO );              
   1768c:	eb000888 	bl	198b4 <__errno>                                <== NOT EXECUTED
   17690:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   17694:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   17698:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
   1769c:	eaffffde 	b	1761c <msdos_find_node_by_cluster_num_in_fat_file+0xb0><== NOT EXECUTED
                                                                      
        assert(ret == bts2rd);                                        
   176a0:	e59f0010 	ldr	r0, [pc, #16]	; 176b8 <msdos_find_node_by_cluster_num_in_fat_file+0x14c><== NOT EXECUTED
   176a4:	e59f1010 	ldr	r1, [pc, #16]	; 176bc <msdos_find_node_by_cluster_num_in_fat_file+0x150><== NOT EXECUTED
   176a8:	e59f2010 	ldr	r2, [pc, #16]	; 176c0 <msdos_find_node_by_cluster_num_in_fat_file+0x154><== NOT EXECUTED
   176ac:	e59f3010 	ldr	r3, [pc, #16]	; 176c4 <msdos_find_node_by_cluster_num_in_fat_file+0x158><== NOT EXECUTED
   176b0:	ebfff037 	bl	13794 <__assert_func>                          <== NOT EXECUTED
                                                                      

0000c744 <msdos_format>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
    c744:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    c748:	e1a04001 	mov	r4, r1                                        
    c74c:	e24ddfb7 	sub	sp, sp, #732	; 0x2dc                          
    c750:	e1a07000 	mov	r7, r0                                        
  msdos_format_param_t fmt_params;                                    
                                                                      
  /*                                                                  
   * open device for writing                                          
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
    c754:	e3a01002 	mov	r1, #2                                        
    c758:	e59f2f80 	ldr	r2, [pc, #3968]	; d6e0 <msdos_format+0xf9c>   
    c75c:	e1a00004 	mov	r0, r4                                        
    c760:	ebffff48 	bl	c488 <msdos_format_printf>                     
  fd = open(devname, O_RDWR);                                         
    c764:	e1a00007 	mov	r0, r7                                        
    c768:	e3a01002 	mov	r1, #2                                        
    c76c:	ebffe257 	bl	50d0 <open>                                    
  if (fd == -1) {                                                     
    c770:	e3700001 	cmn	r0, #1                                        
                                                                      
  /*                                                                  
   * open device for writing                                          
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "open device\n");
  fd = open(devname, O_RDWR);                                         
    c774:	e1a05000 	mov	r5, r0                                        
  if (fd == -1) {                                                     
    c778:	0a00018c 	beq	cdb0 <msdos_format+0x66c>                     
  }                                                                   
                                                                      
  /*                                                                  
   * sanity check on device                                           
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
    c77c:	e59f2f60 	ldr	r2, [pc, #3936]	; d6e4 <msdos_format+0xfa0>   
    c780:	e1a03007 	mov	r3, r7                                        
    c784:	e3a01002 	mov	r1, #2                                        
    c788:	e1a00004 	mov	r0, r4                                        
    c78c:	ebffff3d 	bl	c488 <msdos_format_printf>                     
                       "stat check: %s\n", devname);                  
  if (ret_val == 0) {                                                 
    ret_val = fstat(fd, &stat_buf);                                   
    c790:	e28d1fa2 	add	r1, sp, #648	; 0x288                          
    c794:	e1a00005 	mov	r0, r5                                        
    c798:	ebffdf18 	bl	4400 <fstat>                                   
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
    c79c:	e3a01001 	mov	r1, #1                                        
   * sanity check on device                                           
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "stat check: %s\n", devname);                  
  if (ret_val == 0) {                                                 
    ret_val = fstat(fd, &stat_buf);                                   
    c7a0:	e1a06000 	mov	r6, r0                                        
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
    c7a4:	e59f2f3c 	ldr	r2, [pc, #3900]	; d6e8 <msdos_format+0xfa4>   
    c7a8:	e1a00004 	mov	r0, r4                                        
    c7ac:	e1a03007 	mov	r3, r7                                        
    c7b0:	ebffff34 	bl	c488 <msdos_format_printf>                     
                       "formating: %s\n", devname);                   
  /* rtems feature: no block devices, all are character devices */    
  if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {               
    c7b4:	e3560000 	cmp	r6, #0                                        
    c7b8:	1a000007 	bne	c7dc <msdos_format+0x98>                      
    c7bc:	e59d3294 	ldr	r3, [sp, #660]	; 0x294                        
    c7c0:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
    c7c4:	e3530a06 	cmp	r3, #24576	; 0x6000                           
    c7c8:	0a00000e 	beq	c808 <msdos_format+0xc4>                      
    errno = ENOTTY;                                                   
    c7cc:	eb003438 	bl	198b4 <__errno>                                <== NOT EXECUTED
    c7d0:	e3a03019 	mov	r3, #25                                       <== NOT EXECUTED
    c7d4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    ret_val = -1;                                                     
    c7d8:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
                       "formating: %s\n", devname);                   
  /* rtems feature: no block devices, all are character devices */    
  if ((ret_val == 0) && (!S_ISBLK(stat_buf.st_mode))) {               
    errno = ENOTTY;                                                   
    c7dc:	e2940000 	adds	r0, r4, #0                                   <== NOT EXECUTED
    c7e0:	13a00001 	movne	r0, #1                                      <== NOT EXECUTED
    c7e4:	e58d0020 	str	r0, [sp, #32]                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * create master boot record                                        
   */                                                                 
  if (ret_val == 0) {                                                 
    c7e8:	e3560000 	cmp	r6, #0                                        
    c7ec:	0a00008c 	beq	ca24 <msdos_format+0x2e0>                     
  /*                                                                  
   * cleanup:                                                         
   * sync and unlock disk                                             
   * free any data structures (not needed now)                        
   */                                                                 
  if (fd != -1) {                                                     
    c7f0:	e3750001 	cmn	r5, #1                                        
    close(fd);                                                        
    c7f4:	11a00005 	movne	r0, r5                                      
    c7f8:	1bffde2e 	blne	40b8 <close>                                 
  }                                                                   
                                                                      
  return ret_val;                                                     
}                                                                     
    c7fc:	e1a00006 	mov	r0, r6                                        
    c800:	e28ddfb7 	add	sp, sp, #732	; 0x2dc                          
    c804:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  uint64_t total_size = 0;                                            
  uint32_t data_clusters_cnt;                                         
  uint8_t  iteration_cnt = 0;                                         
  uint8_t  fat_type = UINT8_MAX;                                      
                                                                      
  memset(fmt_params,0,sizeof(*fmt_params));                           
    c808:	e1a01006 	mov	r1, r6                                        
    c80c:	e3a02054 	mov	r2, #84	; 0x54                                
    c810:	e28d0f8d 	add	r0, sp, #564	; 0x234                          
    c814:	eb003703 	bl	1a428 <memset>                                 
static inline int rtems_disk_fd_get_media_block_size(                 
  int fd,                                                             
  uint32_t *media_block_size                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETMEDIABLKSIZE, media_block_size);    
    c818:	e1a00005 	mov	r0, r5                                        
    c81c:	e59f1ec8 	ldr	r1, [pc, #3784]	; d6ec <msdos_format+0xfa8>   
    c820:	e28d2f8d 	add	r2, sp, #564	; 0x234                          
    c824:	eb001caa 	bl	13ad4 <ioctl>                                  
   * At least one thing we don't have to magically guess...           
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = rtems_disk_fd_get_media_block_size(fd, &fmt_params->bytes_per_sector);
  }                                                                   
  if (ret_val == 0) {                                                 
    c828:	e2506000 	subs	r6, r0, #0                                   
    c82c:	0a00016b 	beq	cde0 <msdos_format+0x69c>                     
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
      fmt_params->fat_num = rqdata->fat_num;                          
    }                                                                 
    else {                                                            
      errno = EINVAL;                                                 
    c830:	e2941000 	adds	r1, r4, #0                                   
    c834:	13a01001 	movne	r1, #1                                      
    c838:	e58d1020 	str	r1, [sp, #32]                                 
    c83c:	e59d9238 	ldr	r9, [sp, #568]	; 0x238                        
      }                                                               
                                                                      
      ++iteration_cnt;                                                
    }                                                                 
  }                                                                   
  if ( fmt_params->totl_sector_cnt == 0 )                             
    c840:	e3590000 	cmp	r9, #0                                        
    c844:	0a000251 	beq	d190 <msdos_format+0xa4c>                     
  {                                                                   
    errno = EINVAL;                                                   
    ret_val = -1;                                                     
  }                                                                   
                                                                      
  if (0 == ret_val)                                                   
    c848:	e3560000 	cmp	r6, #0                                        
    c84c:	1a000253 	bne	d1a0 <msdos_format+0xa5c>                     
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    c850:	e5dd3266 	ldrb	r3, [sp, #614]	; 0x266                       
    c854:	e3530004 	cmp	r3, #4                                        
    c858:	0a000351 	beq	d5a4 <msdos_format+0xe60>                     
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
    c85c:	e5dd3284 	ldrb	r3, [sp, #644]	; 0x284                       
                                                                      
  if (0 == ret_val)                                                   
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
    c860:	e59d1250 	ldr	r1, [sp, #592]	; 0x250                        
    c864:	e59d2240 	ldr	r2, [sp, #576]	; 0x240                        
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    c868:	e3530000 	cmp	r3, #0                                        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    c86c:	00811002 	addeq	r1, r1, r2                                  
    c870:	02410001 	subeq	r0, r1, #1                                  
    c874:	02621000 	rsbeq	r1, r2, #0                                  
    c878:	00001001 	andeq	r1, r0, r1                                  
    if (FAT_FAT32 != fmt_params->fattype)                             
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
    c87c:	e59d0234 	ldr	r0, [sp, #564]	; 0x234                        
    c880:	e1a002a0 	lsr	r0, r0, #5                                    
    c884:	e0010190 	mul	r1, r0, r1                                    
                                                                      
  if (0 == ret_val)                                                   
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    {                                                                 
      fmt_params->files_per_root_dir = loc_align_object (fmt_params->root_dir_sectors,
    c888:	e58d124c 	str	r1, [sp, #588]	; 0x24c                        
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
    }                                                                 
                                                                      
    fmt_params->rsvd_sector_cnt = loc_align_object (fmt_params->rsvd_sector_cnt,
    c88c:	e59d723c 	ldr	r7, [sp, #572]	; 0x23c                        
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    c890:	e3530000 	cmp	r3, #0                                        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    c894:	02477001 	subeq	r7, r7, #1                                  
    c898:	00877002 	addeq	r7, r7, r2                                  
    c89c:	02622000 	rsbeq	r2, r2, #0                                  
    c8a0:	00077002 	andeq	r7, r7, r2                                  
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
    c8a4:	e3540000 	cmp	r4, #0                                        
                                                         fmt_params->sectors_per_cluster,
                                                         fmt_params->skip_alignment)
                                       * (fmt_params->bytes_per_sector / FAT_DIRENTRY_SIZE);
    }                                                                 
                                                                      
    fmt_params->rsvd_sector_cnt = loc_align_object (fmt_params->rsvd_sector_cnt,
    c8a8:	e58d723c 	str	r7, [sp, #572]	; 0x23c                        
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
    c8ac:	0a000281 	beq	d2b8 <msdos_format+0xb74>                     
	(rqdata->media != 0)) {                                              
    c8b0:	e5d48014 	ldrb	r8, [r4, #20]                                
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
    c8b4:	e3580000 	cmp	r8, #0                                        
    c8b8:	0a00027e 	beq	d2b8 <msdos_format+0xb74>                     
	(rqdata->media != 0)) {                                              
      const char valid_media_codes[] =                                
    c8bc:	e3a02009 	mov	r2, #9                                        
    c8c0:	e59f1e28 	ldr	r1, [pc, #3624]	; d6f0 <msdos_format+0xfac>   
    c8c4:	e28d0e2d 	add	r0, sp, #720	; 0x2d0                          
    c8c8:	eb0036a0 	bl	1a350 <memcpy>                                 
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
    c8cc:	e28d0e2d 	add	r0, sp, #720	; 0x2d0                          
    c8d0:	e1a01008 	mov	r1, r8                                        
    c8d4:	e3a02009 	mov	r2, #9                                        
    c8d8:	eb00362f 	bl	1a19c <memchr>                                 
    c8dc:	e250a000 	subs	sl, r0, #0                                   
    c8e0:	0a000377 	beq	d6c4 <msdos_format+0xf80>                     
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
	errno = EINVAL;                                                      
      }                                                               
      else {                                                          
	fmt_params->media_code = rqdata->media;                              
    c8e4:	e59d3020 	ldr	r3, [sp, #32]                                 <== NOT EXECUTED
    c8e8:	e5cd8265 	strb	r8, [sp, #613]	; 0x265                       <== NOT EXECUTED
    c8ec:	e2038001 	and	r8, r3, #1                                    <== NOT EXECUTED
  }                                                                   
  /*                                                                  
   * determine location and size of root directory                    
   * for formatting                                                   
   */                                                                 
  if (fmt_params->root_dir_sectors > 0) {                             
    c8f0:	e59d3250 	ldr	r3, [sp, #592]	; 0x250                        
    c8f4:	e3530000 	cmp	r3, #0                                        
    c8f8:	0a00022d 	beq	d1b4 <msdos_format+0xa70>                     
    fmt_params->root_dir_start_sec =                                  
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
    c8fc:	e5dd2264 	ldrb	r2, [sp, #612]	; 0x264                       
    c900:	e59d1244 	ldr	r1, [sp, #580]	; 0x244                        
    c904:	e0277291 	mla	r7, r1, r2, r7                                
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->root_dir_sectors;  
    c908:	e58d3258 	str	r3, [sp, #600]	; 0x258                        
  /*                                                                  
   * determine location and size of root directory                    
   * for formatting                                                   
   */                                                                 
  if (fmt_params->root_dir_sectors > 0) {                             
    fmt_params->root_dir_start_sec =                                  
    c90c:	e58d7254 	str	r7, [sp, #596]	; 0x254                        
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
  }                                                                   
  /*                                                                  
   * determine usable OEMName                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    c910:	e3560000 	cmp	r6, #0                                        
    c914:	1a000033 	bne	c9e8 <msdos_format+0x2a4>                     
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
    c918:	e3540000 	cmp	r4, #0                                        
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    c91c:	059f0dd0 	ldreq	r0, [pc, #3536]	; d6f4 <msdos_format+0xfb0> 
    if ((rqdata != NULL) &&                                           
    c920:	0a000003 	beq	c934 <msdos_format+0x1f0>                     
	(rqdata->OEMName != NULL)) {                                         
    c924:	e5940000 	ldr	r0, [r4]                                      
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    c928:	e59f3dc4 	ldr	r3, [pc, #3524]	; d6f4 <msdos_format+0xfb0>   
    c92c:	e3500000 	cmp	r0, #0                                        
    c930:	01a00003 	moveq	r0, r3                                      
    if ((rqdata != NULL) &&                                           
    c934:	e59f3dbc 	ldr	r3, [pc, #3516]	; d6f8 <msdos_format+0xfb4>   
  /*                                                                  
   * determine usable OEMName                                         
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
    c938:	e28d2f99 	add	r2, sp, #612	; 0x264                          
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
    c93c:	e593e000 	ldr	lr, [r3]                                      
  /*                                                                  
   * determine usable OEMName                                         
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->OEMName;                          
    c940:	e2822003 	add	r2, r2, #3                                    
      int          cnt;                                               
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    c944:	e3a03008 	mov	r3, #8                                        
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
    c948:	e3a0a020 	mov	sl, #32                                       
      }                                                               
      *to = '\0';                                                     
    c94c:	e3a07000 	mov	r7, #0                                        
      from = rqdata->OEMName;                                         
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->OEMName)-1);                              
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
    c950:	e5d01000 	ldrb	r1, [r0]                                     
    c954:	e08ec001 	add	ip, lr, r1                                    
    c958:	e5dcc001 	ldrb	ip, [ip, #1]                                 
    c95c:	e31c0097 	tst	ip, #151	; 0x97                               
	*to++ = *from++;                                                     
    c960:	14c21001 	strbne	r1, [r2], #1                               
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
    c964:	04c2a001 	strbeq	sl, [r2], #1                               
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->OEMName)-1);                              
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
	*to++ = *from++;                                                     
    c968:	12800001 	addne	r0, r0, #1                                  
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
	(rqdata->OEMName != NULL)) {                                         
      from = rqdata->OEMName;                                         
    }                                                                 
    for (cnt = 0;                                                     
    c96c:	e2533001 	subs	r3, r3, #1                                   
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
      }                                                               
      *to = '\0';                                                     
    c970:	e5c27000 	strb	r7, [r2]                                     
      from = "RTEMS"; /* default: make "from" point to OS Name */     
    if ((rqdata != NULL) &&                                           
	(rqdata->OEMName != NULL)) {                                         
      from = rqdata->OEMName;                                         
    }                                                                 
    for (cnt = 0;                                                     
    c974:	1afffff5 	bne	c950 <msdos_format+0x20c>                     
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    if ((rqdata != NULL) &&                                           
    c978:	e3540000 	cmp	r4, #0                                        
    c97c:	0a00030b 	beq	d5b0 <msdos_format+0xe6c>                     
	(rqdata->VolLabel != NULL)) {                                        
    c980:	e5940004 	ldr	r0, [r4, #4]                                  
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    if ((rqdata != NULL) &&                                           
    c984:	e3500000 	cmp	r0, #0                                        
	(rqdata->VolLabel != NULL)) {                                        
      from = rqdata->VolLabel;                                        
      fmt_params->VolLabel_present = true;                            
    c988:	13a03001 	movne	r3, #1                                      
    c98c:	15cd327c 	strbne	r3, [sp, #636]	; 0x27c                     
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    if ((rqdata != NULL) &&                                           
    c990:	0a000306 	beq	d5b0 <msdos_format+0xe6c>                     
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    c994:	e3a0200b 	mov	r2, #11                                       
  /*                                                                  
   * determine usable Volume Label                                    
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
    c998:	e28d3e27 	add	r3, sp, #624	; 0x270                          
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
    c99c:	e3a0a020 	mov	sl, #32                                       
      }                                                               
      *to = '\0';                                                     
    c9a0:	e3a07000 	mov	r7, #0                                        
      fmt_params->VolLabel_present = true;                            
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->VolLabel)-1);                             
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
    c9a4:	e5d01000 	ldrb	r1, [r0]                                     
    c9a8:	e08ec001 	add	ip, lr, r1                                    
    c9ac:	e5dcc001 	ldrb	ip, [ip, #1]                                 
    c9b0:	e31c0097 	tst	ip, #151	; 0x97                               
	*to++ = *from++;                                                     
    c9b4:	14c31001 	strbne	r1, [r3], #1                               
	/*                                                                   
	 * non-printable character in given name, so keep stuck              
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
    c9b8:	04c3a001 	strbeq	sl, [r3], #1                               
    }                                                                 
    for (cnt = 0;                                                     
	 cnt < (sizeof(fmt_params->VolLabel)-1);                             
	 cnt++) {                                                            
      if (isprint((unsigned char)*from)) {                            
	*to++ = *from++;                                                     
    c9bc:	12800001 	addne	r0, r0, #1                                  
    if ((rqdata != NULL) &&                                           
	(rqdata->VolLabel != NULL)) {                                        
      from = rqdata->VolLabel;                                        
      fmt_params->VolLabel_present = true;                            
    }                                                                 
    for (cnt = 0;                                                     
    c9c0:	e2522001 	subs	r2, r2, #1                                   
	 * at that character and replace all following characters            
	 * with a ' '                                                        
	 */                                                                  
	*to++=' ';                                                           
      }                                                               
      *to = '\0';                                                     
    c9c4:	e5c37000 	strb	r7, [r3]                                     
    if ((rqdata != NULL) &&                                           
	(rqdata->VolLabel != NULL)) {                                        
      from = rqdata->VolLabel;                                        
      fmt_params->VolLabel_present = true;                            
    }                                                                 
    for (cnt = 0;                                                     
    c9c8:	1afffff5 	bne	c9a4 <msdos_format+0x260>                     
{                                                                     
  int ret_val = 0;                                                    
  int rc;                                                             
  struct timeval time_value;                                          
                                                                      
  rc = rtems_clock_get_tod_timeval(&time_value);                      
    c9cc:	e28d0e2d 	add	r0, sp, #720	; 0x2d0                          
    c9d0:	eb001e71 	bl	1439c <rtems_clock_get_tod_timeval>            
  if (rc == RTEMS_SUCCESSFUL) {                                       
    c9d4:	e3500000 	cmp	r0, #0                                        
    c9d8:	1a0002e2 	bne	d568 <msdos_format+0xe24>                     
    *volid_ptr = time_value.tv_sec + time_value.tv_sec;               
    c9dc:	e59d32d0 	ldr	r3, [sp, #720]	; 0x2d0                        <== NOT EXECUTED
    c9e0:	e1a03083 	lsl	r3, r3, #1                                    <== NOT EXECUTED
    c9e4:	e58d3280 	str	r3, [sp, #640]	; 0x280                        <== 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) &&                                               
    c9e8:	e3580000 	cmp	r8, #0                                        
    c9ec:	0affff7d 	beq	c7e8 <msdos_format+0xa4>                      
      (rqdata != NULL) &&                                             
    c9f0:	e5d42015 	ldrb	r2, [r4, #21]                                
    c9f4:	e3520000 	cmp	r2, #0                                        
    c9f8:	1a000009 	bne	ca24 <msdos_format+0x2e0>                     
      !(rqdata->quick_format)) {                                      
    ret_val = msdos_format_fill_sectors                               
    c9fc:	e59dc234 	ldr	ip, [sp, #564]	; 0x234                        
    ca00:	e1a00004 	mov	r0, r4                                        
    ca04:	e58dc000 	str	ip, [sp]                                      
    ca08:	e1a01005 	mov	r1, r5                                        
    ca0c:	e3a0c0e5 	mov	ip, #229	; 0xe5                               
    ca10:	e59d3238 	ldr	r3, [sp, #568]	; 0x238                        
    ca14:	e58dc004 	str	ip, [sp, #4]                                  
    ca18:	ebfffec7 	bl	c53c <msdos_format_fill_sectors>               
    ca1c:	e1a06000 	mov	r6, r0                                        
    ca20:	eaffff70 	b	c7e8 <msdos_format+0xa4>                        
   */                                                                 
  if (ret_val == 0) {                                                 
    /*                                                                
     * Read the current MBR to obtain the partition table.            
     */                                                               
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    ca24:	e1a00004 	mov	r0, r4                                        
    ca28:	e3a01002 	mov	r1, #2                                        
    ca2c:	e59f2cc8 	ldr	r2, [pc, #3272]	; d6fc <msdos_format+0xfb8>   
    ca30:	ebfffe94 	bl	c488 <msdos_format_printf>                     
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ca34:	e3a02000 	mov	r2, #0                                        
    ca38:	e1a00005 	mov	r0, r5                                        
    ca3c:	e3a01000 	mov	r1, #0                                        
    ca40:	e3a03000 	mov	r3, #0                                        
    /*                                                                
     * Read the current MBR to obtain the partition table.            
     */                                                               
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
                         "read MRB sector\n");                        
    ret_val = msdos_format_read_sec(fd,                               
    ca44:	e59d6234 	ldr	r6, [sp, #564]	; 0x234                        
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ca48:	eb001c41 	bl	13b54 <lseek>                                  
    ca4c:	e3500000 	cmp	r0, #0                                        
    ca50:	e2d12000 	sbcs	r2, r1, #0                                   
    ca54:	ba0000d3 	blt	cda8 <msdos_format+0x664>                     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
    ca58:	e1a00005 	mov	r0, r5                                        
    ca5c:	e28d1034 	add	r1, sp, #52	; 0x34                            
    ca60:	e1a02006 	mov	r2, r6                                        
    ca64:	eb001d00 	bl	13e6c <read>                                   
    ca68:	e3500000 	cmp	r0, #0                                        
    ca6c:	ba0000cd 	blt	cda8 <msdos_format+0x664>                     
    ret_val = msdos_format_read_sec(fd,                               
                                    0,                                
                                    fmt_params.bytes_per_sector,      
                                    tmp_sec);                         
    if (ret_val == 0) {                                               
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
    ca70:	e1a00004 	mov	r0, r4                                        
    ca74:	e3a01002 	mov	r1, #2                                        
    ca78:	e59f2c80 	ldr	r2, [pc, #3200]	; d700 <msdos_format+0xfbc>   
    ca7c:	ebfffe81 	bl	c488 <msdos_format_printf>                     
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
    ca80:	e59d3238 	ldr	r3, [sp, #568]	; 0x238                        
    ca84:	e3530801 	cmp	r3, #65536	; 0x10000                          
    ca88:	3a000233 	bcc	d35c <msdos_format+0xc18>                     
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
    ca8c:	e1a01803 	lsl	r1, r3, #16                                   
    ca90:	e1a02823 	lsr	r2, r3, #16                                   
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
    ca94:	e3a07000 	mov	r7, #0                                        
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
    ca98:	e20300ff 	and	r0, r3, #255	; 0xff                           
    ca9c:	e1a01c21 	lsr	r1, r1, #24                                   
    caa0:	e20220ff 	and	r2, r2, #255	; 0xff                           
    caa4:	e58d0010 	str	r0, [sp, #16]                                 
    caa8:	e58d1014 	str	r1, [sp, #20]                                 
    caac:	e58d2018 	str	r2, [sp, #24]                                 
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
    cab0:	e58d700c 	str	r7, [sp, #12]                                 
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > read(fd,buffer,sector_size)) {                            
    cab4:	e1a06c23 	lsr	r6, r3, #24                                   
   * finally we are there: let's fill in the values into the MBR      
   * but first clear the MRB leaving the partition table.             
   */                                                                 
#define RTEMS_IDE_PARTITION_TABLE_OFFSET                  0x1be       
#define RTEMS_IDE_PARTITION_TABLE_SIZE                    (4 * 16)    
  memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);                     
    cab8:	e3a01000 	mov	r1, #0                                        
    cabc:	e59f2c40 	ldr	r2, [pc, #3136]	; d704 <msdos_format+0xfc0>   
    cac0:	e28d0034 	add	r0, sp, #52	; 0x34                            
    cac4:	eb003657 	bl	1a428 <memset>                                 
  memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,
    cac8:	e3a0a000 	mov	sl, #0                                        
    cacc:	e28d3c02 	add	r3, sp, #512	; 0x200                          
   * with 0xEB,....                                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
    cad0:	e28d1f99 	add	r1, sp, #612	; 0x264                          
    cad4:	e2811003 	add	r1, r1, #3                                    
    cad8:	e3a02008 	mov	r2, #8                                        
   * but first clear the MRB leaving the partition table.             
   */                                                                 
#define RTEMS_IDE_PARTITION_TABLE_OFFSET                  0x1be       
#define RTEMS_IDE_PARTITION_TABLE_SIZE                    (4 * 16)    
  memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);                     
  memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,
    cadc:	e1c3a3b2 	strh	sl, [r3, #50]	; 0x32                         
   * with 0xEB,....                                                   
   */                                                                 
  /*                                                                  
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
    cae0:	e28d0037 	add	r0, sp, #55	; 0x37                            
    cae4:	eb003619 	bl	1a350 <memcpy>                                 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
    cae8:	e59d324c 	ldr	r3, [sp, #588]	; 0x24c                        
    caec:	e1a0c423 	lsr	ip, r3, #8                                    
    caf0:	e5cd3045 	strb	r3, [sp, #69]	; 0x45                         
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
    caf4:	e59d300c 	ldr	r3, [sp, #12]                                 
    caf8:	e5cd3047 	strb	r3, [sp, #71]	; 0x47                         
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
    cafc:	e3e03000 	mvn	r3, #0                                        
    cb00:	e5cd304c 	strb	r3, [sp, #76]	; 0x4c                         
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
    cb04:	e3a03006 	mov	r3, #6                                        
    cb08:	e5cd304e 	strb	r3, [sp, #78]	; 0x4e                         
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
    cb0c:	e59d3010 	ldr	r3, [sp, #16]                                 
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
    cb10:	e59d1234 	ldr	r1, [sp, #564]	; 0x234                        
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
    cb14:	e5cd3054 	strb	r3, [sp, #84]	; 0x54                         
    cb18:	e59d3014 	ldr	r3, [sp, #20]                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
    cb1c:	e59d223c 	ldr	r2, [sp, #572]	; 0x23c                        
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
    cb20:	e5dd0265 	ldrb	r0, [sp, #613]	; 0x265                       
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
    cb24:	e1a08421 	lsr	r8, r1, #8                                    
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    cb28:	e5ddb266 	ldrb	fp, [sp, #614]	; 0x266                       
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
    cb2c:	e5cd103f 	strb	r1, [sp, #63]	; 0x3f                         
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
    cb30:	e59d1240 	ldr	r1, [sp, #576]	; 0x240                        
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
    cb34:	e5cd3055 	strb	r3, [sp, #85]	; 0x55                         
    cb38:	e59d3018 	ldr	r3, [sp, #24]                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
    cb3c:	e1a0e422 	lsr	lr, r2, #8                                    
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
    cb40:	e5cd1041 	strb	r1, [sp, #65]	; 0x41                         
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
    cb44:	e5cd0049 	strb	r0, [sp, #73]	; 0x49                         
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
    cb48:	e3a01002 	mov	r1, #2                                        
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
    cb4c:	e3a00001 	mov	r0, #1                                        
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    cb50:	e35b0004 	cmp	fp, #4                                        
   * but first clear the MRB leaving the partition table.             
   */                                                                 
#define RTEMS_IDE_PARTITION_TABLE_OFFSET                  0x1be       
#define RTEMS_IDE_PARTITION_TABLE_SIZE                    (4 * 16)    
  memset(mbr,0,RTEMS_IDE_PARTITION_TABLE_OFFSET);                     
  memset(mbr + RTEMS_IDE_PARTITION_TABLE_OFFSET + RTEMS_IDE_PARTITION_TABLE_SIZE,
    cb54:	e1a0900a 	mov	r9, sl                                        
   * fill OEMName                                                     
   */                                                                 
  memcpy(FAT_GET_ADDR_BR_OEMNAME(mbr),                                
	 fmt_params->OEMName,                                                
	 FAT_BR_OEMNAME_SIZE);                                               
  FAT_SET_BR_BYTES_PER_SECTOR(mbr    , fmt_params->bytes_per_sector); 
    cb58:	e5cd8040 	strb	r8, [sp, #64]	; 0x40                         
  FAT_SET_BR_SECTORS_PER_CLUSTER(mbr , fmt_params->sectors_per_cluster);
  FAT_SET_BR_RESERVED_SECTORS_NUM(mbr, fmt_params->rsvd_sector_cnt);  
    cb5c:	e5cd2042 	strb	r2, [sp, #66]	; 0x42                         
    cb60:	e5cde043 	strb	lr, [sp, #67]	; 0x43                         
                                                                      
  /* number of FATs on medium */                                      
  FAT_SET_BR_FAT_NUM(mbr             , 2); /* standard/recommended value */
    cb64:	e5cd1044 	strb	r1, [sp, #68]	; 0x44                         
  FAT_SET_BR_FILES_PER_ROOT_DIR(mbr  , fmt_params->files_per_root_dir);
    cb68:	e5cdc046 	strb	ip, [sp, #70]	; 0x46                         
  FAT_SET_BR_TOTAL_SECTORS_NUM16(mbr , total_sectors_num16);          
    cb6c:	e5cd7048 	strb	r7, [sp, #72]	; 0x48                         
  FAT_SET_BR_MEDIA(mbr               , fmt_params->media_code);       
                                                                      
  FAT_SET_BR_SECTORS_PER_TRACK(mbr   , 255); /* only needed for INT13... */
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
    cb70:	e5cd0050 	strb	r0, [sp, #80]	; 0x50                         
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
    cb74:	e5cd3056 	strb	r3, [sp, #86]	; 0x56                         
    cb78:	e5cd6057 	strb	r6, [sp, #87]	; 0x57                         
  if (fmt_params->fattype != FAT_FAT32) {                             
    cb7c:	0a000290 	beq	d5c4 <msdos_format+0xe80>                     
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
    cb80:	e59d3280 	ldr	r3, [sp, #640]	; 0x280                        
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    cb84:	e59dc244 	ldr	ip, [sp, #580]	; 0x244                        
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
    cb88:	e1a06423 	lsr	r6, r3, #8                                    
    cb8c:	e1a0e823 	lsr	lr, r3, #16                                   
    cb90:	e1a08c23 	lsr	r8, r3, #24                                   
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    cb94:	e1a0742c 	lsr	r7, ip, #8                                    
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
    cb98:	e28d1e27 	add	r1, sp, #624	; 0x270                          
    cb9c:	e3a0200b 	mov	r2, #11                                       
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    cba0:	e5cdc04a 	strb	ip, [sp, #74]	; 0x4a                         
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
    cba4:	e28d005f 	add	r0, sp, #95	; 0x5f                            
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    cba8:	e3a0c029 	mov	ip, #41	; 0x29                                
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
    cbac:	e5cd305b 	strb	r3, [sp, #91]	; 0x5b                         
  FAT_SET_BR_NUMBER_OF_HEADS(mbr     , 6);   /* only needed for INT13... */
  FAT_SET_BR_HIDDEN_SECTORS(mbr      , 1);   /* only needed for INT13... */
                                                                      
  FAT_SET_BR_TOTAL_SECTORS_NUM32(mbr , total_sectors_num32);          
  if (fmt_params->fattype != FAT_FAT32) {                             
    FAT_SET_BR_SECTORS_PER_FAT(mbr   ,fmt_params->sectors_per_fat);   
    cbb0:	e5cd704b 	strb	r7, [sp, #75]	; 0x4b                         
    FAT_SET_BR_DRVNUM(mbr            , 0); /* only needed for INT13... */
    FAT_SET_BR_RSVD1(mbr             , 0); /* fill with zero */       
    FAT_SET_BR_BOOTSIG(mbr           , FAT_BR_BOOTSIG_VAL);           
    cbb4:	e5cdc05a 	strb	ip, [sp, #90]	; 0x5a                         
    FAT_SET_BR_VOLID(mbr             , fmt_params->vol_id); /* volume id */
    cbb8:	e5cd605c 	strb	r6, [sp, #92]	; 0x5c                         
    cbbc:	e5cde05d 	strb	lr, [sp, #93]	; 0x5d                         
    cbc0:	e5cd805e 	strb	r8, [sp, #94]	; 0x5e                         
  memcpy(FAT_GET_ADDR_BR_VOLLAB(mbr),                                 
    cbc4:	eb0035e1 	bl	1a350 <memcpy>                                 
	 fmt_params->VolLabel,                                               
	 FAT_BR_VOLLAB_SIZE);                                                
    memcpy(FAT_GET_ADDR_BR_FILSYSTYPE(mbr),                           
    cbc8:	e59f3b38 	ldr	r3, [pc, #2872]	; d708 <msdos_format+0xfc4>   
    cbcc:	e35b0001 	cmp	fp, #1                                        
    cbd0:	e59f1b34 	ldr	r1, [pc, #2868]	; d70c <msdos_format+0xfc8>   
    cbd4:	e28d006a 	add	r0, sp, #106	; 0x6a                           
    cbd8:	01a01003 	moveq	r1, r3                                      
    cbdc:	e3a02008 	mov	r2, #8                                        
    cbe0:	eb0035da 	bl	1a350 <memcpy>                                 
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  /*                                                                  
   * add boot record signature                                        
   */                                                                 
  FAT_SET_BR_SIGNATURE(mbr,      FAT_BR_SIGNATURE_VAL);               
    cbe4:	e3a03055 	mov	r3, #85	; 0x55                                
    cbe8:	e5cd3232 	strb	r3, [sp, #562]	; 0x232                       
    cbec:	e3e03055 	mvn	r3, #85	; 0x55                                
    cbf0:	e5cd3233 	strb	r3, [sp, #563]	; 0x233                       
                                                                      
  /*                                                                  
   * add jump to boot loader at start of sector                       
   */                                                                 
  FAT_SET_VAL8(mbr,0,0xeb);                                           
    cbf4:	e3e03014 	mvn	r3, #20                                       
    cbf8:	e5cd3034 	strb	r3, [sp, #52]	; 0x34                         
  FAT_SET_VAL8(mbr,1,0x3c);                                           
    cbfc:	e3a0303c 	mov	r3, #60	; 0x3c                                
    /*                                                                
     * 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,       
    cc00:	e3a01002 	mov	r1, #2                                        
    cc04:	e59f2b04 	ldr	r2, [pc, #2820]	; d710 <msdos_format+0xfcc>   
    cc08:	e1a00004 	mov	r0, r4                                        
                                                                      
  /*                                                                  
   * add jump to boot loader at start of sector                       
   */                                                                 
  FAT_SET_VAL8(mbr,0,0xeb);                                           
  FAT_SET_VAL8(mbr,1,0x3c);                                           
    cc0c:	e5cd3035 	strb	r3, [sp, #53]	; 0x35                         
  FAT_SET_VAL8(mbr,2,0x90);                                           
    cc10:	e3e0306f 	mvn	r3, #111	; 0x6f                               
    cc14:	e5cd3036 	strb	r3, [sp, #54]	; 0x36                         
    /*                                                                
     * 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,       
    cc18:	ebfffe1a 	bl	c488 <msdos_format_printf>                     
                           "write MRB sector\n");                     
      ret_val = msdos_format_write_sec(fd,                            
    cc1c:	e1a00005 	mov	r0, r5                                        
    cc20:	e3a01000 	mov	r1, #0                                        
    cc24:	e59d2234 	ldr	r2, [sp, #564]	; 0x234                        
    cc28:	e28d3034 	add	r3, sp, #52	; 0x34                            
    cc2c:	ebfffe2c 	bl	c4e4 <msdos_format_write_sec>                  
                                       0,                             
                                       fmt_params.bytes_per_sector,   
                                       tmp_sec);                      
    }                                                                 
    if ((ret_val == 0) &&                                             
    cc30:	e2506000 	subs	r6, r0, #0                                   
    cc34:	1afffeed 	bne	c7f0 <msdos_format+0xac>                      
    cc38:	e59d325c 	ldr	r3, [sp, #604]	; 0x25c                        
    cc3c:	e3530000 	cmp	r3, #0                                        
    cc40:	1a00024b 	bne	d574 <msdos_format+0xe30>                     
  }                                                                   
  /*                                                                  
   * for FAT32: initialize info sector on disk                        
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    cc44:	e59d6260 	ldr	r6, [sp, #608]	; 0x260                        
    }                                                                 
  }                                                                   
  /*                                                                  
   * for FAT32: initialize info sector on disk                        
   */                                                                 
  if ((ret_val == 0) &&                                               
    cc48:	e3560000 	cmp	r6, #0                                        
    cc4c:	1a0001e6 	bne	d3ec <msdos_format+0xca8>                     
  /*                                                                  
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = msdos_format_fill_sectors                               
    cc50:	e59dc244 	ldr	ip, [sp, #580]	; 0x244                        
      (rqdata,                                                        
    cc54:	e5dd3264 	ldrb	r3, [sp, #612]	; 0x264                       
  /*                                                                  
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    ret_val = msdos_format_fill_sectors                               
    cc58:	e003039c 	mul	r3, ip, r3                                    
    cc5c:	e59dc234 	ldr	ip, [sp, #564]	; 0x234                        
    cc60:	e1a00004 	mov	r0, r4                                        
    cc64:	e58dc000 	str	ip, [sp]                                      
    cc68:	e1a01005 	mov	r1, r5                                        
    cc6c:	e3a0c000 	mov	ip, #0                                        
    cc70:	e59d223c 	ldr	r2, [sp, #572]	; 0x23c                        
    cc74:	e58dc004 	str	ip, [sp, #4]                                  
    cc78:	ebfffe2f 	bl	c53c <msdos_format_fill_sectors>               
  }                                                                   
  /*                                                                  
   * clear/init root directory                                        
   * -> write all directory sectors as 0x00                           
   */                                                                 
  if (ret_val == 0) {                                                 
    cc7c:	e2506000 	subs	r6, r0, #0                                   
    cc80:	1afffeda 	bne	c7f0 <msdos_format+0xac>                      
    ret_val = msdos_format_fill_sectors                               
    cc84:	e59dc234 	ldr	ip, [sp, #564]	; 0x234                        
    cc88:	e28d2f95 	add	r2, sp, #596	; 0x254                          
    cc8c:	e892000c 	ldm	r2, {r2, r3}                                  
    cc90:	e1a00004 	mov	r0, r4                                        
    cc94:	e1a01005 	mov	r1, r5                                        
    cc98:	e58d6004 	str	r6, [sp, #4]                                  
    cc9c:	e58dc000 	str	ip, [sp]                                      
    cca0:	ebfffe25 	bl	c53c <msdos_format_fill_sectors>               
       0x00);                                                         
  }                                                                   
  /*                                                                  
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    cca4:	e2506000 	subs	r6, r0, #0                                   
    cca8:	1afffed0 	bne	c7f0 <msdos_format+0xac>                      
    ccac:	e5dd327c 	ldrb	r3, [sp, #636]	; 0x27c                       
    ccb0:	e3530000 	cmp	r3, #0                                        
    ccb4:	1a0001b6 	bne	d394 <msdos_format+0xc50>                     
    uint32_t start_sector;                                            
                                                                      
    /*                                                                
     * empty sector: all clusters are free/do not link further on     
     */                                                               
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    ccb8:	e28d0034 	add	r0, sp, #52	; 0x34                            
    ccbc:	e3a01000 	mov	r1, #0                                        
    ccc0:	e3a02c02 	mov	r2, #512	; 0x200                              
    ccc4:	eb0035d7 	bl	1a428 <memset>                                 
                                                                      
    switch(fmt_params.fattype) {                                      
    ccc8:	e5dd3266 	ldrb	r3, [sp, #614]	; 0x266                       
    cccc:	e3530002 	cmp	r3, #2                                        
    ccd0:	0a000203 	beq	d4e4 <msdos_format+0xda0>                     
    ccd4:	e3530004 	cmp	r3, #4                                        
    ccd8:	0a0001e8 	beq	d480 <msdos_format+0xd3c>                     
    ccdc:	e3530001 	cmp	r3, #1                                        
    cce0:	0a00020c 	beq	d518 <msdos_format+0xdd4>                     
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
      break;                                                          
                                                                      
    default:                                                          
      ret_val = -1;                                                   
      errno = EINVAL;                                                 
    cce4:	eb0032f2 	bl	198b4 <__errno>                                <== NOT EXECUTED
    cce8:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    ccec:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    }                                                                 
    if (fmt_params.fattype == FAT_FAT32) {                            
    ccf0:	e5dd3266 	ldrb	r3, [sp, #614]	; 0x266                       <== NOT EXECUTED
    ccf4:	e3530004 	cmp	r3, #4                                        <== NOT EXECUTED
    ccf8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    ccfc:	e1a02003 	mov	r2, r3                                        <== NOT EXECUTED
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
      break;                                                          
                                                                      
    default:                                                          
      ret_val = -1;                                                   
    cd00:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
      errno = EINVAL;                                                 
    }                                                                 
    if (fmt_params.fattype == FAT_FAT32) {                            
    cd04:	0a0001ee 	beq	d4c4 <msdos_format+0xd80>                     <== NOT EXECUTED
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    cd08:	e5dd1284 	ldrb	r1, [sp, #644]	; 0x284                       
       * mark this in every copy of the FAT                           
       */                                                             
      FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);                         
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
    cd0c:	e59d823c 	ldr	r8, [sp, #572]	; 0x23c                        
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    cd10:	e3510000 	cmp	r1, #0                                        
       * mark this in every copy of the FAT                           
       */                                                             
      FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);                         
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
    cd14:	e59d1240 	ldr	r1, [sp, #576]	; 0x240                        
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    cd18:	00888001 	addeq	r8, r8, r1                                  
    cd1c:	02488001 	subeq	r8, r8, #1                                  
    cd20:	02611000 	rsbeq	r1, r1, #0                                  
    cd24:	00088001 	andeq	r8, r8, r1                                  
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
    cd28:	e3530000 	cmp	r3, #0                                        
    cd2c:	0a000221 	beq	d5b8 <msdos_format+0xe74>                     
    cd30:	e59d1244 	ldr	r1, [sp, #580]	; 0x244                        
    cd34:	e3a07000 	mov	r7, #0                                        
    cd38:	ea000000 	b	cd40 <msdos_format+0x5fc>                       
    cd3c:	e59d1244 	ldr	r1, [sp, #580]	; 0x244                        
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
	 i++) {                                                              
      ret_val = msdos_format_write_sec                                
    cd40:	e0218197 	mla	r1, r7, r1, r8                                
    cd44:	e59d2234 	ldr	r2, [sp, #564]	; 0x234                        
    cd48:	e28d3034 	add	r3, sp, #52	; 0x34                            
    cd4c:	e1a00005 	mov	r0, r5                                        
    cd50:	ebfffde3 	bl	c4e4 <msdos_format_write_sec>                  
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
	 (i < fmt_params.fat_num) && (ret_val == 0);                         
    cd54:	e5dd3264 	ldrb	r3, [sp, #612]	; 0x264                       
    cd58:	e2702001 	rsbs	r2, r0, #1                                   
    cd5c:	33a02000 	movcc	r2, #0                                      
	 i++) {                                                              
    cd60:	e2877001 	add	r7, r7, #1                                    
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
    cd64:	e1530007 	cmp	r3, r7                                        
    cd68:	d3a03000 	movle	r3, #0                                      
    cd6c:	c2023001 	andgt	r3, r2, #1                                  
    cd70:	e3530000 	cmp	r3, #0                                        
    cd74:	1afffff0 	bne	cd3c <msdos_format+0x5f8>                     
    cd78:	e59d3020 	ldr	r3, [sp, #32]                                 
    cd7c:	e0022003 	and	r2, r2, r3                                    
         fmt_params.bytes_per_sector,                                 
         tmp_sec);                                                    
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0 && rqdata != NULL && rqdata->sync_device) {        
    cd80:	e3520000 	cmp	r2, #0                                        
    cd84:	0a000196 	beq	d3e4 <msdos_format+0xca0>                     
    cd88:	e5d43017 	ldrb	r3, [r4, #23]                                
    cd8c:	e3530000 	cmp	r3, #0                                        
    cd90:	0afffe96 	beq	c7f0 <msdos_format+0xac>                      
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
}                                                                     
                                                                      
static inline int rtems_disk_fd_sync(int fd)                          
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_SYNCDEV);                              
    cd94:	e1a00005 	mov	r0, r5                                        
    cd98:	e59f1974 	ldr	r1, [pc, #2420]	; d714 <msdos_format+0xfd0>   
    cd9c:	eb001b4c 	bl	13ad4 <ioctl>                                  
    cda0:	e1a06000 	mov	r6, r0                                        
    cda4:	eafffe91 	b	c7f0 <msdos_format+0xac>                        
  /*                                                                  
   * write FAT entry 0 as (0xffffff00|Media_type)EOC,                 
   * write FAT entry 1 as EOC                                         
   * allocate directory in a FAT32 FS                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    cda8:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
    cdac:	eafffe8f 	b	c7f0 <msdos_format+0xac>                        <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * sanity check on device                                           
   */                                                                 
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
    cdb0:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    cdb4:	e59f2928 	ldr	r2, [pc, #2344]	; d6e4 <msdos_format+0xfa0>   <== NOT EXECUTED
    cdb8:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
    cdbc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    cdc0:	ebfffdb0 	bl	c488 <msdos_format_printf>                     <== NOT EXECUTED
                       "stat check: %s\n", devname);                  
  if (ret_val == 0) {                                                 
    ret_val = fstat(fd, &stat_buf);                                   
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,             
    cdc4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    cdc8:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
    cdcc:	e59f2914 	ldr	r2, [pc, #2324]	; d6e8 <msdos_format+0xfa4>   <== NOT EXECUTED
    cdd0:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
    cdd4:	ebfffdab 	bl	c488 <msdos_format_printf>                     <== NOT EXECUTED
    cdd8:	e1a06005 	mov	r6, r5                                        <== NOT EXECUTED
    cddc:	eafffe7e 	b	c7dc <msdos_format+0x98>                        <== 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);                 
    cde0:	e1a00005 	mov	r0, r5                                        
    cde4:	e59f192c 	ldr	r1, [pc, #2348]	; d718 <msdos_format+0xfd4>   
    cde8:	e28d2f8e 	add	r2, sp, #568	; 0x238                          
    cdec:	eb001b38 	bl	13ad4 <ioctl>                                  
    ret_val = rtems_disk_fd_get_media_block_size(fd, &fmt_params->bytes_per_sector);
  }                                                                   
  if (ret_val == 0) {                                                 
    ret_val = rtems_disk_fd_get_block_count(fd, &fmt_params->totl_sector_cnt);
  }                                                                   
  if (ret_val == 0) {                                                 
    cdf0:	e2506000 	subs	r6, r0, #0                                   
    cdf4:	1afffe8d 	bne	c830 <msdos_format+0xec>                      
    total_size = fmt_params->bytes_per_sector * fmt_params->totl_sector_cnt;
    cdf8:	e28d3f8d 	add	r3, sp, #564	; 0x234                          
    cdfc:	e8931008 	ldm	r3, {r3, ip}                                  
    ce00:	e0020c93 	mul	r2, r3, ip                                    
    ce04:	e3a09000 	mov	r9, #0                                        
    ce08:	e1a08002 	mov	r8, r2                                        
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    ce0c:	e1a00004 	mov	r0, r4                                        
    ce10:	e3a01002 	mov	r1, #2                                        
    ce14:	e59f2900 	ldr	r2, [pc, #2304]	; d71c <msdos_format+0xfd8>   
    ce18:	e58dc000 	str	ip, [sp]                                      
    ce1c:	e98d0300 	stmib	sp, {r8, r9}                                
    ce20:	ebfffd98 	bl	c488 <msdos_format_printf>                     
                                                                      
  /*                                                                  
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
    ce24:	e1540009 	cmp	r4, r9                                        
    ce28:	0a00020d 	beq	d664 <msdos_format+0xf20>                     
	(rqdata->fat_num == 0)) {                                            
    ce2c:	e594c00c 	ldr	ip, [r4, #12]                                 
                                                                      
  /*                                                                  
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
    ce30:	e15c0009 	cmp	ip, r9                                        
    ce34:	1a00013e 	bne	d334 <msdos_format+0xbf0>                     
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    ce38:	e3a0c002 	mov	ip, #2                                        
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    ce3c:	e1a0100c 	mov	r1, ip                                        
    ce40:	e1a00004 	mov	r0, r4                                        
    ce44:	e59f28d4 	ldr	r2, [pc, #2260]	; d720 <msdos_format+0xfdc>   
    ce48:	e1a0300c 	mov	r3, ip                                        
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    ce4c:	e5cdc264 	strb	ip, [sp, #612]	; 0x264                       
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    ce50:	ebfffd8c 	bl	c488 <msdos_format_printf>                     
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
                                                                      
    if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {         
    ce54:	e5943008 	ldr	r3, [r4, #8]                                  
    ce58:	e3530000 	cmp	r3, #0                                        
    ce5c:	10631403 	rsbne	r1, r3, r3, lsl #8                          
    ce60:	10831101 	addne	r1, r3, r1, lsl #2                          
    ce64:	059f18b8 	ldreq	r1, [pc, #2232]	; d724 <msdos_format+0xfe0> 
    ce68:	10831101 	addne	r1, r3, r1, lsl #2                          
     * limiting values for disk size, fat type, sectors per cluster   
     * NOTE: maximum sect_per_clust is arbitrarily choosen with values that
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
    ce6c:	03a03020 	moveq	r3, #32                                     
    if (rqdata != NULL && rqdata->sectors_per_cluster != 0) {         
      fat12_sect_per_clust = rqdata->sectors_per_cluster;             
      fat16_sect_per_clust = rqdata->sectors_per_cluster;             
    }                                                                 
                                                                      
    if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
    ce70:	e59d2238 	ldr	r2, [sp, #568]	; 0x238                        
    ce74:	e1520001 	cmp	r2, r1                                        
    ce78:	2a000113 	bcs	d2cc <msdos_format+0xb88>                     
      fmt_params->fattype = FAT_FAT12;                                
    ce7c:	e3a03001 	mov	r3, #1                                        
    ce80:	e5cd3266 	strb	r3, [sp, #614]	; 0x266                       
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    ce84:	e3a03002 	mov	r3, #2                                        
    ce88:	e58d3240 	str	r3, [sp, #576]	; 0x240                        
        if ((gigs & (1 << b)) != 0)                                   
          break;                                                      
      fmt_params->sectors_per_cluster = 1 << b;                       
    }                                                                 
                                                                      
    ret_val = msdos_set_sectors_per_cluster_from_request( rqdata, fmt_params );
    ce8c:	e1a00004 	mov	r0, r4                                        
    ce90:	e28d1f8d 	add	r1, sp, #564	; 0x234                          
    ce94:	ebfffe0b 	bl	c6c8 <msdos_set_sectors_per_cluster_from_request>
    if (ret_val == 0) {                                               
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
    ce98:	e2506000 	subs	r6, r0, #0                                   
    ce9c:	1a0001fa 	bne	d68c <msdos_format+0xf48>                     
          && fmt_params->fattype != fat_type                          
    cea0:	e5dd3266 	ldrb	r3, [sp, #614]	; 0x266                       
    cea4:	e35300ff 	cmp	r3, #255	; 0xff                               
    cea8:	0a0001fc 	beq	d6a0 <msdos_format+0xf5c>                     
          && fmt_params->totl_sector_cnt > 0 ) {                      
    ceac:	e59d3238 	ldr	r3, [sp, #568]	; 0x238                        
    ceb0:	e3530000 	cmp	r3, #0                                        
    ceb4:	0a0001fe 	beq	d6b4 <msdos_format+0xf70>                     
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    ceb8:	e3a02101 	mov	r2, #1073741824	; 0x40000000                  
    cebc:	e0922008 	adds	r2, r2, r8                                   
    cec0:	e3a03000 	mov	r3, #0                                        
    cec4:	e0a33009 	adc	r3, r3, r9                                    
    cec8:	e1a02f22 	lsr	r2, r2, #30                                   
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
    cecc:	e2940000 	adds	r0, r4, #0                                   
    ced0:	13a00001 	movne	r0, #1                                      
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    ced4:	e1822103 	orr	r2, r2, r3, lsl #2                            
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
    ced8:	e58d0020 	str	r0, [sp, #32]                                 
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
  }                                                                   
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    cedc:	e58d2030 	str	r2, [sp, #48]	; 0x30                          
    cee0:	e58d6018 	str	r6, [sp, #24]                                 
    cee4:	e58d502c 	str	r5, [sp, #44]	; 0x2c                          
    cee8:	e58d4024 	str	r4, [sp, #36]	; 0x24                          
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
      /*                                                              
       * Skip aligning structures or d align them                     
       */                                                             
      if (ret_val == 0 && rqdata != NULL)                             
    ceec:	e59d1020 	ldr	r1, [sp, #32]                                 
    cef0:	e3510000 	cmp	r1, #0                                        
        fmt_params->skip_alignment = rqdata->skip_alignment;          
    cef4:	159d2024 	ldrne	r2, [sp, #36]	; 0x24                        
    cef8:	15d23016 	ldrbne	r3, [r2, #22]                              
                                                                      
      if (ret_val == 0) {                                             
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
    cefc:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
      /*                                                              
       * Skip aligning structures or d align them                     
       */                                                             
      if (ret_val == 0 && rqdata != NULL)                             
        fmt_params->skip_alignment = rqdata->skip_alignment;          
    cf00:	15cd3284 	strbne	r3, [sp, #644]	; 0x284                     
                                                                      
      if (ret_val == 0) {                                             
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
    cf04:	e3a01002 	mov	r1, #2                                        
    cf08:	e59f2818 	ldr	r2, [pc, #2072]	; d728 <msdos_format+0xfe4>   
    cf0c:	e59d3240 	ldr	r3, [sp, #576]	; 0x240                        
    cf10:	ebfffd5c 	bl	c488 <msdos_format_printf>                     
                             "sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
                                                                      
        if (fmt_params->fattype == FAT_FAT32) {                       
    cf14:	e5dd5266 	ldrb	r5, [sp, #614]	; 0x266                       
    cf18:	e3550004 	cmp	r5, #4                                        
    cf1c:	0a0000da 	beq	d28c <msdos_format+0xb48>                     
          /* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
          fmt_params->rsvd_sector_cnt = 1;                            
          /* recommended: for FAT16, set files per root directory to 512 */
          /* for FAT12/FAT16, set files per root directory */         
          /* must fill up an even count of sectors         */         
          if ((rqdata != NULL) &&                                     
    cf20:	e59d3020 	ldr	r3, [sp, #32]                                 
    cf24:	e3530000 	cmp	r3, #0                                        
          fmt_params->fsinfo_sec = 1;                                 
                                                                      
        }                                                             
        else {                                                        
          /* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
          fmt_params->rsvd_sector_cnt = 1;                            
    cf28:	e3a03001 	mov	r3, #1                                        
    cf2c:	e58d323c 	str	r3, [sp, #572]	; 0x23c                        
          /* recommended: for FAT16, set files per root directory to 512 */
          /* for FAT12/FAT16, set files per root directory */         
          /* must fill up an even count of sectors         */         
          if ((rqdata != NULL) &&                                     
    cf30:	0a000004 	beq	cf48 <msdos_format+0x804>                     
              (rqdata->files_per_root_dir > 0)) {                     
    cf34:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          
    cf38:	e5904010 	ldr	r4, [r0, #16]                                 
          /* recommended: for FAT12/FAT16, always set reserved sector count to 1 */
          fmt_params->rsvd_sector_cnt = 1;                            
          /* recommended: for FAT16, set files per root directory to 512 */
          /* for FAT12/FAT16, set files per root directory */         
          /* must fill up an even count of sectors         */         
          if ((rqdata != NULL) &&                                     
    cf3c:	e3540000 	cmp	r4, #0                                        
    cf40:	12444001 	subne	r4, r4, #1                                  
    cf44:	1a000002 	bne	cf54 <msdos_format+0x810>                     
              (rqdata->files_per_root_dir > 0)) {                     
            fmt_params->files_per_root_dir = rqdata->files_per_root_dir;
          }                                                           
          else {                                                      
            if (fmt_params->fattype == FAT_FAT16) {                   
    cf48:	e3550002 	cmp	r5, #2                                        
    cf4c:	e59f47d8 	ldr	r4, [pc, #2008]	; d72c <msdos_format+0xfe8>   
    cf50:	13a0403f 	movne	r4, #63	; 0x3f                              
            else {                                                    
              fmt_params->files_per_root_dir = 64;                    
            }                                                         
          }                                                           
          fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
                                           (2*fmt_params->bytes_per_sector/
    cf54:	e59d8234 	ldr	r8, [sp, #564]	; 0x234                        
    cf58:	e1a01088 	lsl	r1, r8, #1                                    
    cf5c:	e1a012a1 	lsr	r1, r1, #5                                    
            }                                                         
            else {                                                    
              fmt_params->files_per_root_dir = 64;                    
            }                                                         
          }                                                           
          fmt_params->files_per_root_dir = (fmt_params->files_per_root_dir +
    cf60:	e0844001 	add	r4, r4, r1                                    
                                           (2*fmt_params->bytes_per_sector/
                                           FAT_DIRENTRY_SIZE-1));     
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
    cf64:	e1a00004 	mov	r0, r4                                        
    cf68:	ebffd3ba 	bl	1e58 <__umodsi3>                               
    cf6c:	e3a02001 	mov	r2, #1                                        
    cf70:	e0600004 	rsb	r0, r0, r4                                    
    cf74:	e58d2010 	str	r2, [sp, #16]                                 
    cf78:	e58d024c 	str	r0, [sp, #588]	; 0x24c                        
    cf7c:	e1a00280 	lsl	r0, r0, #5                                    
                                            /FAT_DIRENTRY_SIZE));     
                                                                      
        }                                                             
        fmt_params->root_dir_sectors =                                
          (((fmt_params->files_per_root_dir * FAT_DIRENTRY_SIZE)      
            + fmt_params->bytes_per_sector - 1)                       
    cf80:	e248b001 	sub	fp, r8, #1                                    
           / fmt_params->bytes_per_sector);                           
    cf84:	e1a01008 	mov	r1, r8                                        
    cf88:	e08b0000 	add	r0, fp, r0                                    
    cf8c:	ebffd36b 	bl	1d40 <__aeabi_uidiv>                           
    cf90:	e58d0014 	str	r0, [sp, #20]                                 
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
                                            (2*fmt_params->bytes_per_sector
                                            /FAT_DIRENTRY_SIZE));     
                                                                      
        }                                                             
        fmt_params->root_dir_sectors =                                
    cf94:	e59d3014 	ldr	r3, [sp, #20]                                 
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
    cf98:	e3a00902 	mov	r0, #32768	; 0x8000                           
    cf9c:	e1a01008 	mov	r1, r8                                        
          fmt_params->files_per_root_dir -= (fmt_params->files_per_root_dir %
                                            (2*fmt_params->bytes_per_sector
                                            /FAT_DIRENTRY_SIZE));     
                                                                      
        }                                                             
        fmt_params->root_dir_sectors =                                
    cfa0:	e58d3250 	str	r3, [sp, #592]	; 0x250                        
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
    cfa4:	ebffd365 	bl	1d40 <__aeabi_uidiv>                           
      if (ret_val == 0) {                                             
        /*                                                            
         * check values to get legal arrangement of FAT type and cluster count
         */                                                           
                                                                      
        ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
    cfa8:	e59d4240 	ldr	r4, [sp, #576]	; 0x240                        
                                                        fmt_params->bytes_per_sector,
                                                        fmt_params->totl_sector_cnt,
                                                        fmt_params->rsvd_sector_cnt,
                                                        fmt_params->root_dir_sectors,
                                                        fmt_params->fat_num,
    cfac:	e5dd2264 	ldrb	r2, [sp, #612]	; 0x264                       
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
    cfb0:	e1540000 	cmp	r4, r0                                        
      if (ret_val == 0) {                                             
        /*                                                            
         * check values to get legal arrangement of FAT type and cluster count
         */                                                           
                                                                      
        ret_val = msdos_format_eval_sectors_per_cluster(fmt_params->fattype,
    cfb4:	e59d9238 	ldr	r9, [sp, #568]	; 0x238                        
                                                        fmt_params->bytes_per_sector,
                                                        fmt_params->totl_sector_cnt,
                                                        fmt_params->rsvd_sector_cnt,
                                                        fmt_params->root_dir_sectors,
                                                        fmt_params->fat_num,
    cfb8:	e58d200c 	str	r2, [sp, #12]                                 
                                                        fmt_params->sectors_per_cluster,
                                                        fmt_params->skip_alignment,
    cfbc:	e5dda284 	ldrb	sl, [sp, #644]	; 0x284                       
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
    cfc0:	9a000002 	bls	cfd0 <msdos_format+0x88c>                     
    sectors_per_cluster /= 2;                                         
    cfc4:	e1a040a4 	lsr	r4, r4, #1                                    <== NOT EXECUTED
  uint32_t fatdata_sect_cnt;                                          
  uint32_t fat_sectors_cnt;                                           
  /*                                                                  
   * ensure, that maximum cluster size (32KByte) is not exceeded      
   */                                                                 
  while (MS_BYTES_PER_CLUSTER_LIMIT / bytes_per_sector < sectors_per_cluster) {
    cfc8:	e1540000 	cmp	r4, r0                                        <== NOT EXECUTED
    cfcc:	8afffffc 	bhi	cfc4 <msdos_format+0x880>                     <== NOT EXECUTED
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    cfd0:	e59d3010 	ldr	r3, [sp, #16]                                 
    cfd4:	e59d2014 	ldr	r2, [sp, #20]                                 
    cfd8:	e2433001 	sub	r3, r3, #1                                    
    cfdc:	e2422001 	sub	r2, r2, #1                                    
    cfe0:	e58d301c 	str	r3, [sp, #28]                                 
    cfe4:	e58d2028 	str	r2, [sp, #40]	; 0x28                          
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    cfe8:	e35a0000 	cmp	sl, #0                                        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    cfec:	059d201c 	ldreq	r2, [sp, #28]                               
    cff0:	02640000 	rsbeq	r0, r4, #0                                  
    cff4:	00823004 	addeq	r3, r2, r4                                  
  else                                                                
    return sectors;                                                   
    cff8:	159d0010 	ldrne	r0, [sp, #16]                               
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    cffc:	00000003 	andeq	r0, r0, r3                                  
     * - compute storage size for FAT                                 
     * - subtract from total cluster count                            
     */                                                               
    fatdata_sect_cnt = total_sector_cnt                               
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
    d000:	e3550001 	cmp	r5, #1                                        
     * compute number of data clusters for current data:              
     * - compute cluster count for data AND fat                       
     * - compute storage size for FAT                                 
     * - subtract from total cluster count                            
     */                                                               
    fatdata_sect_cnt = total_sector_cnt                               
    d004:	e0600009 	rsb	r0, r0, r9                                    
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
    d008:	0a000086 	beq	d228 <msdos_format+0xae4>                     
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
    }                                                                 
    else if (fattype == FAT_FAT16) {                                  
    d00c:	e3550002 	cmp	r5, #2                                        
    d010:	0a000091 	beq	d25c <msdos_format+0xb18>                     
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
      fat_capacity        = fatdata_cluster_cnt * 2;                  
    }                                                                 
    else { /* FAT32 */                                                
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
    d014:	e1a01004 	mov	r1, r4                                        
    d018:	ebffd348 	bl	1d40 <__aeabi_uidiv>                           
    d01c:	e1a06000 	mov	r6, r0                                        
      fat_capacity        = fatdata_cluster_cnt * 4;                  
    d020:	e1a00100 	lsl	r0, r0, #2                                    
    }                                                                 
                                                                      
    sectors_per_fat = ((fat_capacity                                  
    d024:	e1a01008 	mov	r1, r8                                        
    d028:	e080000b 	add	r0, r0, fp                                    
    d02c:	ebffd343 	bl	1d40 <__aeabi_uidiv>                           
			+ (bytes_per_sector - 1))                                          
		       / bytes_per_sector);                                         
                                                                      
    fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,    
    d030:	e59d300c 	ldr	r3, [sp, #12]                                 
    d034:	e0070093 	mul	r7, r3, r0                                    
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    d038:	e35a0000 	cmp	sl, #0                                        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    d03c:	e2440001 	sub	r0, r4, #1                                    
    d040:	00877000 	addeq	r7, r7, r0                                  
    d044:	02643000 	rsbeq	r3, r4, #0                                  
    d048:	00077003 	andeq	r7, r7, r3                                  
                                        skip_alignment);              
                                                                      
    *data_cluster_cnt = (fatdata_cluster_cnt -                        
			((fat_sectors_cnt                                                  
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
    d04c:	e0800007 	add	r0, r0, r7                                    
    d050:	e1a01004 	mov	r1, r4                                        
    d054:	ebffd339 	bl	1d40 <__aeabi_uidiv>                           
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
    d058:	e3550001 	cmp	r5, #1                                        
                                                                      
    fat_sectors_cnt = loc_align_object (sectors_per_fat * fat_num,    
                                        sectors_per_cluster,          
                                        skip_alignment);              
                                                                      
    *data_cluster_cnt = (fatdata_cluster_cnt -                        
    d05c:	e0606006 	rsb	r6, r0, r6                                    
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
    d060:	0a000065 	beq	d1fc <msdos_format+0xab8>                     
    d064:	e3550002 	cmp	r5, #2                                        
    d068:	0a000058 	beq	d1d0 <msdos_format+0xa8c>                     
     */                                                               
    if (fattype == FAT_FAT12) {                                       
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
        finished = true;                                              
      }                                                               
    } else if ((sectors_per_cluster * bytes_per_sector)               
    d06c:	e0020498 	mul	r2, r8, r4                                    
    d070:	e3520902 	cmp	r2, #32768	; 0x8000                           
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
      sectors_per_cluster *= 2;                                       
    }                                                                 
    else {                                                            
      finished = true;                                                
    d074:	e3a03001 	mov	r3, #1                                        
     */                                                               
    if (fattype == FAT_FAT12) {                                       
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
        finished = true;                                              
      }                                                               
    } else if ((sectors_per_cluster * bytes_per_sector)               
    d078:	9a00005c 	bls	d1f0 <msdos_format+0xaac>                     
      finished = true;                                                
    }                                                                 
  } while (!finished);                                                
                                                                      
  *sectors_per_cluster_adj = sectors_per_cluster;                     
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;               
    d07c:	e59d100c 	ldr	r1, [sp, #12]                                 
    d080:	e1a00007 	mov	r0, r7                                        
    d084:	ebffd32d 	bl	1d40 <__aeabi_uidiv>                           
static uint8_t                                                        
msdos_get_fat_type( const uint32_t bytes_per_sector,                  
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    d088:	e1a01008 	mov	r1, r8                                        
      finished = true;                                                
    }                                                                 
  } while (!finished);                                                
                                                                      
  *sectors_per_cluster_adj = sectors_per_cluster;                     
  *sectors_per_fat_ptr     = fat_sectors_cnt / fat_num;               
    d08c:	e58d0244 	str	r0, [sp, #580]	; 0x244                        
static uint8_t                                                        
msdos_get_fat_type( const uint32_t bytes_per_sector,                  
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    d090:	e59f0698 	ldr	r0, [pc, #1688]	; d730 <msdos_format+0xfec>   
                                                        fmt_params->sectors_per_cluster,
                                                        fmt_params->skip_alignment,
                                                        §ors_per_cluster_adj,
                                                        &fmt_params->sectors_per_fat,
                                                        &data_clusters_cnt);
        fmt_params->sectors_per_cluster = sectors_per_cluster_adj;    
    d094:	e58d4240 	str	r4, [sp, #576]	; 0x240                        
static uint8_t                                                        
msdos_get_fat_type( const uint32_t bytes_per_sector,                  
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    d098:	ebffd328 	bl	1d40 <__aeabi_uidiv>                           
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
    d09c:	e59f3690 	ldr	r3, [pc, #1680]	; d734 <msdos_format+0xff0>   
    d0a0:	e1500004 	cmp	r0, r4                                        
    d0a4:	33a00000 	movcc	r0, #0                                      
    d0a8:	23a00001 	movcs	r0, #1                                      
    d0ac:	e1560003 	cmp	r6, r3                                        
    d0b0:	83a00000 	movhi	r0, #0                                      
    d0b4:	e3500000 	cmp	r0, #0                                        
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
    fattype = FAT_FAT12;                                              
    d0b8:	13a04001 	movne	r4, #1                                      
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
    d0bc:	1a00000b 	bne	d0f0 <msdos_format+0x9ac>                     
                    const uint32_t sectors_per_cluster,               
                    const uint32_t number_of_clusters )               
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    d0c0:	e59f0670 	ldr	r0, [pc, #1648]	; d738 <msdos_format+0xff4>   
    d0c4:	e1a01008 	mov	r1, r8                                        
    d0c8:	ebffd31c 	bl	1d40 <__aeabi_uidiv>                           
                                                                      
  if (   number_of_clusters < FAT_FAT12_MAX_CLN                       
      && sectors_per_cluster <= ms_sectors_per_cluster_limit_FAT12 ) {
    fattype = FAT_FAT12;                                              
  }                                                                   
  else if (   number_of_clusters < FAT_FAT16_MAX_CLN                  
    d0cc:	e59f3668 	ldr	r3, [pc, #1640]	; d73c <msdos_format+0xff8>   
    d0d0:	e1500004 	cmp	r0, r4                                        
    d0d4:	33a04000 	movcc	r4, #0                                      
    d0d8:	23a04001 	movcs	r4, #1                                      
    d0dc:	e1560003 	cmp	r6, r3                                        
    d0e0:	83a04000 	movhi	r4, #0                                      
{                                                                     
  uint32_t ms_sectors_per_cluster_limit_FAT12 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT_FAT12 +1 ) / bytes_per_sector;       
  uint32_t ms_sectors_per_cluster_limit_FAT16 =                       
    ( MS_BYTES_PER_CLUSTER_LIMIT +1 ) / bytes_per_sector;             
  uint8_t fattype = FAT_FAT32;                                        
    d0e4:	e3540000 	cmp	r4, #0                                        
    d0e8:	13a04002 	movne	r4, #2                                      
    d0ec:	03a04004 	moveq	r4, #4                                      
          fmt_params->fattype = msdos_get_fat_type(                   
            fmt_params->bytes_per_sector,                             
            fmt_params->sectors_per_cluster,                          
            data_clusters_cnt );                                      
          /* Correct sectors per cluster to the fat type specific default value */
          if (fat_type != fmt_params->fattype) {                      
    d0f0:	e1550004 	cmp	r5, r4                                        
        fmt_params->sectors_per_cluster = sectors_per_cluster_adj;    
        fat_type = fmt_params->fattype;                               
                                                                      
        /* Correct the FAT type according to the new data cluster count */
        if ( ret_val == 0 ) {                                         
          fmt_params->fattype = msdos_get_fat_type(                   
    d0f4:	e5cd4266 	strb	r4, [sp, #614]	; 0x266                       
            fmt_params->bytes_per_sector,                             
            fmt_params->sectors_per_cluster,                          
            data_clusters_cnt );                                      
          /* Correct sectors per cluster to the fat type specific default value */
          if (fat_type != fmt_params->fattype) {                      
    d0f8:	0a000116 	beq	d558 <msdos_format+0xe14>                     
static void                                                           
msdos_set_default_sectors_per_cluster_for_fattype(                    
  msdos_format_param_t *fmt_params,                                   
  const uint64_t        total_size )                                  
{                                                                     
  if (   fmt_params->fattype == FAT_FAT12                             
    d0fc:	e2444001 	sub	r4, r4, #1                                    
    d100:	e3540001 	cmp	r4, #1                                        
      || fmt_params->fattype == FAT_FAT16 ) {                         
    /* start trying with small clusters */                            
    fmt_params->sectors_per_cluster = 2;                              
    d104:	93a03002 	movls	r3, #2                                      
    d108:	958d3240 	strls	r3, [sp, #576]	; 0x240                      
static void                                                           
msdos_set_default_sectors_per_cluster_for_fattype(                    
  msdos_format_param_t *fmt_params,                                   
  const uint64_t        total_size )                                  
{                                                                     
  if (   fmt_params->fattype == FAT_FAT12                             
    d10c:	9a000009 	bls	d138 <msdos_format+0x9f4>                     
    d110:	e3a0301f 	mov	r3, #31                                       
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    int b;                                                            
    /* scale with the size of disk... */                              
    for ( b = 31; b > 0; b-- ) {                                      
      if ( (gigs & ( 1 << b) ) != 0 )                                 
    d114:	e3a01001 	mov	r1, #1                                        
    d118:	e59d0030 	ldr	r0, [sp, #48]	; 0x30                          
    d11c:	ea000001 	b	d128 <msdos_format+0x9e4>                       
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    int b;                                                            
    /* scale with the size of disk... */                              
    for ( b = 31; b > 0; b-- ) {                                      
    d120:	e2533001 	subs	r3, r3, #1                                   
    d124:	0a000105 	beq	d540 <msdos_format+0xdfc>                     
      if ( (gigs & ( 1 << b) ) != 0 )                                 
    d128:	e1a02311 	lsl	r2, r1, r3                                    
    d12c:	e1120000 	tst	r2, r0                                        
    d130:	0afffffa 	beq	d120 <msdos_format+0x9dc>                     
        break;                                                        
    }                                                                 
    fmt_params->sectors_per_cluster = 1 << b;                         
    d134:	e58d2240 	str	r2, [sp, #576]	; 0x240                        
            data_clusters_cnt );                                      
          /* Correct sectors per cluster to the fat type specific default value */
          if (fat_type != fmt_params->fattype) {                      
            msdos_set_default_sectors_per_cluster_for_fattype( fmt_params,
                                                               total_size );
            ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
    d138:	e28d1f8d 	add	r1, sp, #564	; 0x234                          
    d13c:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          
    d140:	ebfffd60 	bl	c6c8 <msdos_set_sectors_per_cluster_from_request>
                                                                  fmt_params );
          }                                                           
        }                                                             
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {   
    d144:	e59d3018 	ldr	r3, [sp, #24]                                 
    d148:	e5dd2266 	ldrb	r2, [sp, #614]	; 0x266                       
          --fmt_params->totl_sector_cnt;                              
    d14c:	e59d9238 	ldr	r9, [sp, #568]	; 0x238                        
        }                                                             
                                                                      
      }                                                               
                                                                      
      ++iteration_cnt;                                                
    d150:	e59d1018 	ldr	r1, [sp, #24]                                 
                                                               total_size );
            ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
                                                                  fmt_params );
          }                                                           
        }                                                             
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {   
    d154:	e1520005 	cmp	r2, r5                                        
    d158:	13530001 	cmpne	r3, #1                                      
          --fmt_params->totl_sector_cnt;                              
    d15c:	82499001 	subhi	r9, r9, #1                                  
        }                                                             
                                                                      
      }                                                               
                                                                      
      ++iteration_cnt;                                                
    d160:	e2813001 	add	r3, r1, #1                                    
            ret_val = msdos_set_sectors_per_cluster_from_request( rqdata,
                                                                  fmt_params );
          }                                                           
        }                                                             
        if (fat_type != fmt_params->fattype && 1 < iteration_cnt) {   
          --fmt_params->totl_sector_cnt;                              
    d164:	858d9238 	strhi	r9, [sp, #568]	; 0x238                      
        }                                                             
                                                                      
      }                                                               
                                                                      
      ++iteration_cnt;                                                
    d168:	e20330ff 	and	r3, r3, #255	; 0xff                           
    if (ret_val == 0) {                                               
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
    d16c:	e3500000 	cmp	r0, #0                                        
          --fmt_params->totl_sector_cnt;                              
        }                                                             
                                                                      
      }                                                               
                                                                      
      ++iteration_cnt;                                                
    d170:	e58d3018 	str	r3, [sp, #24]                                 
    if (ret_val == 0) {                                               
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
    d174:	1a0000f3 	bne	d548 <msdos_format+0xe04>                     
          && fmt_params->fattype != fat_type                          
    d178:	e1520005 	cmp	r2, r5                                        
    d17c:	0a0000f5 	beq	d558 <msdos_format+0xe14>                     
          && fmt_params->totl_sector_cnt > 0 ) {                      
    d180:	e3590000 	cmp	r9, #0                                        
    d184:	1affff58 	bne	ceec <msdos_format+0x7a8>                     
    d188:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    d18c:	e59d4024 	ldr	r4, [sp, #36]	; 0x24                          <== NOT EXECUTED
      ++iteration_cnt;                                                
    }                                                                 
  }                                                                   
  if ( fmt_params->totl_sector_cnt == 0 )                             
  {                                                                   
    errno = EINVAL;                                                   
    d190:	eb0031c7 	bl	198b4 <__errno>                                <== NOT EXECUTED
    d194:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    d198:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    ret_val = -1;                                                     
    d19c:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
  }                                                                   
  /*                                                                  
   * determine location and size of root directory                    
   * for formatting                                                   
   */                                                                 
  if (fmt_params->root_dir_sectors > 0) {                             
    d1a0:	e59d3250 	ldr	r3, [sp, #592]	; 0x250                        
    d1a4:	e3530000 	cmp	r3, #0                                        
                                                                      
  /*                                                                  
   * determine media code                                             
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata != NULL) &&                                           
    d1a8:	e59d723c 	ldr	r7, [sp, #572]	; 0x23c                        
    }                                                                 
  }                                                                   
  if ( fmt_params->totl_sector_cnt == 0 )                             
  {                                                                   
    errno = EINVAL;                                                   
    ret_val = -1;                                                     
    d1ac:	e3a08000 	mov	r8, #0                                        
  }                                                                   
  /*                                                                  
   * determine location and size of root directory                    
   * for formatting                                                   
   */                                                                 
  if (fmt_params->root_dir_sectors > 0) {                             
    d1b0:	1afffdd1 	bne	c8fc <msdos_format+0x1b8>                     
    /*                                                                
     * for FAT32: root directory is in cluster 2                      
     */                                                               
    fmt_params->root_dir_start_sec =                                  
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
    d1b4:	e5dd3264 	ldrb	r3, [sp, #612]	; 0x264                       
    d1b8:	e59d2244 	ldr	r2, [sp, #580]	; 0x244                        
    d1bc:	e0277392 	mla	r7, r2, r3, r7                                
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
    d1c0:	e59d3240 	ldr	r3, [sp, #576]	; 0x240                        
  }                                                                   
  else {                                                              
    /*                                                                
     * for FAT32: root directory is in cluster 2                      
     */                                                               
    fmt_params->root_dir_start_sec =                                  
    d1c4:	e58d7254 	str	r7, [sp, #596]	; 0x254                        
      fmt_params->rsvd_sector_cnt                                     
      + (fmt_params-> fat_num*fmt_params->sectors_per_fat);           
    fmt_params->root_dir_fmt_sec_cnt = fmt_params->sectors_per_cluster;
    d1c8:	e58d3258 	str	r3, [sp, #600]	; 0x258                        
    d1cc:	eafffdcf 	b	c910 <msdos_format+0x1cc>                       
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
    d1d0:	e59f1568 	ldr	r1, [pc, #1384]	; d740 <msdos_format+0xffc>   
    d1d4:	e1560001 	cmp	r6, r1                                        
      sectors_per_cluster *= 2;                                       
    d1d8:	81a04084 	lslhi	r4, r4, #1                                  
    d1dc:	83a03000 	movhi	r3, #0                                      
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
    d1e0:	9affffa1 	bls	d06c <msdos_format+0x928>                     
     */                                                               
    if (fattype == FAT_FAT12) {                                       
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
        finished = true;                                              
      }                                                               
    } else if ((sectors_per_cluster * bytes_per_sector)               
    d1e4:	e0020498 	mul	r2, r8, r4                                    
    d1e8:	e3520902 	cmp	r2, #32768	; 0x8000                           
    d1ec:	8affffa2 	bhi	d07c <msdos_format+0x938>                     
	> MS_BYTES_PER_CLUSTER_LIMIT) {                                      
      finished = true;                                                
    }                                                                 
  } while (!finished);                                                
    d1f0:	e3530000 	cmp	r3, #0                                        
    d1f4:	0affff7b 	beq	cfe8 <msdos_format+0x8a4>                     
    d1f8:	eaffff9f 	b	d07c <msdos_format+0x938>                       
			  + (sectors_per_cluster - 1))                                     
			 / sectors_per_cluster));                                          
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
    d1fc:	e59f0540 	ldr	r0, [pc, #1344]	; d744 <msdos_format+0x1000>  
    d200:	e1560000 	cmp	r6, r0                                        
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
      sectors_per_cluster *= 2;                                       
    }                                                                 
    else {                                                            
      finished = true;                                                
    d204:	91a03005 	movls	r3, r5                                      
    /*                                                                
     * data cluster count too big? Then make clusters bigger          
     */                                                               
    if (((fattype == FAT_FAT12) && (*data_cluster_cnt > FAT_FAT12_MAX_CLN)) ||
        ((fattype == FAT_FAT16) && (*data_cluster_cnt > FAT_FAT16_MAX_CLN))) {
      sectors_per_cluster *= 2;                                       
    d208:	81a04084 	lslhi	r4, r4, #1                                  
    d20c:	83a03000 	movhi	r3, #0                                      
    }                                                                 
    /*                                                                
     * when maximum cluster size is exceeded, we have invalid data, abort...
     */                                                               
    if (fattype == FAT_FAT12) {                                       
      if (MS_BYTES_PER_CLUSTER_LIMIT_FAT12 < (sectors_per_cluster * bytes_per_sector)) {
    d210:	e0020498 	mul	r2, r8, r4                                    
    d214:	e3520a01 	cmp	r2, #4096	; 0x1000                            
    d218:	8affff97 	bhi	d07c <msdos_format+0x938>                     
      }                                                               
    } else if ((sectors_per_cluster * bytes_per_sector)               
	> MS_BYTES_PER_CLUSTER_LIMIT) {                                      
      finished = true;                                                
    }                                                                 
  } while (!finished);                                                
    d21c:	e3530000 	cmp	r3, #0                                        
    d220:	0affff70 	beq	cfe8 <msdos_format+0x8a4>                     
    d224:	eaffff94 	b	d07c <msdos_format+0x938>                       
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    d228:	e35a0000 	cmp	sl, #0                                        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    d22c:	059d2028 	ldreq	r2, [sp, #40]	; 0x28                        
  else                                                                
    return sectors;                                                   
    d230:	159d3014 	ldrne	r3, [sp, #20]                               
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    d234:	00823004 	addeq	r3, r2, r4                                  
    d238:	02642000 	rsbeq	r2, r4, #0                                  
    d23c:	00023003 	andeq	r3, r2, r3                                  
    fatdata_sect_cnt = total_sector_cnt                               
      - loc_align_object (rsvd_sector_cnt, sectors_per_cluster, skip_alignment);
    if (fattype == FAT_FAT12) {                                       
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
    d240:	e0630000 	rsb	r0, r3, r0                                    
    d244:	e1a01004 	mov	r1, r4                                        
    d248:	ebffd2bc 	bl	1d40 <__aeabi_uidiv>                           
    d24c:	e1a06000 	mov	r6, r0                                        
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
    d250:	e0800080 	add	r0, r0, r0, lsl #1                            
    d254:	e1a000a0 	lsr	r0, r0, #1                                    
    d258:	eaffff71 	b	d024 <msdos_format+0x8e0>                       
static uint32_t                                                       
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    d25c:	e35a0000 	cmp	sl, #0                                        
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    d260:	059d2028 	ldreq	r2, [sp, #40]	; 0x28                        
  else                                                                
    return sectors;                                                   
    d264:	159d3014 	ldrne	r3, [sp, #20]                               
 loc_align_object (const uint32_t sectors,                            
                   const uint32_t clustersize,                        
                   const bool     skip_alignment)                     
{                                                                     
  if (! skip_alignment)                                               
    return (sectors + clustersize - 1) & ~(clustersize - 1);          
    d268:	00823004 	addeq	r3, r2, r4                                  
    d26c:	02642000 	rsbeq	r2, r4, #0                                  
    d270:	00023003 	andeq	r3, r2, r3                                  
      fat_capacity        = fatdata_cluster_cnt * 3 / 2;              
    }                                                                 
    else if (fattype == FAT_FAT16) {                                  
      fatdata_sect_cnt    = fatdata_sect_cnt                          
        - loc_align_object (root_dir_sector_cnt, sectors_per_cluster, skip_alignment);
      fatdata_cluster_cnt = fatdata_sect_cnt/sectors_per_cluster;     
    d274:	e0630000 	rsb	r0, r3, r0                                    
    d278:	e1a01004 	mov	r1, r4                                        
    d27c:	ebffd2af 	bl	1d40 <__aeabi_uidiv>                           
    d280:	e1a06000 	mov	r6, r0                                        
      fat_capacity        = fatdata_cluster_cnt * 2;                  
    d284:	e1a00080 	lsl	r0, r0, #1                                    
    d288:	eaffff65 	b	d024 <msdos_format+0x8e0>                       
          /* recommended: for FAT32, always set reserved sector count to 32 */
          fmt_params->rsvd_sector_cnt = 32;                           
          /* for FAT32, always set files per root directory 0 */      
          fmt_params->files_per_root_dir = 0;                         
          /* location of copy of MBR */                               
          fmt_params->mbr_copy_sec = 6;                               
    d28c:	e3a02006 	mov	r2, #6                                        
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
                             "sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
                                                                      
        if (fmt_params->fattype == FAT_FAT32) {                       
          /* recommended: for FAT32, always set reserved sector count to 32 */
          fmt_params->rsvd_sector_cnt = 32;                           
    d290:	e3a03020 	mov	r3, #32                                       
          /* for FAT32, always set files per root directory 0 */      
          fmt_params->files_per_root_dir = 0;                         
    d294:	e3a00000 	mov	r0, #0                                        
          /* location of copy of MBR */                               
          fmt_params->mbr_copy_sec = 6;                               
    d298:	e58d225c 	str	r2, [sp, #604]	; 0x25c                        
          /* location of fsinfo sector */                             
          fmt_params->fsinfo_sec = 1;                                 
    d29c:	e3a02001 	mov	r2, #1                                        
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,     
                             "sectors per cluster: %d\n", fmt_params->sectors_per_cluster);
                                                                      
        if (fmt_params->fattype == FAT_FAT32) {                       
          /* recommended: for FAT32, always set reserved sector count to 32 */
          fmt_params->rsvd_sector_cnt = 32;                           
    d2a0:	e58d323c 	str	r3, [sp, #572]	; 0x23c                        
          /* for FAT32, always set files per root directory 0 */      
          fmt_params->files_per_root_dir = 0;                         
    d2a4:	e58d024c 	str	r0, [sp, #588]	; 0x24c                        
          /* location of copy of MBR */                               
          fmt_params->mbr_copy_sec = 6;                               
          /* location of fsinfo sector */                             
          fmt_params->fsinfo_sec = 1;                                 
    d2a8:	e58d2260 	str	r2, [sp, #608]	; 0x260                        
    d2ac:	e59d8234 	ldr	r8, [sp, #564]	; 0x234                        
    d2b0:	e58d3010 	str	r3, [sp, #16]                                 
    d2b4:	eaffff31 	b	cf80 <msdos_format+0x83c>                       
      else {                                                          
	fmt_params->media_code = rqdata->media;                              
      }                                                               
    }                                                                 
    else {                                                            
      fmt_params->media_code = FAT_BR_MEDIA_FIXED;                    
    d2b8:	e59d0020 	ldr	r0, [sp, #32]                                 
    d2bc:	e3e03007 	mvn	r3, #7                                        
    d2c0:	e5cd3265 	strb	r3, [sp, #613]	; 0x265                       
    d2c4:	e2008001 	and	r8, r0, #1                                    
    d2c8:	eafffd88 	b	c8f0 <msdos_format+0x1ac>                       
    if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
      fmt_params->fattype = FAT_FAT12;                                
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    }                                                                 
    else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {
    d2cc:	e0631603 	rsb	r1, r3, r3, lsl #12                           
    d2d0:	e0831101 	add	r1, r3, r1, lsl #2                            
    d2d4:	e0833101 	add	r3, r3, r1, lsl #2                            
    d2d8:	e1520003 	cmp	r2, r3                                        
      fmt_params->fattype = FAT_FAT16;                                
    d2dc:	33a03002 	movcc	r3, #2                                      
    d2e0:	35cd3266 	strbcc	r3, [sp, #614]	; 0x266                     
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    d2e4:	358d3240 	strcc	r3, [sp, #576]	; 0x240                      
    if (fmt_params->totl_sector_cnt < FAT_FAT12_MAX_CLN * fat12_sect_per_clust) {
      fmt_params->fattype = FAT_FAT12;                                
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    }                                                                 
    else if (fmt_params->totl_sector_cnt < FAT_FAT16_MAX_CLN * fat16_sect_per_clust) {
    d2e8:	3afffee7 	bcc	ce8c <msdos_format+0x748>                     
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    }                                                                 
    else {                                                            
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
    d2ec:	e3a02101 	mov	r2, #1073741824	; 0x40000000                  
    d2f0:	e0922008 	adds	r2, r2, r8                                   
    d2f4:	e3a03000 	mov	r3, #0                                        
    d2f8:	e0a33009 	adc	r3, r3, r9                                    
    d2fc:	e1a00f22 	lsr	r0, r2, #30                                   
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
    d300:	e3a02004 	mov	r2, #4                                        
      /* start trying with small clusters */                          
      fmt_params->sectors_per_cluster = 2;                            
    }                                                                 
    else {                                                            
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
    d304:	e1800103 	orr	r0, r0, r3, lsl #2                            
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
    d308:	e5cd2266 	strb	r2, [sp, #614]	; 0x266                       
      /* scale with the size of disk... */                            
      for (b = 31; b > 0; b--)                                        
    d30c:	e3a0301f 	mov	r3, #31                                       
        if ((gigs & (1 << b)) != 0)                                   
    d310:	e3a01001 	mov	r1, #1                                        
    d314:	ea000001 	b	d320 <msdos_format+0xbdc>                       
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
      /* scale with the size of disk... */                            
      for (b = 31; b > 0; b--)                                        
    d318:	e2533001 	subs	r3, r3, #1                                   
    d31c:	0a0000cd 	beq	d658 <msdos_format+0xf14>                     
        if ((gigs & (1 << b)) != 0)                                   
    d320:	e1a02311 	lsl	r2, r1, r3                                    
    d324:	e1120000 	tst	r2, r0                                        
    d328:	0afffffa 	beq	d318 <msdos_format+0xbd4>                     
          break;                                                      
      fmt_params->sectors_per_cluster = 1 << b;                       
    d32c:	e58d2240 	str	r2, [sp, #576]	; 0x240                        
    d330:	eafffed5 	b	ce8c <msdos_format+0x748>                       
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
    d334:	e35c0006 	cmp	ip, #6                                        
    d338:	8a000010 	bhi	d380 <msdos_format+0xc3c>                     
      fmt_params->fat_num = rqdata->fat_num;                          
    d33c:	e20cc0ff 	and	ip, ip, #255	; 0xff                           
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    d340:	e1a00004 	mov	r0, r4                                        
    d344:	e3a01002 	mov	r1, #2                                        
    d348:	e59f23d0 	ldr	r2, [pc, #976]	; d720 <msdos_format+0xfdc>    
    d34c:	e1a0300c 	mov	r3, ip                                        
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
      fmt_params->fat_num = rqdata->fat_num;                          
    d350:	e5cdc264 	strb	ip, [sp, #612]	; 0x264                       
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    d354:	ebfffc4b 	bl	c488 <msdos_format_printf>                     
    d358:	eafffebd 	b	ce54 <msdos_format+0x710>                       
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
    d35c:	e3a06000 	mov	r6, #0                                        
    d360:	e1a07423 	lsr	r7, r3, #8                                    
    d364:	e20330ff 	and	r3, r3, #255	; 0xff                           
    d368:	e58d300c 	str	r3, [sp, #12]                                 
    d36c:	e20770ff 	and	r7, r7, #255	; 0xff                           
    d370:	e58d6018 	str	r6, [sp, #24]                                 
    d374:	e58d6014 	str	r6, [sp, #20]                                 
    d378:	e58d6010 	str	r6, [sp, #16]                                 
    d37c:	eafffdcd 	b	cab8 <msdos_format+0x374>                       
    }                                                                 
    else if (rqdata->fat_num <= 6) {                                  
      fmt_params->fat_num = rqdata->fat_num;                          
    }                                                                 
    else {                                                            
      errno = EINVAL;                                                 
    d380:	eb00314b 	bl	198b4 <__errno>                                
    d384:	e3a03016 	mov	r3, #22                                       
    d388:	e5803000 	str	r3, [r0]                                      
      ret_val = -1;                                                   
    d38c:	e3e06000 	mvn	r6, #0                                        
    d390:	eafffd26 	b	c830 <msdos_format+0xec>                        
  }                                                                   
  /*                                                                  
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    d394:	e1a01006 	mov	r1, r6                                        
    d398:	e3a02c02 	mov	r2, #512	; 0x200                              
    d39c:	e28d0034 	add	r0, sp, #52	; 0x34                            
    d3a0:	eb003420 	bl	1a428 <memset>                                 
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
    d3a4:	e28d3e27 	add	r3, sp, #624	; 0x270                          
    d3a8:	e8930007 	ldm	r3, {r0, r1, r2}                              
    d3ac:	e28dc034 	add	ip, sp, #52	; 0x34                            
    d3b0:	e8ac0003 	stmia	ip!, {r0, r1}                               
    d3b4:	e0cc20b2 	strh	r2, [ip], #2                                 
    d3b8:	e1a0e822 	lsr	lr, r2, #16                                   
    d3bc:	e5cce000 	strb	lr, [ip]                                     
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
    ret_val = msdos_format_write_sec                                  
    d3c0:	e1a00005 	mov	r0, r5                                        
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
    d3c4:	e3a0c008 	mov	ip, #8                                        
    ret_val = msdos_format_write_sec                                  
    d3c8:	e59d1254 	ldr	r1, [sp, #596]	; 0x254                        
    d3cc:	e59d2234 	ldr	r2, [sp, #564]	; 0x234                        
    d3d0:	e28d3034 	add	r3, sp, #52	; 0x34                            
   * write volume label to first entry of directory                   
   */                                                                 
  if ((ret_val == 0) && fmt_params.VolLabel_present) {                
    memset(tmp_sec,0,sizeof(tmp_sec));                                
    memcpy(MSDOS_DIR_NAME(tmp_sec),fmt_params.VolLabel,MSDOS_SHORT_NAME_LEN);
    *MSDOS_DIR_ATTR(tmp_sec) = MSDOS_ATTR_VOLUME_ID;                  
    d3d4:	e5cdc03f 	strb	ip, [sp, #63]	; 0x3f                         
    ret_val = msdos_format_write_sec                                  
    d3d8:	ebfffc41 	bl	c4e4 <msdos_format_write_sec>                  
  /*                                                                  
   * write FAT entry 0 as (0xffffff00|Media_type)EOC,                 
   * write FAT entry 1 as EOC                                         
   * allocate directory in a FAT32 FS                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    d3dc:	e3500000 	cmp	r0, #0                                        
    d3e0:	0afffe34 	beq	ccb8 <msdos_format+0x574>                     
         fmt_params.bytes_per_sector,                                 
         tmp_sec);                                                    
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0 && rqdata != NULL && rqdata->sync_device) {        
    d3e4:	e1a06000 	mov	r6, r0                                        
    d3e8:	eafffd00 	b	c7f0 <msdos_format+0xac>                        
\*=========================================================================*/
{                                                                     
  /*                                                                  
   * clear fsinfo sector data                                         
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
    d3ec:	e3a01000 	mov	r1, #0                                        
    d3f0:	e3a02c02 	mov	r2, #512	; 0x200                              
    d3f4:	e28d0034 	add	r0, sp, #52	; 0x34                            
    d3f8:	eb00340a 	bl	1a428 <memset>                                 
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
    d3fc:	e3a0e052 	mov	lr, #82	; 0x52                                
    d400:	e5cde034 	strb	lr, [sp, #52]	; 0x34                         
    d404:	e5cde035 	strb	lr, [sp, #53]	; 0x35                         
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
    d408:	e3a0e055 	mov	lr, #85	; 0x55                                
  /*                                                                  
   * write "empty" values for free cluster count and next cluster number
   */                                                                 
  FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO,              
    d40c:	e3e0c000 	mvn	ip, #0                                        
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
    d410:	e3a0a061 	mov	sl, #97	; 0x61                                
    d414:	e3a08041 	mov	r8, #65	; 0x41                                
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
    d418:	e3a07072 	mov	r7, #114	; 0x72                               
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
    d41c:	e1a01006 	mov	r1, r6                                        
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
    d420:	e5cde232 	strb	lr, [sp, #562]	; 0x232                       
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
    d424:	e1a00005 	mov	r0, r5                                        
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
    d428:	e3e0e055 	mvn	lr, #85	; 0x55                                
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
    d42c:	e59d2234 	ldr	r2, [sp, #564]	; 0x234                        
    d430:	e28d3034 	add	r3, sp, #52	; 0x34                            
   */                                                                 
  memset(fsinfo,0,FAT_TOTAL_FSINFO_SIZE);                             
  /*                                                                  
   * write LEADSIG, STRUCTSIG, TRAILSIG                               
   */                                                                 
  FAT_SET_FSINFO_LEAD_SIGNATURE (fsinfo,FAT_FSINFO_LEAD_SIGNATURE_VALUE );
    d434:	e5cda036 	strb	sl, [sp, #54]	; 0x36                         
    d438:	e5cd8037 	strb	r8, [sp, #55]	; 0x37                         
  FAT_SET_FSINFO_STRUC_SIGNATURE(fsinfo,FAT_FSINFO_STRUC_SIGNATURE_VALUE);
    d43c:	e5cd7218 	strb	r7, [sp, #536]	; 0x218                       
    d440:	e5cd7219 	strb	r7, [sp, #537]	; 0x219                       
    d444:	e5cd821a 	strb	r8, [sp, #538]	; 0x21a                       
    d448:	e5cda21b 	strb	sl, [sp, #539]	; 0x21b                       
  FAT_SET_FSINFO_TRAIL_SIGNATURE(fsinfo,FAT_FSINFO_TRAIL_SIGNATURE_VALUE);
    d44c:	e5cde233 	strb	lr, [sp, #563]	; 0x233                       
  /*                                                                  
   * write "empty" values for free cluster count and next cluster number
   */                                                                 
  FAT_SET_FSINFO_FREE_CLUSTER_COUNT(fsinfo+FAT_FSI_INFO,              
    d450:	e5cdc21c 	strb	ip, [sp, #540]	; 0x21c                       
    d454:	e5cdc21d 	strb	ip, [sp, #541]	; 0x21d                       
    d458:	e5cdc21e 	strb	ip, [sp, #542]	; 0x21e                       
    d45c:	e5cdc21f 	strb	ip, [sp, #543]	; 0x21f                       
				    0xffffffff);                                                  
  FAT_SET_FSINFO_NEXT_FREE_CLUSTER (fsinfo+FAT_FSI_INFO,              
    d460:	e5cdc220 	strb	ip, [sp, #544]	; 0x220                       
    d464:	e5cdc221 	strb	ip, [sp, #545]	; 0x221                       
    d468:	e5cdc222 	strb	ip, [sp, #546]	; 0x222                       
    d46c:	e5cdc223 	strb	ip, [sp, #547]	; 0x223                       
  /*                                                                  
   * write fsinfo sector                                              
   */                                                                 
  if ((ret_val == 0) &&                                               
      (fmt_params.fsinfo_sec != 0)) {                                 
    ret_val = msdos_format_write_sec(fd,                              
    d470:	ebfffc1b 	bl	c4e4 <msdos_format_write_sec>                  
  }                                                                   
  /*                                                                  
   * write FAT as all empty                                           
   * -> write all FAT sectors as zero                                 
   */                                                                 
  if (ret_val == 0) {                                                 
    d474:	e2506000 	subs	r6, r0, #0                                   
    d478:	1afffcdc 	bne	c7f0 <msdos_format+0xac>                      
    d47c:	eafffdf3 	b	cc50 <msdos_format+0x50c>                       
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
    d480:	e5dd1265 	ldrb	r1, [sp, #613]	; 0x265                       
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
    d484:	e5dd3264 	ldrb	r3, [sp, #612]	; 0x264                       
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
    d488:	e3e02000 	mvn	r2, #0                                        
    d48c:	e5cd1034 	strb	r1, [sp, #52]	; 0x34                         
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
    d490:	e3e01007 	mvn	r1, #7                                        
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
      break;                                                          
                                                                      
    case FAT_FAT32:                                                   
      /* FAT entry 0: 0xffffff00|media_type */                        
      FAT_SET_VAL32(tmp_sec,0,0xffffff00|fmt_params.media_code);      
    d494:	e5cd2035 	strb	r2, [sp, #53]	; 0x35                         
    d498:	e5cd2036 	strb	r2, [sp, #54]	; 0x36                         
    d49c:	e5cd2037 	strb	r2, [sp, #55]	; 0x37                         
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
    d4a0:	e5cd2039 	strb	r2, [sp, #57]	; 0x39                         
    d4a4:	e5cd203a 	strb	r2, [sp, #58]	; 0x3a                         
    d4a8:	e2933000 	adds	r3, r3, #0                                   
    d4ac:	e3a0200f 	mov	r2, #15                                       
    d4b0:	e5cd1038 	strb	r1, [sp, #56]	; 0x38                         
    d4b4:	e5cd203b 	strb	r2, [sp, #59]	; 0x3b                         
    d4b8:	13a03001 	movne	r3, #1                                      
    d4bc:	e3a00000 	mov	r0, #0                                        
    d4c0:	e3a02001 	mov	r2, #1                                        
      /*                                                              
       * only first valid cluster (cluster number 2) belongs          
       * to root directory, and is end of chain                       
       * mark this in every copy of the FAT                           
       */                                                             
      FAT_SET_VAL32(tmp_sec,8,FAT_FAT32_EOC);                         
    d4c4:	e3e01000 	mvn	r1, #0                                        
    d4c8:	e3e0c007 	mvn	ip, #7                                        
    d4cc:	e5cd103d 	strb	r1, [sp, #61]	; 0x3d                         
    d4d0:	e5cd103e 	strb	r1, [sp, #62]	; 0x3e                         
    d4d4:	e3a0100f 	mov	r1, #15                                       
    d4d8:	e5cdc03c 	strb	ip, [sp, #60]	; 0x3c                         
    d4dc:	e5cd103f 	strb	r1, [sp, #63]	; 0x3f                         
    d4e0:	eafffe08 	b	cd08 <msdos_format+0x5c4>                       
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
      break;                                                          
                                                                      
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
    d4e4:	e5dd1265 	ldrb	r1, [sp, #613]	; 0x265                       
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
    d4e8:	e5dd3264 	ldrb	r3, [sp, #612]	; 0x264                       
      break;                                                          
                                                                      
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
    d4ec:	e3e02000 	mvn	r2, #0                                        
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
      break;                                                          
                                                                      
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
    d4f0:	e5cd1034 	strb	r1, [sp, #52]	; 0x34                         
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
    d4f4:	e3e01007 	mvn	r1, #7                                        
    d4f8:	e2933000 	adds	r3, r3, #0                                   
      break;                                                          
                                                                      
    case FAT_FAT16:                                                   
      /* FAT entry 0: 0xff00|media_type */                            
      FAT_SET_VAL8(tmp_sec,0,fmt_params.media_code);                  
      FAT_SET_VAL8(tmp_sec,1,0xff);                                   
    d4fc:	e5cd2035 	strb	r2, [sp, #53]	; 0x35                         
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL16(tmp_sec,2,FAT_FAT16_EOC);                         
    d500:	e5cd1036 	strb	r1, [sp, #54]	; 0x36                         
    d504:	e5cd2037 	strb	r2, [sp, #55]	; 0x37                         
    d508:	13a03001 	movne	r3, #1                                      
      /* FAT entry 1: EOC */                                          
      FAT_SET_VAL32(tmp_sec,4,FAT_FAT32_EOC);                         
      break;                                                          
                                                                      
    default:                                                          
      ret_val = -1;                                                   
    d50c:	e3a00000 	mov	r0, #0                                        
    d510:	e3a02001 	mov	r2, #1                                        
    d514:	eafffdfb 	b	cd08 <msdos_format+0x5c4>                       
    memset(tmp_sec,0,sizeof(tmp_sec));                                
                                                                      
    switch(fmt_params.fattype) {                                      
    case FAT_FAT12:                                                   
      /* LSBits of FAT entry 0: media_type */                         
      FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));                
    d518:	e5dd2265 	ldrb	r2, [sp, #613]	; 0x265                       
      /* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));          
      /* MSBits of FAT entry 1: MSBits of EOC */                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
    d51c:	e5dd3264 	ldrb	r3, [sp, #612]	; 0x264                       
    memset(tmp_sec,0,sizeof(tmp_sec));                                
                                                                      
    switch(fmt_params.fattype) {                                      
    case FAT_FAT12:                                                   
      /* LSBits of FAT entry 0: media_type */                         
      FAT_SET_VAL8(tmp_sec,0,(fmt_params.media_code));                
    d520:	e5cd2034 	strb	r2, [sp, #52]	; 0x34                         
      /* MSBits of FAT entry 0:0xf, LSBits of FAT entry 1: LSB of EOC */
      FAT_SET_VAL8(tmp_sec,1,(0x0f | (FAT_FAT12_EOC << 4)));          
    d524:	e3e02070 	mvn	r2, #112	; 0x70                               
    d528:	e5cd2035 	strb	r2, [sp, #53]	; 0x35                         
      /* MSBits of FAT entry 1: MSBits of EOC */                      
      FAT_SET_VAL8(tmp_sec,2,(FAT_FAT12_EOC >> 4));                   
    d52c:	e2933000 	adds	r3, r3, #0                                   
    d530:	e3e02000 	mvn	r2, #0                                        
    d534:	e5cd2036 	strb	r2, [sp, #54]	; 0x36                         
    d538:	13a03001 	movne	r3, #1                                      
      break;                                                          
    d53c:	eafffff2 	b	d50c <msdos_format+0xdc8>                       
  else {                                                              
    #define ONE_GB ( 1024L * 1024L * 1024L )                          
    uint32_t gigs = ( total_size + ONE_GB ) / ONE_GB;                 
    int b;                                                            
    /* scale with the size of disk... */                              
    for ( b = 31; b > 0; b-- ) {                                      
    d540:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    d544:	eafffefa 	b	d134 <msdos_format+0x9f0>                       <== NOT EXECUTED
    d548:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
    d54c:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    d550:	e59d4024 	ldr	r4, [sp, #36]	; 0x24                          <== NOT EXECUTED
    d554:	eafffcb9 	b	c840 <msdos_format+0xfc>                        <== NOT EXECUTED
    d558:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          
    d55c:	e59d4024 	ldr	r4, [sp, #36]	; 0x24                          
    d560:	e3a06000 	mov	r6, #0                                        
    d564:	eafffcb5 	b	c840 <msdos_format+0xfc>                        
  rc = rtems_clock_get_tod_timeval(&time_value);                      
  if (rc == RTEMS_SUCCESSFUL) {                                       
    *volid_ptr = time_value.tv_sec + time_value.tv_sec;               
  }                                                                   
  else {                                                              
    *volid_ptr = rand();                                              
    d568:	eb003635 	bl	1ae44 <rand>                                   
    d56c:	e58d0280 	str	r0, [sp, #640]	; 0x280                        
    d570:	eafffd1c 	b	c9e8 <msdos_format+0x2a4>                       
    if ((ret_val == 0) &&                                             
        (fmt_params.mbr_copy_sec != 0)) {                             
      /*                                                              
       * write copy of MBR                                            
       */                                                             
      msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,       
    d574:	e3a01002 	mov	r1, #2                                        
    d578:	e59f21c8 	ldr	r2, [pc, #456]	; d748 <msdos_format+0x1004>   
    d57c:	e1a00004 	mov	r0, r4                                        
    d580:	ebfffbc0 	bl	c488 <msdos_format_printf>                     
                           "write back up MRB sector\n");             
      ret_val = msdos_format_write_sec(fd,                            
    d584:	e1a00005 	mov	r0, r5                                        
    d588:	e59d125c 	ldr	r1, [sp, #604]	; 0x25c                        
    d58c:	e59d2234 	ldr	r2, [sp, #564]	; 0x234                        
    d590:	e28d3034 	add	r3, sp, #52	; 0x34                            
    d594:	ebfffbd2 	bl	c4e4 <msdos_format_write_sec>                  
    }                                                                 
  }                                                                   
  /*                                                                  
   * for FAT32: initialize info sector on disk                        
   */                                                                 
  if ((ret_val == 0) &&                                               
    d598:	e2506000 	subs	r6, r0, #0                                   
    d59c:	0afffda8 	beq	cc44 <msdos_format+0x500>                     
    d5a0:	eafffc92 	b	c7f0 <msdos_format+0xac>                        <== NOT EXECUTED
    ret_val = -1;                                                     
  }                                                                   
                                                                      
  if (0 == ret_val)                                                   
  {                                                                   
    if (FAT_FAT32 != fmt_params->fattype)                             
    d5a4:	e59d2240 	ldr	r2, [sp, #576]	; 0x240                        
    d5a8:	e5dd3284 	ldrb	r3, [sp, #644]	; 0x284                       
    d5ac:	eafffcb6 	b	c88c <msdos_format+0x148>                       
   */                                                                 
  if (ret_val == 0) {                                                 
      const char *from;                                               
      char        *to = fmt_params->VolLabel;                         
      int          cnt;                                               
      from = ""; /* default: make "from" point to empty string */     
    d5b0:	e59f0194 	ldr	r0, [pc, #404]	; d74c <msdos_format+0x1008>   
    d5b4:	eafffcf6 	b	c994 <msdos_format+0x250>                       
    }                                                                 
                                                                      
    start_sector = loc_align_object (fmt_params.rsvd_sector_cnt,      
                                     fmt_params.sectors_per_cluster,  
                                     fmt_params.skip_alignment);      
    for (i = 0;                                                       
    d5b8:	e59d1020 	ldr	r1, [sp, #32]                                 <== NOT EXECUTED
    d5bc:	e0022001 	and	r2, r2, r1                                    <== NOT EXECUTED
    d5c0:	eafffdee 	b	cd80 <msdos_format+0x63c>                       <== NOT EXECUTED
	   ? "FAT12   "                                                      
	   : "FAT16   ",                                                     
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    d5c4:	e59d3244 	ldr	r3, [sp, #580]	; 0x244                        
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
    d5c8:	e59dc25c 	ldr	ip, [sp, #604]	; 0x25c                        
	   ? "FAT12   "                                                      
	   : "FAT16   ",                                                     
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    d5cc:	e1a08423 	lsr	r8, r3, #8                                    
    d5d0:	e1a07823 	lsr	r7, r3, #16                                   
    d5d4:	e1a06c23 	lsr	r6, r3, #24                                   
    d5d8:	e5cd3058 	strb	r3, [sp, #88]	; 0x58                         
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    d5dc:	e3a03002 	mov	r3, #2                                        
    d5e0:	e5cd3060 	strb	r3, [sp, #96]	; 0x60                         
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    d5e4:	e3a03001 	mov	r3, #1                                        
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
    d5e8:	e1a0e42c 	lsr	lr, ip, #8                                    
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    d5ec:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
    d5f0:	e28d0086 	add	r0, sp, #134	; 0x86                           
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
                                                                      
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    d5f4:	e3a03029 	mov	r3, #41	; 0x29                                
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
    d5f8:	e59f1150 	ldr	r1, [pc, #336]	; d750 <msdos_format+0x100c>   
    d5fc:	e3a02008 	mov	r2, #8                                        
	   ? "FAT12   "                                                      
	   : "FAT16   ",                                                     
	   FAT_BR_FILSYSTYPE_SIZE);                                          
  }                                                                   
  else {                                                              
    FAT_SET_BR_SECTORS_PER_FAT32(mbr   ,fmt_params->sectors_per_fat); 
    d600:	e5cd8059 	strb	r8, [sp, #89]	; 0x59                         
    d604:	e5cd705a 	strb	r7, [sp, #90]	; 0x5a                         
    d608:	e5cd605b 	strb	r6, [sp, #91]	; 0x5b                         
    FAT_SET_BR_EXT_FLAGS(mbr           , 0);                          
    FAT_SET_BR_FSVER(mbr               , 0); /* FAT32 Version:0.0 */  
    FAT_SET_BR_FAT32_ROOT_CLUSTER(mbr  , 2); /* put root dir to cluster 2 */
    FAT_SET_BR_FAT32_FS_INFO_SECTOR(mbr, 1); /* Put fsinfo  to rsrvd sec 1*/
    FAT_SET_BR_FAT32_BK_BOOT_SECTOR(mbr, fmt_params->mbr_copy_sec ); /* Put MBR copy to rsrvd sec */
    d60c:	e5cdc066 	strb	ip, [sp, #102]	; 0x66                        
    d610:	e5cde067 	strb	lr, [sp, #103]	; 0x67                        
    memset(FAT_GET_ADDR_BR_FAT32_RESERVED(mbr),0,FAT_BR_FAT32_RESERVED_SIZE);
    d614:	e58da068 	str	sl, [sp, #104]	; 0x68                         
    d618:	e58da06c 	str	sl, [sp, #108]	; 0x6c                         
    d61c:	e58da070 	str	sl, [sp, #112]	; 0x70                         
                                                                      
    FAT_SET_BR_FAT32_DRVNUM(mbr      , 0); /* only needed for INT13... */
    FAT_SET_BR_FAT32_RSVD1(mbr       , 0); /* fill with zero */       
    FAT_SET_BR_FAT32_BOOTSIG(mbr     ,FAT_BR_FAT32_BOOTSIG_VAL);      
    d620:	e5cd3076 	strb	r3, [sp, #118]	; 0x76                        
    FAT_SET_BR_FAT32_VOLID(mbr       , 0); /* not set */              
    memset(FAT_GET_ADDR_BR_FAT32_VOLLAB(mbr)   ,0,FAT_BR_VOLLAB_SIZE);
    d624:	e5cda07b 	strb	sl, [sp, #123]	; 0x7b                        
    d628:	e5cda07c 	strb	sl, [sp, #124]	; 0x7c                        
    d62c:	e5cda07d 	strb	sl, [sp, #125]	; 0x7d                        
    d630:	e5cda07e 	strb	sl, [sp, #126]	; 0x7e                        
    d634:	e5cda07f 	strb	sl, [sp, #127]	; 0x7f                        
    d638:	e5cda080 	strb	sl, [sp, #128]	; 0x80                        
    d63c:	e5cda081 	strb	sl, [sp, #129]	; 0x81                        
    d640:	e5cda082 	strb	sl, [sp, #130]	; 0x82                        
    d644:	e5cda083 	strb	sl, [sp, #131]	; 0x83                        
    d648:	e5cda084 	strb	sl, [sp, #132]	; 0x84                        
    d64c:	e5cda085 	strb	sl, [sp, #133]	; 0x85                        
    memcpy(FAT_GET_ADDR_BR_FAT32_FILSYSTYPE(mbr),                     
    d650:	eb00333e 	bl	1a350 <memcpy>                                 
    d654:	eafffd62 	b	cbe4 <msdos_format+0x4a0>                       
      #define ONE_GB (1024L * 1024L * 1024L)                          
      uint32_t gigs = (total_size + ONE_GB) / ONE_GB;                 
      int b;                                                          
      fmt_params->fattype = FAT_FAT32;                                
      /* scale with the size of disk... */                            
      for (b = 31; b > 0; b--)                                        
    d658:	e3a02001 	mov	r2, #1                                        
        if ((gigs & (1 << b)) != 0)                                   
          break;                                                      
      fmt_params->sectors_per_cluster = 1 << b;                       
    d65c:	e58d2240 	str	r2, [sp, #576]	; 0x240                        
    d660:	eafffe09 	b	ce8c <msdos_format+0x748>                       
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    d664:	e3a0c002 	mov	ip, #2                                        
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    d668:	e1a0100c 	mov	r1, ip                                        
    d66c:	e1a0300c 	mov	r3, ip                                        
    d670:	e1a00004 	mov	r0, r4                                        
    d674:	e59f20a4 	ldr	r2, [pc, #164]	; d720 <msdos_format+0xfdc>    
   * determine number of FATs                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    if ((rqdata == NULL) ||                                           
	(rqdata->fat_num == 0)) {                                            
      fmt_params->fat_num = 2;                                        
    d678:	e5cdc264 	strb	ip, [sp, #612]	; 0x264                       
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val == 0)                                                   
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,         
    d67c:	ebfffb81 	bl	c488 <msdos_format_printf>                     
  /*                                                                  
   * determine FAT type and sectors per cluster                       
   * depends on                                                       
   */                                                                 
  if (ret_val == 0) {                                                 
    fmt_params->sectors_per_cluster = 1;                              
    d680:	e59f109c 	ldr	r1, [pc, #156]	; d724 <msdos_format+0xfe0>    
     * limiting values for disk size, fat type, sectors per cluster   
     * NOTE: maximum sect_per_clust is arbitrarily choosen with values that
     * are a compromise concerning capacity and efficency             
     */                                                               
    uint32_t fat12_sect_per_clust = 8;                                
    uint32_t fat16_sect_per_clust = 32;                               
    d684:	e3a03020 	mov	r3, #32                                       
    d688:	eafffdf8 	b	ce70 <msdos_format+0x72c>                       
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
          && fmt_params->totl_sector_cnt > 0 ) {                      
    d68c:	e2942000 	adds	r2, r4, #0                                   <== NOT EXECUTED
    d690:	13a02001 	movne	r2, #1                                      <== NOT EXECUTED
    d694:	e59d9238 	ldr	r9, [sp, #568]	; 0x238                        <== NOT EXECUTED
    d698:	e58d2020 	str	r2, [sp, #32]                                 <== NOT EXECUTED
    d69c:	eafffc67 	b	c840 <msdos_format+0xfc>                        <== NOT EXECUTED
      data_clusters_cnt =                                             
        fmt_params->totl_sector_cnt / fmt_params->sectors_per_cluster;
    }                                                                 
                                                                      
    while(   ret_val == 0                                             
          && fmt_params->fattype != fat_type                          
    d6a0:	e2942000 	adds	r2, r4, #0                                   <== NOT EXECUTED
    d6a4:	13a02001 	movne	r2, #1                                      <== NOT EXECUTED
    d6a8:	e58d2020 	str	r2, [sp, #32]                                 <== NOT EXECUTED
    d6ac:	e59d9238 	ldr	r9, [sp, #568]	; 0x238                        <== NOT EXECUTED
    d6b0:	eafffc62 	b	c840 <msdos_format+0xfc>                        <== NOT EXECUTED
{                                                                     
  uint32_t  total_sectors_num16 = 0;                                  
  uint32_t  total_sectors_num32 = 0;                                  
                                                                      
  /* store total sector count in either 16 or 32 bit field in mbr */  
  if (fmt_params->totl_sector_cnt < 0x10000) {                        
    d6b4:	e2940000 	adds	r0, r4, #0                                   <== NOT EXECUTED
    d6b8:	13a00001 	movne	r0, #1                                      <== NOT EXECUTED
    d6bc:	e58d0020 	str	r0, [sp, #32]                                 <== NOT EXECUTED
    d6c0:	eafffeb2 	b	d190 <msdos_format+0xa4c>                       <== NOT EXECUTED
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
		       rqdata->media,                                               
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
	errno = EINVAL;                                                      
    d6c4:	eb00307a 	bl	198b4 <__errno>                                
    d6c8:	e3a03016 	mov	r3, #22                                       
    d6cc:	e5803000 	str	r3, [r0]                                      
    d6d0:	e59d723c 	ldr	r7, [sp, #572]	; 0x23c                        
    d6d4:	e1a0800a 	mov	r8, sl                                        
      const char valid_media_codes[] =                                
	{0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF};                      
      if (NULL==memchr(valid_media_codes,                             
		       rqdata->media,                                               
		       sizeof(valid_media_codes))) {                                
	ret_val = -1;                                                        
    d6d8:	e3e06000 	mvn	r6, #0                                        
    d6dc:	eafffc83 	b	c8f0 <msdos_format+0x1ac>                       
                                                                      

0000c53c <msdos_format_fill_sectors>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
    c53c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    c540:	e24dd008 	sub	sp, sp, #8                                    
    c544:	e59db02c 	ldr	fp, [sp, #44]	; 0x2c                          
    c548:	e58d0004 	str	r0, [sp, #4]                                  
                                                                      
  /*                                                                  
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    c54c:	e1a0000b 	mov	r0, fp                                        
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
    c550:	e58d1000 	str	r1, [sp]                                      
    c554:	e1a04002 	mov	r4, r2                                        
    c558:	e1a0a003 	mov	sl, r3                                        
    c55c:	e5dd5030 	ldrb	r5, [sp, #48]	; 0x30                         
                                                                      
  /*                                                                  
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    c560:	ebffe0bf 	bl	4864 <malloc>                                  
    if (fill_buffer == NULL) {                                        
    c564:	e2509000 	subs	r9, r0, #0                                   
    c568:	0a000038 	beq	c650 <msdos_format_fill_sectors+0x114>        
      errno = ENOMEM;                                                 
      ret_val = -1;                                                   
    }                                                                 
    else {                                                            
      memset(fill_buffer,fill_byte,sector_size);                      
    c56c:	e1a01005 	mov	r1, r5                                        
    c570:	e1a0200b 	mov	r2, fp                                        
    c574:	eb0037ab 	bl	1a428 <memset>                                 
    }                                                                 
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
    c578:	e59d0004 	ldr	r0, [sp, #4]                                  
    c57c:	e3a01002 	mov	r1, #2                                        
    c580:	e59f2130 	ldr	r2, [pc, #304]	; c6b8 <msdos_format_fill_sectors+0x17c>
    c584:	ebffffbf 	bl	c488 <msdos_format_printf>                     
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
    c588:	e35a0000 	cmp	sl, #0                                        
    c58c:	0a000043 	beq	c6a0 <msdos_format_fill_sectors+0x164>        
    c590:	e08a610a 	add	r6, sl, sl, lsl #2                            
    c594:	e0866106 	add	r6, r6, r6, lsl #2                            
    c598:	e1a06106 	lsl	r6, r6, #2                                    
    c59c:	e1a0500a 	mov	r5, sl                                        
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
  char *fill_buffer = NULL;                                           
  uint32_t total_sectors = sector_cnt;                                
  int last_percent = -1;                                              
    c5a0:	e3e08000 	mvn	r8, #0                                        
    c5a4:	ea00000f 	b	c5e8 <msdos_format_fill_sectors+0xac>           
    if (percent != last_percent) {                                    
      if ((percent & 1) == 0)                                         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
      last_percent = percent;                                         
    }                                                                 
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    c5a8:	e1a01004 	mov	r1, r4                                        
    c5ac:	e1a03009 	mov	r3, r9                                        
    c5b0:	e59d0000 	ldr	r0, [sp]                                      
    c5b4:	e1a0200b 	mov	r2, fp                                        
    c5b8:	ebffffc9 	bl	c4e4 <msdos_format_write_sec>                  
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
	 (sector_cnt > 0)) {                                                 
    c5bc:	e2555001 	subs	r5, r5, #1                                   
    c5c0:	03a03000 	moveq	r3, #0                                      
    c5c4:	13a03001 	movne	r3, #1                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
    c5c8:	e3500000 	cmp	r0, #0                                        
    c5cc:	13a03000 	movne	r3, #0                                      
    c5d0:	02033001 	andeq	r3, r3, #1                                  
    c5d4:	e3530000 	cmp	r3, #0                                        
    c5d8:	e1a07000 	mov	r7, r0                                        
      if ((percent & 1) == 0)                                         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
      last_percent = percent;                                         
    }                                                                 
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    c5dc:	e2844001 	add	r4, r4, #1                                    
    sector_cnt--;                                                     
    c5e0:	e2466064 	sub	r6, r6, #100	; 0x64                           
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
                       "Filling : ");                                 
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
    c5e4:	0a00000e 	beq	c624 <msdos_format_fill_sectors+0xe8>         
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
    c5e8:	e1a0100a 	mov	r1, sl                                        
    c5ec:	e1a00006 	mov	r0, r6                                        
    c5f0:	ebffd5d2 	bl	1d40 <__aeabi_uidiv>                           
    if (percent != last_percent) {                                    
    c5f4:	e1500008 	cmp	r0, r8                                        
  /*                                                                  
   * write to consecutive sectors                                     
   */                                                                 
  while ((ret_val == 0) &&                                            
	 (sector_cnt > 0)) {                                                 
    int percent = (sector_cnt * 100) / total_sectors;                 
    c5f8:	e1a07000 	mov	r7, r0                                        
    if (percent != last_percent) {                                    
    c5fc:	0affffe9 	beq	c5a8 <msdos_format_fill_sectors+0x6c>         
      if ((percent & 1) == 0)                                         
    c600:	e3100001 	tst	r0, #1                                        
    c604:	11a08000 	movne	r8, r0                                      
    c608:	1affffe6 	bne	c5a8 <msdos_format_fill_sectors+0x6c>         
        msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, ".");
    c60c:	e59d0004 	ldr	r0, [sp, #4]                                  
    c610:	e3a01002 	mov	r1, #2                                        
    c614:	e59f20a0 	ldr	r2, [pc, #160]	; c6bc <msdos_format_fill_sectors+0x180>
    c618:	ebffff9a 	bl	c488 <msdos_format_printf>                     
    c61c:	e1a08007 	mov	r8, r7                                        
    c620:	eaffffe0 	b	c5a8 <msdos_format_fill_sectors+0x6c>           
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
    c624:	e59d0004 	ldr	r0, [sp, #4]                                  
    c628:	e3a01002 	mov	r1, #2                                        
    c62c:	e59f208c 	ldr	r2, [pc, #140]	; c6c0 <msdos_format_fill_sectors+0x184>
    c630:	ebffff94 	bl	c488 <msdos_format_printf>                     
                                                                      
  if (ret_val)                                                        
    c634:	e3570000 	cmp	r7, #0                                        
    c638:	1a000010 	bne	c680 <msdos_format_fill_sectors+0x144>        
                                                                      
  /*                                                                  
   * cleanup                                                          
   */                                                                 
  if (fill_buffer != NULL) {                                          
    free(fill_buffer);                                                
    c63c:	e1a00009 	mov	r0, r9                                        
    c640:	ebffdf45 	bl	435c <free>                                    
    fill_buffer = NULL;                                               
  }                                                                   
  return ret_val;                                                     
}                                                                     
    c644:	e1a00007 	mov	r0, r7                                        
    c648:	e28dd008 	add	sp, sp, #8                                    
    c64c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
   * allocate and fill buffer                                         
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    if (fill_buffer == NULL) {                                        
      errno = ENOMEM;                                                 
    c650:	eb003497 	bl	198b4 <__errno>                                <== NOT EXECUTED
    c654:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
    c658:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    else {                                                            
      memset(fill_buffer,fill_byte,sector_size);                      
    }                                                                 
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL,           
    c65c:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    c660:	e59f2050 	ldr	r2, [pc, #80]	; c6b8 <msdos_format_fill_sectors+0x17c><== NOT EXECUTED
    c664:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
    c668:	ebffff86 	bl	c488 <msdos_format_printf>                     <== NOT EXECUTED
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
    c66c:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
    c670:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    c674:	e59f2044 	ldr	r2, [pc, #68]	; c6c0 <msdos_format_fill_sectors+0x184><== NOT EXECUTED
    c678:	ebffff82 	bl	c488 <msdos_format_printf>                     <== NOT EXECUTED
   */                                                                 
  if (ret_val == 0) {                                                 
    fill_buffer = malloc(sector_size);                                
    if (fill_buffer == NULL) {                                        
      errno = ENOMEM;                                                 
      ret_val = -1;                                                   
    c67c:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
                                                                      
  if (ret_val)                                                        
    msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_INFO,           
    c680:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
    c684:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
    c688:	e59f2034 	ldr	r2, [pc, #52]	; c6c4 <msdos_format_fill_sectors+0x188><== NOT EXECUTED
    c68c:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
    c690:	ebffff7c 	bl	c488 <msdos_format_printf>                     <== NOT EXECUTED
                         "filling error on sector: %d\n", start_sector);
                                                                      
  /*                                                                  
   * cleanup                                                          
   */                                                                 
  if (fill_buffer != NULL) {                                          
    c694:	e3590000 	cmp	r9, #0                                        <== NOT EXECUTED
    c698:	0affffe9 	beq	c644 <msdos_format_fill_sectors+0x108>        <== NOT EXECUTED
    c69c:	eaffffe6 	b	c63c <msdos_format_fill_sectors+0x100>          <== NOT EXECUTED
    ret_val = msdos_format_write_sec(fd,start_sector,sector_size,fill_buffer);
    start_sector++;                                                   
    sector_cnt--;                                                     
  }                                                                   
                                                                      
  msdos_format_printf (rqdata, MSDOS_FMT_INFO_LEVEL_DETAIL, "\n");    
    c6a0:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
    c6a4:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    c6a8:	e59f2010 	ldr	r2, [pc, #16]	; c6c0 <msdos_format_fill_sectors+0x184><== NOT EXECUTED
    c6ac:	ebffff75 	bl	c488 <msdos_format_printf>                     <== NOT EXECUTED
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
    c6b0:	e1a0700a 	mov	r7, sl                                        <== NOT EXECUTED
    c6b4:	eaffffe0 	b	c63c <msdos_format_fill_sectors+0x100>          <== NOT EXECUTED
                                                                      

0000c488 <msdos_format_printf>: */ static void msdos_format_printf (const msdos_format_request_param_t *rqdata, int info_level, const char *format, ...) {
    c488:	e92d000c 	push	{r2, r3}                                     
    c48c:	e92d4010 	push	{r4, lr}                                     
    c490:	e24dd004 	sub	sp, sp, #4                                    
  va_list args;                                                       
  va_start (args, format);                                            
    c494:	e28d2010 	add	r2, sp, #16                                   
  if (rqdata != NULL && rqdata->info_level >= info_level)             
    c498:	e3500000 	cmp	r0, #0                                        
msdos_format_printf (const msdos_format_request_param_t *rqdata,      
                     int                                 info_level,  
                     const char                         *format, ...) 
{                                                                     
  va_list args;                                                       
  va_start (args, format);                                            
    c49c:	e58d2000 	str	r2, [sp]                                      
  if (rqdata != NULL && rqdata->info_level >= info_level)             
    c4a0:	0a00000a 	beq	c4d0 <msdos_format_printf+0x48>               
    c4a4:	e5903018 	ldr	r3, [r0, #24]                                 
    c4a8:	e1530001 	cmp	r3, r1                                        
    c4ac:	ba000007 	blt	c4d0 <msdos_format_printf+0x48>               
  {                                                                   
    vfprintf (stdout, format, args);                                  
    c4b0:	e59f4028 	ldr	r4, [pc, #40]	; c4e0 <msdos_format_printf+0x58><== NOT EXECUTED
    c4b4:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    c4b8:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
    c4bc:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    c4c0:	eb005857 	bl	22624 <vfprintf>                               <== NOT EXECUTED
    fflush (stdout);                                                  
    c4c4:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    c4c8:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    c4cc:	eb0035f5 	bl	19ca8 <fflush>                                 <== NOT EXECUTED
  }                                                                   
  va_end (args);                                                      
}                                                                     
    c4d0:	e28dd004 	add	sp, sp, #4                                    
    c4d4:	e8bd4010 	pop	{r4, lr}                                      
    c4d8:	e28dd008 	add	sp, sp, #8                                    
    c4dc:	e12fff1e 	bx	lr                                             
                                                                      

0000c4e4 <msdos_format_write_sec>: ) /*-------------------------------------------------------------------------*\ | Return Value: | | 0, if success, -1 and errno if failed | \*=========================================================================*/ {
    c4e4:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    c4e8:	e0876291 	umull	r6, r7, r1, r2                              
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
    c4ec:	e1a04002 	mov	r4, r2                                        
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    c4f0:	e1a01006 	mov	r1, r6                                        
    c4f4:	e1a02007 	mov	r2, r7                                        
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
    c4f8:	e1a05003 	mov	r5, r3                                        
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    c4fc:	e3a03000 	mov	r3, #0                                        
 )                                                                    
/*-------------------------------------------------------------------------*\
| Return Value:                                                             |
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
    c500:	e1a06000 	mov	r6, r0                                        
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    c504:	eb001d92 	bl	13b54 <lseek>                                  
    c508:	e3500000 	cmp	r0, #0                                        
    c50c:	e2d17000 	sbcs	r7, r1, #0                                   
    c510:	ba000007 	blt	c534 <msdos_format_write_sec+0x50>            
    ret_val = -1;                                                     
  }                                                                   
  if (ret_val == 0) {                                                 
    if (0 > write(fd,buffer,sector_size)) {                           
    c514:	e1a00006 	mov	r0, r6                                        
    c518:	e1a01005 	mov	r1, r5                                        
    c51c:	e1a02004 	mov	r2, r4                                        
    c520:	ebffeefb 	bl	8114 <write>                                   
    c524:	e3500000 	cmp	r0, #0                                        
    c528:	b3e00000 	mvnlt	r0, #0                                      
    c52c:	a3a00000 	movge	r0, #0                                      
    c530:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
|    0, if success, -1 and errno if failed                                  |
\*=========================================================================*/
{                                                                     
  int ret_val = 0;                                                    
                                                                      
  if (0 > lseek(fd,((off_t)start_sector)*sector_size,SEEK_SET)) {     
    c534:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
      ret_val = -1;                                                   
    }                                                                 
  }                                                                   
                                                                      
  return ret_val;                                                     
}                                                                     
    c538:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

000176c8 <msdos_get_dotdot_dir_info_cluster_num_and_offset>: rtems_filesystem_mount_table_entry_t *mt_entry, uint32_t cln, fat_dir_pos_t *dir_pos, char *dir_entry ) {
   176c8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   176cc:	e24dd058 	sub	sp, sp, #88	; 0x58                            
    int              rc = RC_OK;                                      
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
   176d0:	e5906008 	ldr	r6, [r0, #8]                                  
    fat_file_fd_t   *fat_fd = NULL;                                   
   176d4:	e28d5058 	add	r5, sp, #88	; 0x58                            
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    uint32_t                              cln,                        
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
   176d8:	e1a08000 	mov	r8, r0                                        
    int              rc = RC_OK;                                      
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    fat_file_fd_t   *fat_fd = NULL;                                   
   176dc:	e3a00000 	mov	r0, #0                                        
   176e0:	e5250004 	str	r0, [r5, #-4]!                                
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    uint32_t                              cln,                        
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
   176e4:	e1a07002 	mov	r7, r2                                        
   176e8:	e1a0a001 	mov	sl, r1                                        
    uint32_t         cl4find = 0;                                     
                                                                      
    /*                                                                
     * open fat-file corresponded to ".."                             
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
   176ec:	e1a00006 	mov	r0, r6                                        
   176f0:	e1a01002 	mov	r1, r2                                        
   176f4:	e1a02005 	mov	r2, r5                                        
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    uint32_t                              cln,                        
    fat_dir_pos_t                        *dir_pos,                    
    char                                 *dir_entry                   
    )                                                                 
{                                                                     
   176f8:	e1a09003 	mov	r9, r3                                        
    uint32_t         cl4find = 0;                                     
                                                                      
    /*                                                                
     * open fat-file corresponded to ".."                             
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
   176fc:	ebffe6b0 	bl	111c4 <fat_file_open>                          
    if (rc != RC_OK)                                                  
   17700:	e2504000 	subs	r4, r0, #0                                   
   17704:	0a000002 	beq	17714 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x4c>
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
    return rc;                                                        
}                                                                     
   17708:	e1a00004 	mov	r0, r4                                        
   1770c:	e28dd058 	add	sp, sp, #88	; 0x58                            
   17710:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->cln = cln;                                                
   17714:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
   17718:	e3a03602 	mov	r3, #2097152	; 0x200000                       
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->cln = cln;                                                
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
   1771c:	e5814010 	str	r4, [r1, #16]                                 
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
                                                                      
    fat_fd->map.file_cln = 0;                                         
   17720:	e5814034 	str	r4, [r1, #52]	; 0x34                          
     */                                                               
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
    if (rc != RC_OK)                                                  
        return rc;                                                    
                                                                      
    fat_fd->cln = cln;                                                
   17724:	e581a01c 	str	sl, [r1, #28]                                 
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
   17728:	e5813014 	str	r3, [r1, #20]                                 
                                                                      
    fat_fd->map.file_cln = 0;                                         
    fat_fd->map.disk_cln = fat_fd->cln;                               
   1772c:	e581a038 	str	sl, [r1, #56]	; 0x38                          
                                                                      
    rc = fat_file_size(&fs_info->fat, fat_fd);                        
   17730:	e1a00006 	mov	r0, r6                                        
   17734:	ebffe993 	bl	11d88 <fat_file_size>                          
    if (rc != RC_OK)                                                  
   17738:	e2504000 	subs	r4, r0, #0                                   
   1773c:	1a000068 	bne	178e4 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x21c>
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find "." node in opened directory */                           
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
   17740:	e28da014 	add	sl, sp, #20                                   
    msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);      
   17744:	e3a01001 	mov	r1, #1                                        
   17748:	e1a0200a 	mov	r2, sl                                        
   1774c:	e3a0300b 	mov	r3, #11                                       
   17750:	e59f01a4 	ldr	r0, [pc, #420]	; 178fc <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x234>
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find "." node in opened directory */                           
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
   17754:	e58d4014 	str	r4, [sp, #20]                                 
   17758:	e58d4018 	str	r4, [sp, #24]                                 
   1775c:	e58d401c 	str	r4, [sp, #28]                                 
   17760:	e58d4020 	str	r4, [sp, #32]                                 
   17764:	e58d4024 	str	r4, [sp, #36]	; 0x24                          
   17768:	e58d4028 	str	r4, [sp, #40]	; 0x28                          
   1776c:	e58d402c 	str	r4, [sp, #44]	; 0x2c                          
   17770:	e58d4030 	str	r4, [sp, #48]	; 0x30                          
    msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);      
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, ".", 1, 
   17774:	e3a0b001 	mov	fp, #1                                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find "." node in opened directory */                           
    memset(dot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);           
    msdos_long_to_short(".", 1, dot_node, MSDOS_SHORT_NAME_LEN);      
   17778:	ebfffb5f 	bl	164fc <msdos_long_to_short>                    
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, ".", 1, 
   1777c:	e1a02004 	mov	r2, r4                                        
   17780:	e1a00008 	mov	r0, r8                                        
   17784:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
   17788:	e59f316c 	ldr	r3, [pc, #364]	; 178fc <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x234>
   1778c:	e58db000 	str	fp, [sp]                                      
   17790:	e58db004 	str	fp, [sp, #4]                                  
   17794:	e58d7008 	str	r7, [sp, #8]                                  
   17798:	e58da00c 	str	sl, [sp, #12]                                 
   1779c:	ebfffd07 	bl	16bc0 <msdos_find_name_in_fat_file>            
                                     MSDOS_NAME_SHORT, dir_pos, dot_node);
                                                                      
    if (rc != RC_OK)                                                  
   177a0:	e2504000 	subs	r4, r0, #0                                   
   177a4:	1a00004e 	bne	178e4 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x21c>
        return rc;                                                    
    }                                                                 
                                                                      
    /* find ".." node in opened directory */                          
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);        
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
   177a8:	e3a01002 	mov	r1, #2                                        
   177ac:	e28d2034 	add	r2, sp, #52	; 0x34                            
   177b0:	e3a0300b 	mov	r3, #11                                       
   177b4:	e59f0144 	ldr	r0, [pc, #324]	; 17900 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x238>
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* find ".." node in opened directory */                          
    memset(dotdot_node, 0, MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE);        
   177b8:	e58d4034 	str	r4, [sp, #52]	; 0x34                          
   177bc:	e58d4038 	str	r4, [sp, #56]	; 0x38                          
   177c0:	e58d403c 	str	r4, [sp, #60]	; 0x3c                          
   177c4:	e58d4040 	str	r4, [sp, #64]	; 0x40                          
   177c8:	e58d4044 	str	r4, [sp, #68]	; 0x44                          
   177cc:	e58d4048 	str	r4, [sp, #72]	; 0x48                          
   177d0:	e58d404c 	str	r4, [sp, #76]	; 0x4c                          
   177d4:	e58d4050 	str	r4, [sp, #80]	; 0x50                          
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
   177d8:	ebfffb47 	bl	164fc <msdos_long_to_short>                    
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, "..", 2,
   177dc:	e3a0c002 	mov	ip, #2                                        
   177e0:	e1a02004 	mov	r2, r4                                        
   177e4:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
   177e8:	e58dc000 	str	ip, [sp]                                      
   177ec:	e1a00008 	mov	r0, r8                                        
   177f0:	e28dc034 	add	ip, sp, #52	; 0x34                            
   177f4:	e59f3104 	ldr	r3, [pc, #260]	; 17900 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x238>
   177f8:	e58db004 	str	fp, [sp, #4]                                  
   177fc:	e58d7008 	str	r7, [sp, #8]                                  
   17800:	e58dc00c 	str	ip, [sp, #12]                                 
   17804:	ebfffced 	bl	16bc0 <msdos_find_name_in_fat_file>            
                                     MSDOS_NAME_SHORT, dir_pos,       
                                     dotdot_node);                    
                                                                      
    if (rc != RC_OK)                                                  
   17808:	e2504000 	subs	r4, r0, #0                                   
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
   1780c:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
   17810:	e1a00006 	mov	r0, r6                                        
    msdos_long_to_short("..", 2, dotdot_node, MSDOS_SHORT_NAME_LEN);  
    rc = msdos_find_name_in_fat_file(mt_entry, fat_fd, false, "..", 2,
                                     MSDOS_NAME_SHORT, dir_pos,       
                                     dotdot_node);                    
                                                                      
    if (rc != RC_OK)                                                  
   17814:	1a000036 	bne	178f4 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x22c>
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    cl4find = MSDOS_EXTRACT_CLUSTER_NUM(dot_node);                    
   17818:	e1da31ba 	ldrh	r3, [sl, #26]                                
   1781c:	e1daa1b4 	ldrh	sl, [sl, #20]                                
   17820:	e58d3010 	str	r3, [sp, #16]                                 
                                                                      
    /* close fat-file corresponded to ".." directory */               
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
   17824:	ebffe7c0 	bl	1172c <fat_file_close>                         
    if ( rc != RC_OK )                                                
   17828:	e2504000 	subs	r4, r0, #0                                   
   1782c:	1affffb5 	bne	17708 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x40>
        return rc;                                                    
                                                                      
    if ( (MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)               
   17830:	e1dd24b8 	ldrh	r2, [sp, #72]	; 0x48                         
   17834:	e1dd34be 	ldrh	r3, [sp, #78]	; 0x4e                         
   17838:	e1933802 	orrs	r3, r3, r2, lsl #16                          
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
   1783c:	03e01000 	mvneq	r1, #0                                      
   17840:	05871008 	streq	r1, [r7, #8]                                
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
   17844:	0587100c 	streq	r1, [r7, #12]                               
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
   17848:	05873004 	streq	r3, [r7, #4]                                
        /*                                                            
         * we handle root dir for all FAT types in the same way with the
         * ordinary directories ( through fat_file_* calls )          
         */                                                           
        fat_dir_pos_init(dir_pos);                                    
        dir_pos->sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                 
   1784c:	0587b000 	streq	fp, [r7]                                    
    }                                                                 
                                                                      
    /* open fat-file corresponded to second ".." */                   
    rc = fat_file_open(&fs_info->fat, dir_pos, &fat_fd);              
   17850:	e1a00006 	mov	r0, r6                                        
   17854:	e1a01007 	mov	r1, r7                                        
   17858:	e1a02005 	mov	r2, r5                                        
   1785c:	ebffe658 	bl	111c4 <fat_file_open>                          
    if (rc != RC_OK)                                                  
   17860:	e2504000 	subs	r4, r0, #0                                   
   17864:	1affffa7 	bne	17708 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x40>
        return rc;                                                    
                                                                      
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)                
   17868:	e1dd24b8 	ldrh	r2, [sp, #72]	; 0x48                         
   1786c:	e1dd34be 	ldrh	r3, [sp, #78]	; 0x4e                         
   17870:	e1933802 	orrs	r3, r3, r2, lsl #16                          
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
   17874:	0596303c 	ldreq	r3, [r6, #60]	; 0x3c                        
   17878:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
    else                                                              
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);         
   1787c:	e581301c 	str	r3, [r1, #28]                                 
                                                                      
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
                                                                      
    fat_fd->map.file_cln = 0;                                         
    fat_fd->map.disk_cln = fat_fd->cln;                               
   17880:	e591201c 	ldr	r2, [r1, #28]                                 
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)                
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
    else                                                              
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);         
                                                                      
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
   17884:	e3a03000 	mov	r3, #0                                        
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
   17888:	e3a00602 	mov	r0, #2097152	; 0x200000                       
   1788c:	e5810014 	str	r0, [r1, #20]                                 
    if ((MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node)) == 0)                
        fat_fd->cln = fs_info->fat.vol.rdir_cl;                       
    else                                                              
        fat_fd->cln = MSDOS_EXTRACT_CLUSTER_NUM(dotdot_node);         
                                                                      
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
   17890:	e5813010 	str	r3, [r1, #16]                                 
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
                                                                      
    fat_fd->map.file_cln = 0;                                         
   17894:	e5813034 	str	r3, [r1, #52]	; 0x34                          
    fat_fd->map.disk_cln = fat_fd->cln;                               
   17898:	e5812038 	str	r2, [r1, #56]	; 0x38                          
                                                                      
    rc = fat_file_size(&fs_info->fat, fat_fd);                        
   1789c:	e1a00006 	mov	r0, r6                                        
   178a0:	ebffe938 	bl	11d88 <fat_file_size>                          
    if (rc != RC_OK)                                                  
   178a4:	e2504000 	subs	r4, r0, #0                                   
   178a8:	1a00000d 	bne	178e4 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x21c>
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
                                                                      
    /* in this directory find slot with specified cluster num */      
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
   178ac:	e59dc010 	ldr	ip, [sp, #16]                                 
   178b0:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
   178b4:	e1a00008 	mov	r0, r8                                        
   178b8:	e18c280a 	orr	r2, ip, sl, lsl #16                           
   178bc:	e1a03007 	mov	r3, r7                                        
   178c0:	e58d9000 	str	r9, [sp]                                      
   178c4:	ebffff28 	bl	1756c <msdos_find_node_by_cluster_num_in_fat_file>
                                                    dir_pos, dir_entry);
    if (rc != RC_OK)                                                  
   178c8:	e2504000 	subs	r4, r0, #0                                   
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
   178cc:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          
   178d0:	e1a00006 	mov	r0, r6                                        
    }                                                                 
                                                                      
    /* in this directory find slot with specified cluster num */      
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
                                                    dir_pos, dir_entry);
    if (rc != RC_OK)                                                  
   178d4:	1a000006 	bne	178f4 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x22c>
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
        return rc;                                                    
    }                                                                 
    rc = fat_file_close(&fs_info->fat, fat_fd);                       
   178d8:	ebffe793 	bl	1172c <fat_file_close>                         
   178dc:	e1a04000 	mov	r4, r0                                        
    return rc;                                                        
   178e0:	eaffff88 	b	17708 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x40>
    fat_fd->map.disk_cln = fat_fd->cln;                               
                                                                      
    rc = fat_file_size(&fs_info->fat, fat_fd);                        
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
   178e4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   178e8:	e59d1054 	ldr	r1, [sp, #84]	; 0x54                          <== NOT EXECUTED
   178ec:	ebffe78e 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
        return rc;                                                    
   178f0:	eaffff84 	b	17708 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x40><== NOT EXECUTED
    /* in this directory find slot with specified cluster num */      
    rc = msdos_find_node_by_cluster_num_in_fat_file(mt_entry, fat_fd, cl4find,
                                                    dir_pos, dir_entry);
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
   178f4:	ebffe78c 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
        return rc;                                                    
   178f8:	eaffff82 	b	17708 <msdos_get_dotdot_dir_info_cluster_num_and_offset+0x40><== NOT EXECUTED
                                                                      

0000d7c8 <msdos_initialize_support>: rtems_filesystem_mount_table_entry_t *temp_mt_entry, const rtems_filesystem_operations_table *op_table, const rtems_filesystem_file_handlers_r *file_handlers, const rtems_filesystem_file_handlers_r *directory_handlers ) {
    d7c8:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    d7cc:	e1a06000 	mov	r6, r0                                        
    d7d0:	e24dd018 	sub	sp, sp, #24                                   
    d7d4:	e1a08001 	mov	r8, r1                                        
    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));  
    d7d8:	e3a00001 	mov	r0, #1                                        
    d7dc:	e3a010a4 	mov	r1, #164	; 0xa4                               
    rtems_filesystem_mount_table_entry_t    *temp_mt_entry,           
    const rtems_filesystem_operations_table *op_table,                
    const rtems_filesystem_file_handlers_r  *file_handlers,           
    const rtems_filesystem_file_handlers_r  *directory_handlers       
    )                                                                 
{                                                                     
    d7e0:	e1a07003 	mov	r7, r3                                        
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = NULL;                                
    fat_file_fd_t     *fat_fd = NULL;                                 
    d7e4:	e3a03000 	mov	r3, #0                                        
    rtems_filesystem_mount_table_entry_t    *temp_mt_entry,           
    const rtems_filesystem_operations_table *op_table,                
    const rtems_filesystem_file_handlers_r  *file_handlers,           
    const rtems_filesystem_file_handlers_r  *directory_handlers       
    )                                                                 
{                                                                     
    d7e8:	e1a0a002 	mov	sl, r2                                        
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = NULL;                                
    fat_file_fd_t     *fat_fd = NULL;                                 
    d7ec:	e58d3014 	str	r3, [sp, #20]                                 
    fat_dir_pos_t      root_pos;                                      
    uint32_t           cl_buf_size;                                   
                                                                      
    fs_info = (msdos_fs_info_t *)calloc(1, sizeof(msdos_fs_info_t));  
    d7f0:	ebffda1e 	bl	4070 <calloc>                                  
    if (!fs_info)                                                     
    d7f4:	e2504000 	subs	r4, r0, #0                                   
    d7f8:	0a000051 	beq	d944 <msdos_initialize_support+0x17c>         
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
                                                                      
    temp_mt_entry->fs_info = fs_info;                                 
    d7fc:	e5864008 	str	r4, [r6, #8]                                  
                                                                      
    rc = fat_init_volume_info(&fs_info->fat, temp_mt_entry->dev);     
    d800:	e5961038 	ldr	r1, [r6, #56]	; 0x38                          
    d804:	eb001326 	bl	124a4 <fat_init_volume_info>                   
    if (rc != RC_OK)                                                  
    d808:	e2505000 	subs	r5, r0, #0                                   
    d80c:	1a000032 	bne	d8dc <msdos_initialize_support+0x114>         
    /*                                                                
     * 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;                     
    d810:	e28d1018 	add	r1, sp, #24                                   
    d814:	e3a03001 	mov	r3, #1                                        
    d818:	e5213014 	str	r3, [r1, #-20]!                               
    {                                                                 
        free(fs_info);                                                
        return rc;                                                    
    }                                                                 
                                                                      
    fs_info->file_handlers      = file_handlers;                      
    d81c:	e584a098 	str	sl, [r4, #152]	; 0x98                         
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
    d820:	e3e03000 	mvn	r3, #0                                        
    fs_info->directory_handlers = directory_handlers;                 
    d824:	e5847094 	str	r7, [r4, #148]	; 0x94                         
     * 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);            
    d828:	e1a00004 	mov	r0, r4                                        
    d82c:	e28d2014 	add	r2, sp, #20                                   
fat_dir_pos_init(                                                     
    fat_dir_pos_t *dir_pos                                            
    )                                                                 
{                                                                     
  dir_pos->sname.cln = 0;                                             
  dir_pos->sname.ofs = 0;                                             
    d830:	e58d5008 	str	r5, [sp, #8]                                  
  dir_pos->lname.cln = FAT_FILE_SHORT_NAME;                           
    d834:	e58d300c 	str	r3, [sp, #12]                                 
  dir_pos->lname.ofs = FAT_FILE_SHORT_NAME;                           
    d838:	e58d3010 	str	r3, [sp, #16]                                 
    d83c:	eb000e60 	bl	111c4 <fat_file_open>                          
    if (rc != RC_OK)                                                  
    d840:	e2505000 	subs	r5, r0, #0                                   
    d844:	1a000022 	bne	d8d4 <msdos_initialize_support+0x10c>         
    }                                                                 
                                                                      
    /* again: unfortunately "fat-file" is just almost fat file :( */  
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
    fat_fd->cln = fs_info->fat.vol.rdir_cl;                           
    d848:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          
        free(fs_info);                                                
        return rc;                                                    
    }                                                                 
                                                                      
    /* again: unfortunately "fat-file" is just almost fat file :( */  
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    d84c:	e59d1014 	ldr	r1, [sp, #20]                                 
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
    d850:	e3a02602 	mov	r2, #2097152	; 0x200000                       
                                                                      
    fat_fd->map.file_cln = 0;                                         
    fat_fd->map.disk_cln = fat_fd->cln;                               
                                                                      
    /* if we have FAT12/16 */                                         
    if ( fat_fd->cln == 0 )                                           
    d854:	e3530000 	cmp	r3, #0                                        
        free(fs_info);                                                
        return rc;                                                    
    }                                                                 
                                                                      
    /* again: unfortunately "fat-file" is just almost fat file :( */  
    fat_fd->fat_file_type = FAT_DIRECTORY;                            
    d858:	e5815010 	str	r5, [r1, #16]                                 
    fat_fd->size_limit = MSDOS_MAX_DIR_LENGHT;                        
    d85c:	e5812014 	str	r2, [r1, #20]                                 
    fat_fd->cln = fs_info->fat.vol.rdir_cl;                           
    d860:	e581301c 	str	r3, [r1, #28]                                 
                                                                      
    fat_fd->map.file_cln = 0;                                         
    d864:	e5815034 	str	r5, [r1, #52]	; 0x34                          
    fat_fd->map.disk_cln = fat_fd->cln;                               
    d868:	e5813038 	str	r3, [r1, #56]	; 0x38                          
                                                                      
    /* if we have FAT12/16 */                                         
    if ( fat_fd->cln == 0 )                                           
    d86c:	1a00001f 	bne	d8f0 <msdos_initialize_support+0x128>         
    {                                                                 
        fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;           
    d870:	e594302c 	ldr	r3, [r4, #44]	; 0x2c                          
        cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
                      fs_info->fat.vol.bpc                                :
    d874:	e1d400b6 	ldrh	r0, [r4, #6]                                 
    fat_fd->map.disk_cln = fat_fd->cln;                               
                                                                      
    /* if we have FAT12/16 */                                         
    if ( fat_fd->cln == 0 )                                           
    {                                                                 
        fat_fd->fat_file_size = fs_info->fat.vol.rdir_size;           
    d878:	e5813018 	str	r3, [r1, #24]                                 
        cl_buf_size = (fs_info->fat.vol.bpc > fs_info->fat.vol.rdir_size) ?
    d87c:	e1500003 	cmp	r0, r3                                        
    d880:	31a00003 	movcc	r0, r3                                      
            return rc;                                                
        }                                                             
        cl_buf_size = fs_info->fat.vol.bpc;                           
    }                                                                 
                                                                      
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));   
    d884:	e3a01001 	mov	r1, #1                                        
    d888:	ebffd9f8 	bl	4070 <calloc>                                  
    if (fs_info->cl_buf == NULL)                                      
    d88c:	e3500000 	cmp	r0, #0                                        
            return rc;                                                
        }                                                             
        cl_buf_size = fs_info->fat.vol.bpc;                           
    }                                                                 
                                                                      
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));   
    d890:	e58400a0 	str	r0, [r4, #160]	; 0xa0                         
    if (fs_info->cl_buf == NULL)                                      
    d894:	0a000023 	beq	d928 <msdos_initialize_support+0x160>         
        fat_shutdown_drive(&fs_info->fat);                            
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
    }                                                                 
                                                                      
    sc = rtems_semaphore_create(3,                                    
    d898:	e284c09c 	add	ip, r4, #156	; 0x9c                           
    d89c:	e3a00003 	mov	r0, #3                                        
    d8a0:	e3a01001 	mov	r1, #1                                        
    d8a4:	e3a02010 	mov	r2, #16                                       
    d8a8:	e3a03000 	mov	r3, #0                                        
    d8ac:	e58dc000 	str	ip, [sp]                                      
    d8b0:	ebffeb47 	bl	85d4 <rtems_semaphore_create>                  
                                1,                                    
                                RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,  
                                0,                                    
                                &fs_info->vol_sema);                  
    if (sc != RTEMS_SUCCESSFUL)                                       
    d8b4:	e3500000 	cmp	r0, #0                                        
    d8b8:	1a000026 	bne	d958 <msdos_initialize_support+0x190>         
        free(fs_info->cl_buf);                                        
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;         
    d8bc:	e5963024 	ldr	r3, [r6, #36]	; 0x24                          
    d8c0:	e59d2014 	ldr	r2, [sp, #20]                                 
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
    d8c4:	e5837010 	str	r7, [r3, #16]                                 
        free(fs_info->cl_buf);                                        
        free(fs_info);                                                
        rtems_set_errno_and_return_minus_one( EIO );                  
    }                                                                 
                                                                      
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;         
    d8c8:	e5832008 	str	r2, [r3, #8]                                  
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
    temp_mt_entry->ops = op_table;                                    
    d8cc:	e586800c 	str	r8, [r6, #12]                                 
                                                                      
    return rc;                                                        
    d8d0:	ea000003 	b	d8e4 <msdos_initialize_support+0x11c>           
    fat_dir_pos_init(&root_pos);                                      
    root_pos.sname.cln = FAT_ROOTDIR_CLUSTER_NUM;                     
    rc = fat_file_open(&fs_info->fat, &root_pos, &fat_fd);            
    if (rc != RC_OK)                                                  
    {                                                                 
        fat_shutdown_drive(&fs_info->fat);                            
    d8d4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d8d8:	eb0014f3 	bl	12cac <fat_shutdown_drive>                     <== NOT EXECUTED
        free(fs_info);                                                
    d8dc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d8e0:	ebffda9d 	bl	435c <free>                                    <== NOT EXECUTED
    temp_mt_entry->mt_fs_root->location.node_access = fat_fd;         
    temp_mt_entry->mt_fs_root->location.handlers = directory_handlers;
    temp_mt_entry->ops = op_table;                                    
                                                                      
    return rc;                                                        
}                                                                     
    d8e4:	e1a00005 	mov	r0, r5                                        
    d8e8:	e28dd018 	add	sp, sp, #24                                   
    d8ec:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
                      fs_info->fat.vol.bpc                                :
                      fs_info->fat.vol.rdir_size;                     
    }                                                                 
    else                                                              
    {                                                                 
        rc = fat_file_size(&fs_info->fat, fat_fd);                    
    d8f0:	e1a00004 	mov	r0, r4                                        
    d8f4:	eb001123 	bl	11d88 <fat_file_size>                          
        if ( rc != RC_OK )                                            
    d8f8:	e250a000 	subs	sl, r0, #0                                   
            fat_file_close(&fs_info->fat, fat_fd);                    
            fat_shutdown_drive(&fs_info->fat);                        
            free(fs_info);                                            
            return rc;                                                
        }                                                             
        cl_buf_size = fs_info->fat.vol.bpc;                           
    d8fc:	01d400b6 	ldrheq	r0, [r4, #6]                               
                      fs_info->fat.vol.rdir_size;                     
    }                                                                 
    else                                                              
    {                                                                 
        rc = fat_file_size(&fs_info->fat, fat_fd);                    
        if ( rc != RC_OK )                                            
    d900:	0affffdf 	beq	d884 <msdos_initialize_support+0xbc>          
        {                                                             
            fat_file_close(&fs_info->fat, fat_fd);                    
    d904:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
    d908:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d90c:	eb000f86 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
            fat_shutdown_drive(&fs_info->fat);                        
    d910:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d914:	eb0014e4 	bl	12cac <fat_shutdown_drive>                     <== NOT EXECUTED
            free(fs_info);                                            
    d918:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d91c:	ebffda8e 	bl	435c <free>                                    <== NOT EXECUTED
            return rc;                                                
    d920:	e1a0500a 	mov	r5, sl                                        <== NOT EXECUTED
    d924:	eaffffee 	b	d8e4 <msdos_initialize_support+0x11c>           <== NOT EXECUTED
    }                                                                 
                                                                      
    fs_info->cl_buf = (uint8_t *)calloc(cl_buf_size, sizeof(char));   
    if (fs_info->cl_buf == NULL)                                      
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
    d928:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
    d92c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d930:	eb000f7d 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);                            
    d934:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d938:	eb0014db 	bl	12cac <fat_shutdown_drive>                     <== NOT EXECUTED
        free(fs_info);                                                
    d93c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d940:	ebffda85 	bl	435c <free>                                    <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one(ENOMEM);                 
    d944:	eb002fda 	bl	198b4 <__errno>                                <== NOT EXECUTED
    d948:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
    d94c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    d950:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
    d954:	eaffffe2 	b	d8e4 <msdos_initialize_support+0x11c>           <== NOT EXECUTED
                                RTEMS_BINARY_SEMAPHORE | RTEMS_FIFO,  
                                0,                                    
                                &fs_info->vol_sema);                  
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        fat_file_close(&fs_info->fat, fat_fd);                        
    d958:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
    d95c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d960:	eb000f71 	bl	1172c <fat_file_close>                         <== NOT EXECUTED
        fat_shutdown_drive(&fs_info->fat);                            
    d964:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d968:	eb0014cf 	bl	12cac <fat_shutdown_drive>                     <== NOT EXECUTED
        free(fs_info->cl_buf);                                        
    d96c:	e59400a0 	ldr	r0, [r4, #160]	; 0xa0                         <== NOT EXECUTED
    d970:	ebffda79 	bl	435c <free>                                    <== NOT EXECUTED
        free(fs_info);                                                
    d974:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d978:	ebffda77 	bl	435c <free>                                    <== NOT EXECUTED
        rtems_set_errno_and_return_minus_one( EIO );                  
    d97c:	eb002fcc 	bl	198b4 <__errno>                                <== NOT EXECUTED
    d980:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
    d984:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    d988:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
    d98c:	eaffffd4 	b	d8e4 <msdos_initialize_support+0x11c>           <== NOT EXECUTED
                                                                      

0000d79c <msdos_lock>: void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry) { msdos_fs_info_t *fs_info = mt_entry->fs_info; rtems_status_code sc = rtems_semaphore_obtain( fs_info->vol_sema,
    d79c:	e5903008 	ldr	r3, [r0, #8]                                  
};                                                                    
                                                                      
void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry) 
{                                                                     
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_obtain(                      
    d7a0:	e3a01000 	mov	r1, #0                                        
  .rename_h       =  msdos_rename,                                    
  .statvfs_h      =  rtems_filesystem_default_statvfs                 
};                                                                    
                                                                      
void msdos_lock(const rtems_filesystem_mount_table_entry_t *mt_entry) 
{                                                                     
    d7a4:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_obtain(                      
    d7a8:	e593009c 	ldr	r0, [r3, #156]	; 0x9c                         
    d7ac:	e1a02001 	mov	r2, r1                                        
    d7b0:	ebffec20 	bl	8838 <rtems_semaphore_obtain>                  
    fs_info->vol_sema,                                                
    RTEMS_WAIT,                                                       
    RTEMS_NO_TIMEOUT                                                  
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    d7b4:	e3500000 	cmp	r0, #0                                        
    d7b8:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_fatal_error_occurred(0xdeadbeef);                           
    d7bc:	e59f0000 	ldr	r0, [pc]	; d7c4 <msdos_lock+0x28>             <== NOT EXECUTED
    d7c0:	ebffee05 	bl	8fdc <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

000164fc <msdos_long_to_short>: * */ #define MSDOS_L2S_PRINT 0 msdos_name_type_t msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len) {
   164fc:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   16500:	e24dd008 	sub	sp, sp, #8                                    
   16504:	e58d2000 	str	r2, [sp]                                      
   16508:	e1a05000 	mov	r5, r0                                        
   1650c:	e1a04001 	mov	r4, r1                                        
    int               i;                                              
                                                                      
    /*                                                                
     * Fill with spaces. This is how a short directory entry is padded.
     */                                                               
    memset (sfn, ' ', sfn_len);                                       
   16510:	e1a00002 	mov	r0, r2                                        
   16514:	e3a01020 	mov	r1, #32                                       
   16518:	e1a02003 	mov	r2, r3                                        
   1651c:	eb000fc1 	bl	1a428 <memset>                                 
                                                                      
    /*                                                                
     * Handle '.' and '..' specially.                                 
     */                                                               
    if ((lfn[0] == '.') && (lfn_len == 1))                            
   16520:	e5d56000 	ldrb	r6, [r5]                                     
   16524:	e246202e 	sub	r2, r6, #46	; 0x2e                            
   16528:	e2723000 	rsbs	r3, r2, #0                                   
   1652c:	e0a33002 	adc	r3, r3, r2                                    
   16530:	e3540001 	cmp	r4, #1                                        
   16534:	0356002e 	cmpeq	r6, #46	; 0x2e                              
   16538:	0a000059 	beq	166a4 <msdos_long_to_short+0x1a8>             
        printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
    }                                                                 
                                                                      
    if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))         
   1653c:	e3530000 	cmp	r3, #0                                        
   16540:	1a000060 	bne	166c8 <msdos_long_to_short+0x1cc>             
    }                                                                 
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
   16544:	e3540000 	cmp	r4, #0                                        
   16548:	da00006c 	ble	16700 <msdos_long_to_short+0x204>             
        if ((lfn[i] != ' ') && (lfn[i] != '.'))                       
   1654c:	e356002e 	cmp	r6, #46	; 0x2e                                
   16550:	13560020 	cmpne	r6, #32                                     
   16554:	03a03000 	moveq	r3, #0                                      
   16558:	13a03001 	movne	r3, #1                                      
   1655c:	01a01005 	moveq	r1, r5                                      
   16560:	0a000017 	beq	165c4 <msdos_long_to_short+0xc8>              
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
   16564:	e3560000 	cmp	r6, #0                                        
   16568:	13540000 	cmpne	r4, #0                                      
   1656c:	da00005f 	ble	166f0 <msdos_long_to_short+0x1f4>             
 *     true the name is long, else the name is short.                 
 *                                                                    
 */                                                                   
#define MSDOS_L2S_PRINT 0                                             
msdos_name_type_t                                                     
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
   16570:	e3a03000 	mov	r3, #0                                        
   16574:	e58d3004 	str	r3, [sp, #4]                                  
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
   16578:	e1a08005 	mov	r8, r5                                        
 *     true the name is long, else the name is short.                 
 *                                                                    
 */                                                                   
#define MSDOS_L2S_PRINT 0                                             
msdos_name_type_t                                                     
msdos_long_to_short(const char *lfn, int lfn_len, char* sfn, int sfn_len)
   1657c:	e1a0b003 	mov	fp, r3                                        
   16580:	e1a07003 	mov	r7, r3                                        
   16584:	e3e09000 	mvn	r9, #0                                        
 *                                                                    
 */                                                                   
static msdos_name_type_t                                              
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
   16588:	e59f017c 	ldr	r0, [pc, #380]	; 1670c <msdos_long_to_short+0x210>
   1658c:	e1a01006 	mov	r1, r6                                        
   16590:	eb001330 	bl	1b258 <strchr>                                 
   16594:	e3500000 	cmp	r0, #0                                        
   16598:	0a000010 	beq	165e0 <msdos_long_to_short+0xe4>              
        return MSDOS_NAME_LONG;                                       
   1659c:	e3a06002 	mov	r6, #2                                        
        printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
    }                                                                 
                                                                      
    msdos_filename_unix2dos (lfn, lfn_len, sfn);                      
   165a0:	e1a00005 	mov	r0, r5                                        
   165a4:	e1a01004 	mov	r1, r4                                        
   165a8:	e59d2000 	ldr	r2, [sp]                                      
   165ac:	eb000984 	bl	18bc4 <msdos_filename_unix2dos>                
   165b0:	ea000007 	b	165d4 <msdos_long_to_short+0xd8>                
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
        if ((lfn[i] != ' ') && (lfn[i] != '.'))                       
   165b4:	e5f12001 	ldrb	r2, [r1, #1]!                                
   165b8:	e352002e 	cmp	r2, #46	; 0x2e                                
   165bc:	13520020 	cmpne	r2, #32                                     
   165c0:	1affffe7 	bne	16564 <msdos_long_to_short+0x68>              
    }                                                                 
                                                                      
    /*                                                                
     * Filenames with only blanks and dots are not allowed!           
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
   165c4:	e2833001 	add	r3, r3, #1                                    
   165c8:	e1530004 	cmp	r3, r4                                        
   165cc:	1afffff8 	bne	165b4 <msdos_long_to_short+0xb8>              
    if (i == lfn_len)                                                 
    {                                                                 
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: INVALID[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
   165d0:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
                                                                      
#if MSDOS_L2S_PRINT                                                   
    printf ("MSDOS_L2S: TYPE:%d lfn:'%s' SFN:'%s'\n", type, lfn, sfn);
#endif                                                                
    return type;                                                      
}                                                                     
   165d4:	e1a00006 	mov	r0, r6                                        
   165d8:	e28dd008 	add	sp, sp, #8                                    
   165dc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
    {                                                                 
        bool is_dot = *name == '.';                                   
   165e0:	e246302e 	sub	r3, r6, #46	; 0x2e                            
   165e4:	e273a000 	rsbs	sl, r3, #0                                   
   165e8:	e0aaa003 	adc	sl, sl, r3                                    
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
        return MSDOS_NAME_LONG;                                       
                                                                      
    if ((ch == '.') || isalnum((unsigned char)ch) ||                  
   165ec:	e35a0000 	cmp	sl, #0                                        
   165f0:	1a00000a 	bne	16620 <msdos_long_to_short+0x124>             
   165f4:	e59f2114 	ldr	r2, [pc, #276]	; 16710 <msdos_long_to_short+0x214>
   165f8:	e5923000 	ldr	r3, [r2]                                      
   165fc:	e0833006 	add	r3, r3, r6                                    
   16600:	e5d33001 	ldrb	r3, [r3, #1]                                 
   16604:	e3130007 	tst	r3, #7                                        
   16608:	1a000004 	bne	16620 <msdos_long_to_short+0x124>             
        (strchr("$%'-_@~`!(){}^#&", ch) != NULL))                     
   1660c:	e59f0100 	ldr	r0, [pc, #256]	; 16714 <msdos_long_to_short+0x218>
   16610:	e1a01006 	mov	r1, r6                                        
   16614:	eb00130f 	bl	1b258 <strchr>                                 
msdos_is_valid_name_char(const char ch)                               
{                                                                     
    if (strchr(" +,;=[]", ch) != NULL)                                
        return MSDOS_NAME_LONG;                                       
                                                                      
    if ((ch == '.') || isalnum((unsigned char)ch) ||                  
   16618:	e3500000 	cmp	r0, #0                                        
   1661c:	0a000035 	beq	166f8 <msdos_long_to_short+0x1fc>             
#endif                                                                
                                                                      
        if ((type == MSDOS_NAME_INVALID) || (type == MSDOS_NAME_LONG))
            return type;                                              
                                                                      
        if (dot_at >= 0)                                              
   16620:	e3790001 	cmn	r9, #1                                        
   16624:	0a000018 	beq	1668c <msdos_long_to_short+0x190>             
        {                                                             
            if (is_dot || ((count - dot_at) > 3))                     
   16628:	e35a0000 	cmp	sl, #0                                        
   1662c:	1affffda 	bne	1659c <msdos_long_to_short+0xa0>              
   16630:	e0693007 	rsb	r3, r9, r7                                    
   16634:	e3530003 	cmp	r3, #3                                        
   16638:	caffffd7 	bgt	1659c <msdos_long_to_short+0xa0>              
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
            dot_at = count;                                           
        else if ((*name >= 'A') && (*name <= 'Z'))                    
   1663c:	e2463041 	sub	r3, r6, #65	; 0x41                            
   16640:	e3530019 	cmp	r3, #25                                       
            uppercase = true;                                         
   16644:	93a03001 	movls	r3, #1                                      
   16648:	958d3004 	strls	r3, [sp, #4]                                
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
            dot_at = count;                                           
        else if ((*name >= 'A') && (*name <= 'Z'))                    
   1664c:	9a000002 	bls	1665c <msdos_long_to_short+0x160>             
            uppercase = true;                                         
        else if ((*name >= 'a') && (*name <= 'z'))                    
   16650:	e2466061 	sub	r6, r6, #97	; 0x61                            
            lowercase = true;                                         
   16654:	e3560019 	cmp	r6, #25                                       
   16658:	93a0b001 	movls	fp, #1                                      
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
   1665c:	e5f86001 	ldrb	r6, [r8, #1]!                                
        else if ((*name >= 'A') && (*name <= 'Z'))                    
            uppercase = true;                                         
        else if ((*name >= 'a') && (*name <= 'z'))                    
            lowercase = true;                                         
                                                                      
        count++;                                                      
   16660:	e2877001 	add	r7, r7, #1                                    
    bool lowercase = false;                                           
    bool uppercase = false;                                           
    int  dot_at = -1;                                                 
    int  count = 0;                                                   
                                                                      
    while (*name && (count < name_len))                               
   16664:	e3560000 	cmp	r6, #0                                        
   16668:	11540007 	cmpne	r4, r7                                      
   1666c:	caffffc5 	bgt	16588 <msdos_long_to_short+0x8c>              
                                                                      
        count++;                                                      
        name++;                                                       
    }                                                                 
                                                                      
    if (lowercase && uppercase)                                       
   16670:	e35b0000 	cmp	fp, #0                                        
   16674:	0a00001d 	beq	166f0 <msdos_long_to_short+0x1f4>             
    }                                                                 
                                                                      
#if MSDOS_NAME_TYPE_PRINT                                             
    printf ("MSDOS_NAME_TYPE: SHORT[1]\n");                           
#endif                                                                
    return MSDOS_NAME_SHORT;                                          
   16678:	e59d2004 	ldr	r2, [sp, #4]                                  
   1667c:	e3520000 	cmp	r2, #0                                        
   16680:	13a06002 	movne	r6, #2                                      
   16684:	03a06001 	moveq	r6, #1                                      
   16688:	eaffffc4 	b	165a0 <msdos_long_to_short+0xa4>                
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            if (count == 8 && !is_dot)                                
   1668c:	e3570008 	cmp	r7, #8                                        
   16690:	0a000008 	beq	166b8 <msdos_long_to_short+0x1bc>             
#endif                                                                
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
   16694:	e35a0000 	cmp	sl, #0                                        
   16698:	0affffe7 	beq	1663c <msdos_long_to_short+0x140>             
   1669c:	e1a09007 	mov	r9, r7                                        
   166a0:	eaffffed 	b	1665c <msdos_long_to_short+0x160>               
    /*                                                                
     * Handle '.' and '..' specially.                                 
     */                                                               
    if ((lfn[0] == '.') && (lfn_len == 1))                            
    {                                                                 
        sfn[0] = '.';                                                 
   166a4:	e59d2000 	ldr	r2, [sp]                                      
   166a8:	e3a0302e 	mov	r3, #46	; 0x2e                                
   166ac:	e5c23000 	strb	r3, [r2]                                     
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
   166b0:	e3a06001 	mov	r6, #1                                        
   166b4:	eaffffc6 	b	165d4 <msdos_long_to_short+0xd8>                
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            if (count == 8 && !is_dot)                                
   166b8:	e35a0000 	cmp	sl, #0                                        
   166bc:	0affffb6 	beq	1659c <msdos_long_to_short+0xa0>              
#endif                                                                
                return MSDOS_NAME_LONG;                               
            }                                                         
        }                                                             
                                                                      
        if (is_dot)                                                   
   166c0:	e1a09007 	mov	r9, r7                                        <== NOT EXECUTED
   166c4:	eaffffe4 	b	1665c <msdos_long_to_short+0x160>               <== NOT EXECUTED
        printf ("MSDOS_L2S: SHORT[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
    }                                                                 
                                                                      
    if ((lfn[0] == '.') && (lfn[1] == '.') && (lfn_len == 2))         
   166c8:	e5d53001 	ldrb	r3, [r5, #1]                                 
   166cc:	e3540002 	cmp	r4, #2                                        
   166d0:	0353002e 	cmpeq	r3, #46	; 0x2e                              
   166d4:	1affff9a 	bne	16544 <msdos_long_to_short+0x48>              
    {                                                                 
        sfn[0] = sfn[1] = '.';                                        
   166d8:	e59d2000 	ldr	r2, [sp]                                      
   166dc:	e3a0302e 	mov	r3, #46	; 0x2e                                
   166e0:	e5c23001 	strb	r3, [r2, #1]                                 
   166e4:	e5c23000 	strb	r3, [r2]                                     
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: SHORT[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_SHORT;                                      
   166e8:	e3a06001 	mov	r6, #1                                        
   166ec:	eaffffb8 	b	165d4 <msdos_long_to_short+0xd8>                
    }                                                                 
                                                                      
#if MSDOS_NAME_TYPE_PRINT                                             
    printf ("MSDOS_NAME_TYPE: SHORT[1]\n");                           
#endif                                                                
    return MSDOS_NAME_SHORT;                                          
   166f0:	e3a06001 	mov	r6, #1                                        
   166f4:	eaffffa9 	b	165a0 <msdos_long_to_short+0xa4>                
    if (type == MSDOS_NAME_INVALID)                                   
    {                                                                 
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: INVALID[2]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
   166f8:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
   166fc:	eaffffb4 	b	165d4 <msdos_long_to_short+0xd8>                <== NOT EXECUTED
    if (i == lfn_len)                                                 
    {                                                                 
#if MSDOS_L2S_PRINT                                                   
        printf ("MSDOS_L2S: INVALID[1]: lfn:'%s' SFN:'%s'\n", lfn, sfn);
#endif                                                                
        return MSDOS_NAME_INVALID;                                    
   16700:	01a06004 	moveq	r6, r4                                      <== NOT EXECUTED
     */                                                               
    for (i = 0; i < lfn_len; i++)                                     
        if ((lfn[i] != ' ') && (lfn[i] != '.'))                       
            break;                                                    
                                                                      
    if (i == lfn_len)                                                 
   16704:	1affff96 	bne	16564 <msdos_long_to_short+0x68>              <== NOT EXECUTED
   16708:	eaffffb1 	b	165d4 <msdos_long_to_short+0xd8>                <== NOT EXECUTED
                                                                      

0000d990 <msdos_mknod>: const char *name, size_t namelen, mode_t mode, dev_t dev ) {
    d990:	e92d4030 	push	{r4, r5, lr}                                 
    msdos_node_type_t    type = 0;                                    
                                                                      
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
    d994:	e2034a0f 	and	r4, r3, #61440	; 0xf000                       
    d998:	e3540901 	cmp	r4, #16384	; 0x4000                           
    const char *name,                                                 
    size_t namelen,                                                   
    mode_t mode,                                                      
    dev_t dev                                                         
)                                                                     
{                                                                     
    d99c:	e1a0c003 	mov	ip, r3                                        
    d9a0:	e1a05001 	mov	r5, r1                                        
    d9a4:	e1a03002 	mov	r3, r2                                        
    msdos_node_type_t    type = 0;                                    
                                                                      
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
    d9a8:	0a000008 	beq	d9d0 <msdos_mknod+0x40>                       
    {                                                                 
       type = MSDOS_DIRECTORY;                                        
    }                                                                 
    else if (S_ISREG(mode))                                           
    d9ac:	e3540902 	cmp	r4, #32768	; 0x8000                           
    {                                                                 
        type = MSDOS_REGULAR_FILE;                                    
    d9b0:	03a01004 	moveq	r1, #4                                      
     */                                                               
    if (S_ISDIR(mode))                                                
    {                                                                 
       type = MSDOS_DIRECTORY;                                        
    }                                                                 
    else if (S_ISREG(mode))                                           
    d9b4:	1a000007 	bne	d9d8 <msdos_mknod+0x48>                       
    }                                                                 
    else                                                              
        rtems_set_errno_and_return_minus_one(EINVAL);                 
                                                                      
    /* Create an MSDOS node */                                        
    rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
    d9b8:	e58dc00c 	str	ip, [sp, #12]                                 
    d9bc:	e1a02005 	mov	r2, r5                                        
    d9c0:	e3a0c000 	mov	ip, #0                                        
    d9c4:	e58dc010 	str	ip, [sp, #16]                                 
                                                                      
    return rc;                                                        
}                                                                     
    d9c8:	e8bd4030 	pop	{r4, r5, lr}                                  
    }                                                                 
    else                                                              
        rtems_set_errno_and_return_minus_one(EINVAL);                 
                                                                      
    /* Create an MSDOS node */                                        
    rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
    d9cc:	ea002194 	b	16024 <msdos_creat_node>                        
    /*                                                                
     *  Figure out what type of msdos node this is.                   
     */                                                               
    if (S_ISDIR(mode))                                                
    {                                                                 
       type = MSDOS_DIRECTORY;                                        
    d9d0:	e3a01000 	mov	r1, #0                                        
    d9d4:	eafffff7 	b	d9b8 <msdos_mknod+0x28>                         
    else if (S_ISREG(mode))                                           
    {                                                                 
        type = MSDOS_REGULAR_FILE;                                    
    }                                                                 
    else                                                              
        rtems_set_errno_and_return_minus_one(EINVAL);                 
    d9d8:	eb002fb5 	bl	198b4 <__errno>                                <== NOT EXECUTED
    d9dc:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    d9e0:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
                                                                      
    /* Create an MSDOS node */                                        
    rc = msdos_creat_node(parentloc, type, name, namelen, mode, NULL);
                                                                      
    return rc;                                                        
}                                                                     
    d9e4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    d9e8:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
                                                                      

0000d9f8 <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 ) {
    d9f8:	e92d4030 	push	{r4, r5, lr}                                 <== NOT EXECUTED
    int                rc = RC_OK;                                    
    fat_file_fd_t     *old_fat_fd  = old_loc->node_access;            
    d9fc:	e5914008 	ldr	r4, [r1, #8]                                  <== NOT EXECUTED
    const rtems_filesystem_location_info_t *old_loc,                  
    const rtems_filesystem_location_info_t *new_parent_loc,           
    const char *new_name,                                             
    size_t new_namelen                                                
)                                                                     
{                                                                     
    da00:	e24dd008 	sub	sp, sp, #8                                    <== NOT EXECUTED
                                                                      
    /*                                                                
     * create new directory entry as "hard link", copying relevant info from
     * existing file                                                  
     */                                                               
    rc = msdos_creat_node(new_parent_loc,                             
    da04:	e1a00002 	mov	r0, r2                                        <== NOT EXECUTED
    da08:	e3a0c902 	mov	ip, #32768	; 0x8000                           <== NOT EXECUTED
    da0c:	e1a02003 	mov	r2, r3                                        <== NOT EXECUTED
    const rtems_filesystem_location_info_t *old_loc,                  
    const rtems_filesystem_location_info_t *new_parent_loc,           
    const char *new_name,                                             
    size_t new_namelen                                                
)                                                                     
{                                                                     
    da10:	e1a05001 	mov	r5, r1                                        <== NOT EXECUTED
                                                                      
    /*                                                                
     * create new directory entry as "hard link", copying relevant info from
     * existing file                                                  
     */                                                               
    rc = msdos_creat_node(new_parent_loc,                             
    da14:	e59d3014 	ldr	r3, [sp, #20]                                 <== NOT EXECUTED
    da18:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    da1c:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    da20:	e58d4004 	str	r4, [sp, #4]                                  <== NOT EXECUTED
    da24:	eb00217e 	bl	16024 <msdos_creat_node>                       <== NOT EXECUTED
                          MSDOS_HARD_LINK,new_name,new_namelen,S_IFREG,
                          old_fat_fd);                                
    if (rc != RC_OK)                                                  
    da28:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    da2c:	0a000001 	beq	da38 <msdos_rename+0x40>                      <== NOT EXECUTED
    rc = msdos_set_first_char4file_name(old_loc->mt_entry,            
                                        &old_fat_fd->dir_pos,         
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);  
                                                                      
    return rc;                                                        
}                                                                     
    da30:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
    da34:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * mark file removed                                              
     */                                                               
    rc = msdos_set_first_char4file_name(old_loc->mt_entry,            
    da38:	e5950014 	ldr	r0, [r5, #20]                                 <== NOT EXECUTED
    da3c:	e2841020 	add	r1, r4, #32                                   <== NOT EXECUTED
    da40:	e3a020e5 	mov	r2, #229	; 0xe5                               <== NOT EXECUTED
                                        &old_fat_fd->dir_pos,         
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);  
                                                                      
    return rc;                                                        
}                                                                     
    da44:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
    da48:	e8bd4030 	pop	{r4, r5, lr}                                  <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * mark file removed                                              
     */                                                               
    rc = msdos_set_first_char4file_name(old_loc->mt_entry,            
    da4c:	ea0023b7 	b	16930 <msdos_set_first_char4file_name>          <== NOT EXECUTED
                                                                      

0000da50 <msdos_rmnod>: #include "msdos.h" int msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc, const rtems_filesystem_location_info_t *pathloc) {
    da50:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
    da54:	e5914008 	ldr	r4, [r1, #8]                                  
                                                                      
    if (fat_fd->fat_file_type == MSDOS_DIRECTORY)                     
    da58:	e5943010 	ldr	r3, [r4, #16]                                 
int                                                                   
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,   
            const rtems_filesystem_location_info_t *pathloc)          
{                                                                     
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
    da5c:	e5910014 	ldr	r0, [r1, #20]                                 
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
                                                                      
    if (fat_fd->fat_file_type == MSDOS_DIRECTORY)                     
    da60:	e3530000 	cmp	r3, #0                                        
#include "msdos.h"                                                    
                                                                      
int                                                                   
msdos_rmnod(const rtems_filesystem_location_info_t *parent_pathloc,   
            const rtems_filesystem_location_info_t *pathloc)          
{                                                                     
    da64:	e24dd004 	sub	sp, sp, #4                                    
    da68:	e1a05001 	mov	r5, r1                                        
    int                rc = RC_OK;                                    
    msdos_fs_info_t   *fs_info = pathloc->mt_entry->fs_info;          
    da6c:	e5906008 	ldr	r6, [r0, #8]                                  
    fat_file_fd_t     *fat_fd = pathloc->node_access;                 
                                                                      
    if (fat_fd->fat_file_type == MSDOS_DIRECTORY)                     
    da70:	1a00000c 	bne	daa8 <msdos_rmnod+0x58>                       
    {                                                                 
        bool is_empty = false;                                        
    da74:	e28d2004 	add	r2, sp, #4                                    
    da78:	e5623001 	strb	r3, [r2, #-1]!                               
                                                                      
        /*                                                            
         * You cannot remove a node that still has children           
         */                                                           
        rc = msdos_dir_is_empty(pathloc->mt_entry, fat_fd, &is_empty);
    da7c:	e1a01004 	mov	r1, r4                                        
    da80:	eb002400 	bl	16a88 <msdos_dir_is_empty>                     
        if (rc != RC_OK)                                              
    da84:	e2507000 	subs	r7, r0, #0                                   
    da88:	1a00000b 	bne	dabc <msdos_rmnod+0x6c>                       
        {                                                             
            return rc;                                                
        }                                                             
                                                                      
        if (!is_empty)                                                
    da8c:	e5dd3003 	ldrb	r3, [sp, #3]                                 
    da90:	e3530000 	cmp	r3, #0                                        
    da94:	0a000014 	beq	daec <msdos_rmnod+0x9c>                       
                                                                      
        /*                                                            
         * We deny attempts to delete open directory (if directory is current
         * directory we assume it is open one)                        
         */                                                           
        if (fat_fd->links_num > 1)                                    
    da98:	e5943008 	ldr	r3, [r4, #8]                                  
    da9c:	e3530001 	cmp	r3, #1                                        
    daa0:	95950014 	ldrls	r0, [r5, #20]                               
    daa4:	8a00000b 	bhi	dad8 <msdos_rmnod+0x88>                       
         * not used - mount() not implemenetd yet.                    
         */                                                           
    }                                                                 
                                                                      
    /* mark file removed */                                           
    rc = msdos_set_first_char4file_name(pathloc->mt_entry, &fat_fd->dir_pos,
    daa8:	e2841020 	add	r1, r4, #32                                   
    daac:	e3a020e5 	mov	r2, #229	; 0xe5                               
    dab0:	eb00239e 	bl	16930 <msdos_set_first_char4file_name>         
                                        MSDOS_THIS_DIR_ENTRY_EMPTY);  
    if (rc != RC_OK)                                                  
    dab4:	e2507000 	subs	r7, r0, #0                                   
    dab8:	0a000002 	beq	dac8 <msdos_rmnod+0x78>                       
    }                                                                 
                                                                      
    fat_file_mark_removed(&fs_info->fat, fat_fd);                     
                                                                      
    return rc;                                                        
}                                                                     
    dabc:	e1a00007 	mov	r0, r7                                        
    dac0:	e28dd004 	add	sp, sp, #4                                    
    dac4:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
    if (rc != RC_OK)                                                  
    {                                                                 
        return rc;                                                    
    }                                                                 
                                                                      
    fat_file_mark_removed(&fs_info->fat, fat_fd);                     
    dac8:	e1a00006 	mov	r0, r6                                        
    dacc:	e1a01004 	mov	r1, r4                                        
    dad0:	eb001087 	bl	11cf4 <fat_file_mark_removed>                  
                                                                      
    return rc;                                                        
    dad4:	eafffff8 	b	dabc <msdos_rmnod+0x6c>                         
         * We deny attempts to delete open directory (if directory is current
         * directory we assume it is open one)                        
         */                                                           
        if (fat_fd->links_num > 1)                                    
        {                                                             
            rtems_set_errno_and_return_minus_one(EBUSY);              
    dad8:	eb002f75 	bl	198b4 <__errno>                                <== NOT EXECUTED
    dadc:	e3a03010 	mov	r3, #16                                       <== NOT EXECUTED
    dae0:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    dae4:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
    dae8:	eafffff3 	b	dabc <msdos_rmnod+0x6c>                         <== NOT EXECUTED
            return rc;                                                
        }                                                             
                                                                      
        if (!is_empty)                                                
        {                                                             
            rtems_set_errno_and_return_minus_one(ENOTEMPTY);          
    daec:	eb002f70 	bl	198b4 <__errno>                                
    daf0:	e3a0305a 	mov	r3, #90	; 0x5a                                
    daf4:	e5803000 	str	r3, [r0]                                      
    daf8:	e3e07000 	mvn	r7, #0                                        
    dafc:	eaffffee 	b	dabc <msdos_rmnod+0x6c>                         
                                                                      

00016930 <msdos_set_first_char4file_name>: msdos_set_first_char4file_name( rtems_filesystem_mount_table_entry_t *mt_entry, fat_dir_pos_t *dir_pos, unsigned char fchar ) {
   16930:	e92d43f0 	push	{r4, r5, r6, r7, r8, r9, lr}                 
    ssize_t          ret;                                             
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
   16934:	e5904008 	ldr	r4, [r0, #8]                                  
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
   16938:	e5916000 	ldr	r6, [r1]                                      
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
   1693c:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          
    )                                                                 
{                                                                     
    ssize_t          ret;                                             
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
   16940:	e2819008 	add	r9, r1, #8                                    
   16944:	e8990300 	ldm	r9, {r8, r9}                                  
msdos_set_first_char4file_name(                                       
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_dir_pos_t                        *dir_pos,                    
    unsigned char                         fchar                       
    )                                                                 
{                                                                     
   16948:	e24dd010 	sub	sp, sp, #16                                   
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
   1694c:	e1560003 	cmp	r6, r3                                        
    )                                                                 
{                                                                     
    ssize_t          ret;                                             
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
   16950:	e58d8008 	str	r8, [sp, #8]                                  
   16954:	e58d900c 	str	r9, [sp, #12]                                 
msdos_set_first_char4file_name(                                       
    rtems_filesystem_mount_table_entry_t *mt_entry,                   
    fat_dir_pos_t                        *dir_pos,                    
    unsigned char                         fchar                       
    )                                                                 
{                                                                     
   16958:	e5cd2004 	strb	r2, [sp, #4]                                 
    ssize_t          ret;                                             
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
   1695c:	e5918004 	ldr	r8, [r1, #4]                                  
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
   16960:	0a00003d 	beq	16a5c <msdos_set_first_char4file_name+0x12c>  
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
   16964:	e5913008 	ldr	r3, [r1, #8]                                  <== NOT EXECUTED
   16968:	e3730001 	cmn	r3, #1                                        <== NOT EXECUTED
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
   1696c:	e1d450b6 	ldrh	r5, [r4, #6]                                 <== NOT EXECUTED
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
   16970:	0a000040 	beq	16a78 <msdos_set_first_char4file_name+0x148>  <== NOT EXECUTED
      start = dir_pos->sname;                                         
   16974:	e59dc00c 	ldr	ip, [sp, #12]                                 
   16978:	e5d4e002 	ldrb	lr, [r4, #2]                                 
   1697c:	e1d420b0 	ldrh	r2, [r4]                                     
   16980:	e28d7004 	add	r7, sp, #4                                    
   16984:	e59d1008 	ldr	r1, [sp, #8]                                  
   16988:	ea000005 	b	169a4 <msdos_set_first_char4file_name+0x74>     
        return -1;                                                    
                                                                      
      if ((start.cln == end.cln) && (start.ofs == end.ofs))           
        break;                                                        
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
   1698c:	e28cc020 	add	ip, ip, #32                                   
      if (start.ofs >= dir_block_size)                                
   16990:	e155000c 	cmp	r5, ip                                        
        return -1;                                                    
                                                                      
      if ((start.cln == end.cln) && (start.ofs == end.ofs))           
        break;                                                        
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
   16994:	e58dc00c 	str	ip, [sp, #12]                                 
      if (start.ofs >= dir_block_size)                                
   16998:	9a00001e 	bls	16a18 <msdos_set_first_char4file_name+0xe8>   
   1699c:	e5d4e002 	ldrb	lr, [r4, #2]                                 
   169a0:	e1d420b0 	ldrh	r2, [r4]                                     
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   169a4:	e3510000 	cmp	r1, #0                                        
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   169a8:	e2411002 	sub	r1, r1, #2                                    
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   169ac:	1a000003 	bne	169c0 <msdos_set_first_char4file_name+0x90>   
   169b0:	e5d4300e 	ldrb	r3, [r4, #14]                                
   169b4:	e3130003 	tst	r3, #3                                        
        return fs_info->vol.rdir_loc;                                 
   169b8:	15941020 	ldrne	r1, [r4, #32]                               
fat_cluster_num_to_sector_num(                                        
    const fat_fs_info_t *fs_info,                                     
    uint32_t             cln                                          
    )                                                                 
{                                                                     
    if ( (cln == 0) && (fs_info->vol.type & (FAT_FAT12 | FAT_FAT16)) )
   169bc:	1a000002 	bne	169cc <msdos_set_first_char4file_name+0x9c>   
        return fs_info->vol.rdir_loc;                                 
                                                                      
    return (((cln - FAT_RSRVD_CLN) << fs_info->vol.spc_log2) +        
   169c0:	e5d40005 	ldrb	r0, [r4, #5]                                 <== NOT EXECUTED
   169c4:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          <== NOT EXECUTED
   169c8:	e0831011 	add	r1, r3, r1, lsl r0                            <== NOT EXECUTED
     */                                                               
    while (true)                                                      
    {                                                                 
      uint32_t sec = (fat_cluster_num_to_sector_num(&fs_info->fat, start.cln) +
                      (start.ofs >> fs_info->fat.vol.sec_log2));      
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));       
   169cc:	e2422001 	sub	r2, r2, #1                                    
                                                                      
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
   169d0:	e002200c 	and	r2, r2, ip                                    
   169d4:	e1a00004 	mov	r0, r4                                        
   169d8:	e3a03001 	mov	r3, #1                                        
   169dc:	e0811e3c 	add	r1, r1, ip, lsr lr                            
   169e0:	e58d7000 	str	r7, [sp]                                      
   169e4:	ebffedd1 	bl	12130 <fat_sector_write>                       
                             1, &fchar);                              
      if (ret < 0)                                                    
   169e8:	e3500000 	cmp	r0, #0                                        
   169ec:	ba000018 	blt	16a54 <msdos_set_first_char4file_name+0x124>  
        return -1;                                                    
                                                                      
      if ((start.cln == end.cln) && (start.ofs == end.ofs))           
   169f0:	e28d1008 	add	r1, sp, #8                                    
   169f4:	e8911002 	ldm	r1, {r1, ip}                                  
   169f8:	e1560001 	cmp	r6, r1                                        
   169fc:	1affffe2 	bne	1698c <msdos_set_first_char4file_name+0x5c>   
   16a00:	e15c0008 	cmp	ip, r8                                        
   16a04:	1affffe0 	bne	1698c <msdos_set_first_char4file_name+0x5c>   
          return rc;                                                  
        start.ofs = 0;                                                
      }                                                               
    }                                                                 
                                                                      
    return  RC_OK;                                                    
   16a08:	e3a0c000 	mov	ip, #0                                        
}                                                                     
   16a0c:	e1a0000c 	mov	r0, ip                                        
   16a10:	e28dd010 	add	sp, sp, #16                                   
   16a14:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
      if (start.ofs >= dir_block_size)                                
      {                                                               
        int rc;                                                       
        if ((end.cln == fs_info->fat.vol.rdir_cl) &&                  
   16a18:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          <== NOT EXECUTED
   16a1c:	e1560003 	cmp	r6, r3                                        <== NOT EXECUTED
   16a20:	1a000002 	bne	16a30 <msdos_set_first_char4file_name+0x100>  <== NOT EXECUTED
            (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))        
   16a24:	e5d4300e 	ldrb	r3, [r4, #14]                                <== NOT EXECUTED
                                                                      
      start.ofs += MSDOS_DIRECTORY_ENTRY_STRUCT_SIZE;                 
      if (start.ofs >= dir_block_size)                                
      {                                                               
        int rc;                                                       
        if ((end.cln == fs_info->fat.vol.rdir_cl) &&                  
   16a28:	e3130003 	tst	r3, #3                                        <== NOT EXECUTED
   16a2c:	1afffff5 	bne	16a08 <msdos_set_first_char4file_name+0xd8>   <== NOT EXECUTED
            (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))        
          break;                                                      
        rc = fat_get_fat_cluster(&fs_info->fat, start.cln, &start.cln);
   16a30:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   16a34:	e28d2008 	add	r2, sp, #8                                    <== NOT EXECUTED
   16a38:	eb0004bb 	bl	17d2c <fat_get_fat_cluster>                    <== NOT EXECUTED
        if ( rc != RC_OK )                                            
   16a3c:	e250c000 	subs	ip, r0, #0                                   <== NOT EXECUTED
   16a40:	1afffff1 	bne	16a0c <msdos_set_first_char4file_name+0xdc>   <== NOT EXECUTED
          return rc;                                                  
        start.ofs = 0;                                                
   16a44:	e58dc00c 	str	ip, [sp, #12]                                 <== NOT EXECUTED
   16a48:	e1d420b0 	ldrh	r2, [r4]                                     <== NOT EXECUTED
   16a4c:	e5d4e002 	ldrb	lr, [r4, #2]                                 <== NOT EXECUTED
   16a50:	eaffffcb 	b	16984 <msdos_set_first_char4file_name+0x54>     <== NOT EXECUTED
      uint32_t byte = (start.ofs & (fs_info->fat.vol.bps - 1));       
                                                                      
      ret = fat_sector_write(&fs_info->fat, sec, byte + MSDOS_FILE_NAME_OFFSET,
                             1, &fchar);                              
      if (ret < 0)                                                    
        return -1;                                                    
   16a54:	e3e0c000 	mvn	ip, #0                                        <== NOT EXECUTED
   16a58:	eaffffeb 	b	16a0c <msdos_set_first_char4file_name+0xdc>     <== NOT EXECUTED
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
   16a5c:	e5d4300e 	ldrb	r3, [r4, #14]                                
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
   16a60:	e3130003 	tst	r3, #3                                        
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
   16a64:	1594502c 	ldrne	r5, [r4, #44]	; 0x2c                        
    msdos_fs_info_t *fs_info = mt_entry->fs_info;                     
    uint32_t         dir_block_size;                                  
    fat_pos_t        start = dir_pos->lname;                          
    fat_pos_t        end = dir_pos->sname;                            
                                                                      
    if ((end.cln == fs_info->fat.vol.rdir_cl) &&                      
   16a68:	0affffbd 	beq	16964 <msdos_set_first_char4file_name+0x34>   
        (fs_info->fat.vol.type & (FAT_FAT12 | FAT_FAT16)))            
      dir_block_size = fs_info->fat.vol.rdir_size;                    
    else                                                              
      dir_block_size = fs_info->fat.vol.bpc;                          
                                                                      
    if (dir_pos->lname.cln == FAT_FILE_SHORT_NAME)                    
   16a6c:	e5913008 	ldr	r3, [r1, #8]                                  
   16a70:	e3730001 	cmn	r3, #1                                        
   16a74:	1affffbe 	bne	16974 <msdos_set_first_char4file_name+0x44>   
      start = dir_pos->sname;                                         
   16a78:	e891000c 	ldm	r1, {r2, r3}                                  
   16a7c:	e58d2008 	str	r2, [sp, #8]                                  
   16a80:	e58d300c 	str	r3, [sp, #12]                                 
   16a84:	eaffffba 	b	16974 <msdos_set_first_char4file_name+0x44>     
                                                                      

0000c6c8 <msdos_set_sectors_per_cluster_from_request>: msdos_format_param_t *fmt_params ) { int ret_val = -1; uint32_t onebit; if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {
    c6c8:	e3500000 	cmp	r0, #0                                        
                                                                      
static int                                                            
msdos_set_sectors_per_cluster_from_request(                           
  const msdos_format_request_param_t *rqdata,                         
  msdos_format_param_t               *fmt_params )                    
{                                                                     
    c6cc:	e92d4070 	push	{r4, r5, r6, lr}                             
    c6d0:	e1a06001 	mov	r6, r1                                        
  int      ret_val = -1;                                              
  uint32_t onebit;                                                    
                                                                      
  if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {          
    c6d4:	0a00000f 	beq	c718 <msdos_set_sectors_per_cluster_from_request+0x50>
    c6d8:	e5903008 	ldr	r3, [r0, #8]                                  
    c6dc:	e3530000 	cmp	r3, #0                                        
    fmt_params->sectors_per_cluster = rqdata->sectors_per_cluster;    
    c6e0:	1581300c 	strne	r3, [r1, #12]                               
  msdos_format_param_t               *fmt_params )                    
{                                                                     
  int      ret_val = -1;                                              
  uint32_t onebit;                                                    
                                                                      
  if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {          
    c6e4:	0a00000b 	beq	c718 <msdos_set_sectors_per_cluster_from_request+0x50>
                                                                      
static int                                                            
msdos_set_sectors_per_cluster_from_request(                           
  const msdos_format_request_param_t *rqdata,                         
  msdos_format_param_t               *fmt_params )                    
{                                                                     
    c6e8:	e3a05008 	mov	r5, #8                                        
    c6ec:	e3a04080 	mov	r4, #128	; 0x80                               
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
    c6f0:	e1530004 	cmp	r3, r4                                        
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
    c6f4:	e3a00902 	mov	r0, #32768	; 0x8000                           
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
    c6f8:	3a000008 	bcc	c720 <msdos_set_sectors_per_cluster_from_request+0x58>
      fmt_params->sectors_per_cluster = onebit;                       
    c6fc:	e586400c 	str	r4, [r6, #12]                                 
      if (   fmt_params->sectors_per_cluster                          
          <= 32768L / fmt_params->bytes_per_sector ) {                
    c700:	e5961000 	ldr	r1, [r6]                                      
    c704:	ebffd58d 	bl	1d40 <__aeabi_uidiv>                           
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    if ( fmt_params->sectors_per_cluster >= onebit ) {                
      fmt_params->sectors_per_cluster = onebit;                       
      if (   fmt_params->sectors_per_cluster                          
    c708:	e1500004 	cmp	r0, r4                                        
    c70c:	3a000003 	bcc	c720 <msdos_set_sectors_per_cluster_from_request+0x58>
          <= 32768L / fmt_params->bytes_per_sector ) {                
        /* value is small enough so this value is ok */               
        onebit = 1;                                                   
        ret_val = 0;                                                  
    c710:	e3a00000 	mov	r0, #0                                        
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
  }                                                                   
                                                                      
  return ret_val;                                                     
}                                                                     
    c714:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  msdos_format_param_t               *fmt_params )                    
{                                                                     
  int      ret_val = -1;                                              
  uint32_t onebit;                                                    
                                                                      
  if ( rqdata != NULL && rqdata->sectors_per_cluster > 0 ) {          
    c718:	e596300c 	ldr	r3, [r6, #12]                                 
    c71c:	eafffff1 	b	c6e8 <msdos_set_sectors_per_cluster_from_request+0x20>
   * check sectors per cluster.                                       
   * must be power of 2                                               
   * must be smaller than or equal to 128                             
   * sectors_per_cluster*bytes_per_sector must not be bigger than 32K 
   */                                                                 
  for ( onebit = 128; onebit >= 1; onebit = onebit >> 1 ) {           
    c720:	e2555001 	subs	r5, r5, #1                                   
    c724:	e1a040a4 	lsr	r4, r4, #1                                    
    c728:	1596300c 	ldrne	r3, [r6, #12]                               
    c72c:	1affffef 	bne	c6f0 <msdos_set_sectors_per_cluster_from_request+0x28>
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (ret_val != 0) {                                                 
    errno = EINVAL;                                                   
    c730:	eb00345f 	bl	198b4 <__errno>                                <== NOT EXECUTED
    c734:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    c738:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    c73c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    c740:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

00017ba4 <msdos_sync>: int msdos_sync(rtems_libio_t *iop) { int rc = RC_OK; rtems_status_code sc = RTEMS_SUCCESSFUL; msdos_fs_info_t *fs_info = iop->pathinfo.mt_entry->fs_info;
   17ba4:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
    return MSDOS_NAME_NOT_FOUND_ERR;                                  
}                                                                     
                                                                      
int                                                                   
msdos_sync(rtems_libio_t *iop)                                        
{                                                                     
   17ba8:	e92d4030 	push	{r4, r5, lr}                                 
    int                rc = RC_OK;                                    
    rtems_status_code  sc = RTEMS_SUCCESSFUL;                         
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
   17bac:	e5934008 	ldr	r4, [r3, #8]                                  
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
   17bb0:	e3a01000 	mov	r1, #0                                        
   17bb4:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   17bb8:	e1a02001 	mov	r2, r1                                        
   17bbc:	ebffc31d 	bl	8838 <rtems_semaphore_obtain>                  
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
   17bc0:	e3500000 	cmp	r0, #0                                        
   17bc4:	1a000006 	bne	17be4 <msdos_sync+0x40>                       
        rtems_set_errno_and_return_minus_one(EIO);                    
                                                                      
    rc = fat_sync(&fs_info->fat);                                     
   17bc8:	e1a00004 	mov	r0, r4                                        
   17bcc:	ebffec06 	bl	12bec <fat_sync>                               
   17bd0:	e1a05000 	mov	r5, r0                                        
                                                                      
    rtems_semaphore_release(fs_info->vol_sema);                       
   17bd4:	e594009c 	ldr	r0, [r4, #156]	; 0x9c                         
   17bd8:	ebffc35f 	bl	895c <rtems_semaphore_release>                 
    return rc;                                                        
}                                                                     
   17bdc:	e1a00005 	mov	r0, r5                                        
   17be0:	e8bd8030 	pop	{r4, r5, pc}                                  
    msdos_fs_info_t   *fs_info = iop->pathinfo.mt_entry->fs_info;     
                                                                      
    sc = rtems_semaphore_obtain(fs_info->vol_sema, RTEMS_WAIT,        
                                MSDOS_VOLUME_SEMAPHORE_TIMEOUT);      
    if (sc != RTEMS_SUCCESSFUL)                                       
        rtems_set_errno_and_return_minus_one(EIO);                    
   17be4:	eb000732 	bl	198b4 <__errno>                                <== NOT EXECUTED
   17be8:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   17bec:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   17bf0:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   17bf4:	eafffff8 	b	17bdc <msdos_sync+0x38>                         <== NOT EXECUTED
                                                                      

0000d778 <msdos_unlock>: } void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry) { msdos_fs_info_t *fs_info = mt_entry->fs_info; rtems_status_code sc = rtems_semaphore_release(fs_info->vol_sema);
    d778:	e5903008 	ldr	r3, [r0, #8]                                  
    rtems_fatal_error_occurred(0xdeadbeef);                           
  }                                                                   
}                                                                     
                                                                      
void msdos_unlock(const rtems_filesystem_mount_table_entry_t *mt_entry)
{                                                                     
    d77c:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  msdos_fs_info_t *fs_info = mt_entry->fs_info;                       
  rtems_status_code sc = rtems_semaphore_release(fs_info->vol_sema);  
    d780:	e593009c 	ldr	r0, [r3, #156]	; 0x9c                         
    d784:	ebffec74 	bl	895c <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL) {                                       
    d788:	e3500000 	cmp	r0, #0                                        
    d78c:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_fatal_error_occurred(0xdeadbeef);                           
    d790:	e59f0000 	ldr	r0, [pc]	; d798 <msdos_unlock+0x20>           <== NOT EXECUTED
    d794:	ebffee10 	bl	8fdc <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

00002dcc <newlib_free_buffers>: * task. */ int newlib_free_buffers( FILE *fp ) {
    2dcc:	e92d4010 	push	{r4, lr}                                     
    2dd0:	e1a04000 	mov	r4, r0                                        
  switch ( fileno(fp) ) {                                             
    2dd4:	eb002b8c 	bl	dc0c <fileno>                                  
    2dd8:	e3500002 	cmp	r0, #2                                        
    2ddc:	9a000003 	bls	2df0 <newlib_free_buffers+0x24>               
        fp->_flags &= ~__SMBF;                                        
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
      }                                                               
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
    2de0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    2de4:	eb002acb 	bl	d918 <fclose>                                  <== NOT EXECUTED
  }                                                                   
  return 0;                                                           
}                                                                     
    2de8:	e3a00000 	mov	r0, #0                                        
    2dec:	e8bd8010 	pop	{r4, pc}                                      
{                                                                     
  switch ( fileno(fp) ) {                                             
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
    2df0:	e1d430bc 	ldrh	r3, [r4, #12]                                
    2df4:	e3130080 	tst	r3, #128	; 0x80                               
    2df8:	0afffffa 	beq	2de8 <newlib_free_buffers+0x1c>               
        free( fp->_bf._base );                                        
    2dfc:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    2e00:	ebfffdc3 	bl	2514 <free>                                    <== NOT EXECUTED
        fp->_flags &= ~__SMBF;                                        
    2e04:	e1d420bc 	ldrh	r2, [r4, #12]                                <== NOT EXECUTED
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
    2e08:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    case 0:                                                           
    case 1:                                                           
    case 2:                                                           
      if (fp->_flags & __SMBF) {                                      
        free( fp->_bf._base );                                        
        fp->_flags &= ~__SMBF;                                        
    2e0c:	e3c22080 	bic	r2, r2, #128	; 0x80                           <== NOT EXECUTED
    2e10:	e1c420bc 	strh	r2, [r4, #12]                                <== NOT EXECUTED
        fp->_bf._base = fp->_p = (unsigned char *) NULL;              
    2e14:	e5843000 	str	r3, [r4]                                      <== NOT EXECUTED
    2e18:	e5843010 	str	r3, [r4, #16]                                 <== NOT EXECUTED
      break;                                                          
    default:                                                          
     fclose(fp);                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
    2e1c:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    2e20:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

00005bd4 <null_op_fsmount_me>: rtems_filesystem_mount_table_entry_t *mt_entry, const void *data ) { return -1; }
    5bd4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    5bd8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00005be4 <null_op_fsunmount_me>: static void null_op_fsunmount_me( rtems_filesystem_mount_table_entry_t *mt_entry ) { /* Do nothing */ }
    5be4:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00005bac <null_op_link>: const char *name, size_t namelen ) { return -1; }
    5bac:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    5bb0:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00005bcc <null_op_mount>: static int null_op_mount( rtems_filesystem_mount_table_entry_t *mt_entry ) { return -1; }
    5bcc:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    5bd0:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00005bf8 <null_op_readlink>: char *buf, size_t bufsize ) { return -1; }
    5bf8:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    5bfc:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00005c00 <null_op_rename>: const char *name, size_t namelen ) { return -1; }
    5c00:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    5c04:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00005ba4 <null_op_rmnod>: const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *loc ) { return -1; }
    5ba4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    5ba8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00004cf4 <oproc>: /* * Handle output processing */ static void oproc (unsigned char c, struct rtems_termios_tty *tty) {
    4cf4:	e92d4010 	push	{r4, lr}                                     
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    4cf8:	e5913034 	ldr	r3, [r1, #52]	; 0x34                          
/*                                                                    
 * Handle output processing                                           
 */                                                                   
static void                                                           
oproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
    4cfc:	e24dd004 	sub	sp, sp, #4                                    
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    4d00:	e3130001 	tst	r3, #1                                        
/*                                                                    
 * Handle output processing                                           
 */                                                                   
static void                                                           
oproc (unsigned char c, struct rtems_termios_tty *tty)                
{                                                                     
    4d04:	e1a04001 	mov	r4, r1                                        
    4d08:	e5cd0000 	strb	r0, [sp]                                     
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    4d0c:	0a00001b 	beq	4d80 <oproc+0x8c>                             
    switch (c) {                                                      
    4d10:	e20010ff 	and	r1, r0, #255	; 0xff                           
    4d14:	e2412008 	sub	r2, r1, #8                                    
    4d18:	e3520005 	cmp	r2, #5                                        
    4d1c:	979ff102 	ldrls	pc, [pc, r2, lsl #2]                        
    4d20:	ea000005 	b	4d3c <oproc+0x48>                               
    4d24:	00004e38 	.word	0x00004e38                                  
    4d28:	00004dd0 	.word	0x00004dd0                                  <== NOT EXECUTED
    4d2c:	00004e08 	.word	0x00004e08                                  <== NOT EXECUTED
    4d30:	00004d3c 	.word	0x00004d3c                                  <== NOT EXECUTED
    4d34:	00004d3c 	.word	0x00004d3c                                  <== NOT EXECUTED
    4d38:	00004d98 	.word	0x00004d98                                  <== NOT EXECUTED
      if (tty->column > 0)                                            
        tty->column--;                                                
      break;                                                          
                                                                      
    default:                                                          
      if (tty->termios.c_oflag & OLCUC)                               
    4d3c:	e3130002 	tst	r3, #2                                        
        c = toupper(c);                                               
    4d40:	e59f3104 	ldr	r3, [pc, #260]	; 4e4c <oproc+0x158>           
    4d44:	e5933000 	ldr	r3, [r3]                                      
      if (tty->column > 0)                                            
        tty->column--;                                                
      break;                                                          
                                                                      
    default:                                                          
      if (tty->termios.c_oflag & OLCUC)                               
    4d48:	0a000006 	beq	4d68 <oproc+0x74>                             
        c = toupper(c);                                               
    4d4c:	e0832001 	add	r2, r3, r1                                    <== NOT EXECUTED
    4d50:	e5d22001 	ldrb	r2, [r2, #1]                                 <== NOT EXECUTED
    4d54:	e2022003 	and	r2, r2, #3                                    <== NOT EXECUTED
    4d58:	e3520002 	cmp	r2, #2                                        <== NOT EXECUTED
    4d5c:	02411020 	subeq	r1, r1, #32                                 <== NOT EXECUTED
    4d60:	e20110ff 	and	r1, r1, #255	; 0xff                           <== NOT EXECUTED
    4d64:	e5cd1000 	strb	r1, [sp]                                     <== NOT EXECUTED
      if (!iscntrl(c))                                                
    4d68:	e0831001 	add	r1, r3, r1                                    
    4d6c:	e5d13001 	ldrb	r3, [r1, #1]                                 
    4d70:	e3130020 	tst	r3, #32                                       
        tty->column++;                                                
    4d74:	05943028 	ldreq	r3, [r4, #40]	; 0x28                        
    4d78:	02833001 	addeq	r3, r3, #1                                  
    4d7c:	05843028 	streq	r3, [r4, #40]	; 0x28                        
      break;                                                          
    }                                                                 
  }                                                                   
  rtems_termios_puts (&c, 1, tty);                                    
    4d80:	e1a0000d 	mov	r0, sp                                        
    4d84:	e3a01001 	mov	r1, #1                                        
    4d88:	e1a02004 	mov	r2, r4                                        
    4d8c:	ebffff92 	bl	4bdc <rtems_termios_puts>                      
}                                                                     
    4d90:	e28dd004 	add	sp, sp, #4                                    
    4d94:	e8bd8010 	pop	{r4, pc}                                      
        tty->column = 0;                                              
      }                                                               
      break;                                                          
                                                                      
    case '\r':                                                        
      if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))       
    4d98:	e3130010 	tst	r3, #16                                       <== NOT EXECUTED
    4d9c:	0a000002 	beq	4dac <oproc+0xb8>                             <== NOT EXECUTED
    4da0:	e5942028 	ldr	r2, [r4, #40]	; 0x28                          <== NOT EXECUTED
    4da4:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
    4da8:	0afffff8 	beq	4d90 <oproc+0x9c>                             <== NOT EXECUTED
        return;                                                       
      if (tty->termios.c_oflag & OCRNL) {                             
    4dac:	e2132008 	ands	r2, r3, #8                                   <== NOT EXECUTED
        c = '\n';                                                     
        if (tty->termios.c_oflag & ONLRET)                            
          tty->column = 0;                                            
        break;                                                        
      }                                                               
      tty->column = 0;                                                
    4db0:	05842028 	streq	r2, [r4, #40]	; 0x28                        <== NOT EXECUTED
      break;                                                          
                                                                      
    case '\r':                                                        
      if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))       
        return;                                                       
      if (tty->termios.c_oflag & OCRNL) {                             
    4db4:	0afffff1 	beq	4d80 <oproc+0x8c>                             <== NOT EXECUTED
        c = '\n';                                                     
        if (tty->termios.c_oflag & ONLRET)                            
    4db8:	e3130020 	tst	r3, #32                                       <== NOT EXECUTED
                                                                      
    case '\r':                                                        
      if ((tty->termios.c_oflag & ONOCR) && (tty->column == 0))       
        return;                                                       
      if (tty->termios.c_oflag & OCRNL) {                             
        c = '\n';                                                     
    4dbc:	e3a0300a 	mov	r3, #10                                       <== NOT EXECUTED
    4dc0:	e5cd3000 	strb	r3, [sp]                                     <== NOT EXECUTED
        if (tty->termios.c_oflag & ONLRET)                            
          tty->column = 0;                                            
    4dc4:	13a03000 	movne	r3, #0                                      <== NOT EXECUTED
    4dc8:	15843028 	strne	r3, [r4, #40]	; 0x28                        <== NOT EXECUTED
    4dcc:	eaffffeb 	b	4d80 <oproc+0x8c>                               <== NOT EXECUTED
      }                                                               
      tty->column = 0;                                                
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
    4dd0:	e5942028 	ldr	r2, [r4, #40]	; 0x28                          
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
    4dd4:	e2033b06 	and	r3, r3, #6144	; 0x1800                        
      }                                                               
      tty->column = 0;                                                
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
    4dd8:	e2021007 	and	r1, r2, #7                                    
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
    4ddc:	e3530b06 	cmp	r3, #6144	; 0x1800                            
      }                                                               
      tty->column = 0;                                                
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
    4de0:	e2611008 	rsb	r1, r1, #8                                    
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
        tty->column += i;                                             
        rtems_termios_puts ( "        ",  i, tty);                    
        return;                                                       
      }                                                               
      tty->column += i;                                               
    4de4:	10821001 	addne	r1, r2, r1                                  
    4de8:	15841028 	strne	r1, [r4, #40]	; 0x28                        
      tty->column = 0;                                                
      break;                                                          
                                                                      
    case '\t':                                                        
      i = 8 - (tty->column & 7);                                      
      if ((tty->termios.c_oflag & TABDLY) == XTABS) {                 
    4dec:	1affffe3 	bne	4d80 <oproc+0x8c>                             
        tty->column += i;                                             
    4df0:	e0822001 	add	r2, r2, r1                                    
    4df4:	e5842028 	str	r2, [r4, #40]	; 0x28                          
        rtems_termios_puts ( "        ",  i, tty);                    
    4df8:	e59f0050 	ldr	r0, [pc, #80]	; 4e50 <oproc+0x15c>            
    4dfc:	e1a02004 	mov	r2, r4                                        
    4e00:	ebffff75 	bl	4bdc <rtems_termios_puts>                      
        return;                                                       
    4e04:	eaffffe1 	b	4d90 <oproc+0x9c>                               
  int  i;                                                             
                                                                      
  if (tty->termios.c_oflag & OPOST) {                                 
    switch (c) {                                                      
    case '\n':                                                        
      if (tty->termios.c_oflag & ONLRET)                              
    4e08:	e3130020 	tst	r3, #32                                       
        tty->column = 0;                                              
    4e0c:	13a02000 	movne	r2, #0                                      
    4e10:	15842028 	strne	r2, [r4, #40]	; 0x28                        
      if (tty->termios.c_oflag & ONLCR) {                             
    4e14:	e3130004 	tst	r3, #4                                        
    4e18:	0affffd8 	beq	4d80 <oproc+0x8c>                             
        rtems_termios_puts ("\r", 1, tty);                            
    4e1c:	e59f0030 	ldr	r0, [pc, #48]	; 4e54 <oproc+0x160>            
    4e20:	e3a01001 	mov	r1, #1                                        
    4e24:	e1a02004 	mov	r2, r4                                        
    4e28:	ebffff6b 	bl	4bdc <rtems_termios_puts>                      
        tty->column = 0;                                              
    4e2c:	e3a03000 	mov	r3, #0                                        
    4e30:	e5843028 	str	r3, [r4, #40]	; 0x28                          
    4e34:	eaffffd1 	b	4d80 <oproc+0x8c>                               
      }                                                               
      tty->column += i;                                               
      break;                                                          
                                                                      
    case '\b':                                                        
      if (tty->column > 0)                                            
    4e38:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          <== NOT EXECUTED
    4e3c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
        tty->column--;                                                
    4e40:	c2433001 	subgt	r3, r3, #1                                  <== NOT EXECUTED
    4e44:	c5843028 	strgt	r3, [r4, #40]	; 0x28                        <== NOT EXECUTED
    4e48:	eaffffcc 	b	4d80 <oproc+0x8c>                               <== NOT EXECUTED
                                                                      

00003960 <partition_free>: * RETURNS: * N/A */ static void partition_free(rtems_part_desc_t *part_desc) {
    3960:	e92d4070 	push	{r4, r5, r6, lr}                             
    int part_num;                                                     
                                                                      
    if (part_desc == NULL)                                            
    3964:	e2506000 	subs	r6, r0, #0                                   
    3968:	08bd8070 	popeq	{r4, r5, r6, pc}                            
        return;                                                       
                                                                      
    if (is_extended(part_desc->sys_type))                             
    396c:	e5d63001 	ldrb	r3, [r6, #1]                                 
    3970:	e3530005 	cmp	r3, #5                                        
    3974:	13530085 	cmpne	r3, #133	; 0x85                             
    3978:	1a000005 	bne	3994 <partition_free+0x34>                    
 *                                                                    
 * RETURNS:                                                           
 *      N/A                                                           
 */                                                                   
static void                                                           
partition_free(rtems_part_desc_t *part_desc)                          
    397c:	e2865014 	add	r5, r6, #20                                   <== NOT EXECUTED
    3980:	e3a04004 	mov	r4, #4                                        <== NOT EXECUTED
    {                                                                 
        for (part_num = 0;                                            
             part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; 
             part_num++)                                              
        {                                                             
            partition_free(part_desc->sub_part[part_num]);            
    3984:	e5b50004 	ldr	r0, [r5, #4]!                                 <== NOT EXECUTED
    3988:	ebfffff4 	bl	3960 <partition_free>                          <== NOT EXECUTED
    if (part_desc == NULL)                                            
        return;                                                       
                                                                      
    if (is_extended(part_desc->sys_type))                             
    {                                                                 
        for (part_num = 0;                                            
    398c:	e2544001 	subs	r4, r4, #1                                   <== NOT EXECUTED
    3990:	1afffffb 	bne	3984 <partition_free+0x24>                    <== NOT EXECUTED
        {                                                             
            partition_free(part_desc->sub_part[part_num]);            
        }                                                             
    }                                                                 
                                                                      
    free(part_desc);                                                  
    3994:	e1a00006 	mov	r0, r6                                        
}                                                                     
    3998:	e8bd4070 	pop	{r4, r5, r6, lr}                              
        {                                                             
            partition_free(part_desc->sub_part[part_num]);            
        }                                                             
    }                                                                 
                                                                      
    free(part_desc);                                                  
    399c:	ea0003e0 	b	4924 <free>                                     
                                                                      

00003c44 <partition_table_get>: * RTEMS_SUCCESSFUL if success, * RTEMS_INTERNAL_ERROR otherwise */ static rtems_status_code partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc) {
    3c44:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    3c48:	e1a06001 	mov	r6, r1                                        
    3c4c:	e24dd050 	sub	sp, sp, #80	; 0x50                            
    struct stat         dev_stat;                                     
    rtems_status_code   rc;                                           
    int                 fd;                                           
                                                                      
    fd = open(dev_name, O_RDONLY);                                    
    3c50:	e3a01000 	mov	r1, #0                                        
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_INTERNAL_ERROR otherwise                                
 */                                                                   
static rtems_status_code                                              
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
{                                                                     
    3c54:	e1a07000 	mov	r7, r0                                        
    struct stat         dev_stat;                                     
    rtems_status_code   rc;                                           
    int                 fd;                                           
                                                                      
    fd = open(dev_name, O_RDONLY);                                    
    3c58:	eb0006cb 	bl	578c <open>                                    
    if (fd < 0)                                                       
    3c5c:	e2505000 	subs	r5, r0, #0                                   
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    3c60:	b3a04019 	movlt	r4, #25                                     
    struct stat         dev_stat;                                     
    rtems_status_code   rc;                                           
    int                 fd;                                           
                                                                      
    fd = open(dev_name, O_RDONLY);                                    
    if (fd < 0)                                                       
    3c64:	aa000002 	bge	3c74 <partition_table_get+0x30>               
    rc = read_mbr(fd, disk_desc);                                     
                                                                      
    close(fd);                                                        
                                                                      
    return rc;                                                        
}                                                                     
    3c68:	e1a00004 	mov	r0, r4                                        
    3c6c:	e28dd050 	add	sp, sp, #80	; 0x50                            
    3c70:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
    if (fd < 0)                                                       
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    rc = fstat(fd, &dev_stat);                                        
    3c74:	e1a0100d 	mov	r1, sp                                        
    3c78:	eb000352 	bl	49c8 <fstat>                                   
    if (rc != RTEMS_SUCCESSFUL)                                       
    3c7c:	e2504000 	subs	r4, r0, #0                                   
    3c80:	0a000003 	beq	3c94 <partition_table_get+0x50>               
    {                                                                 
        close(fd);                                                    
    3c84:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    3c88:	eb00027c 	bl	4680 <close>                                   <== NOT EXECUTED
        return RTEMS_INTERNAL_ERROR;                                  
    3c8c:	e3a04019 	mov	r4, #25                                       <== NOT EXECUTED
    3c90:	eafffff4 	b	3c68 <partition_table_get+0x24>                 <== NOT EXECUTED
    }                                                                 
                                                                      
    strncpy (disk_desc->dev_name, dev_name, 15);                      
    3c94:	e1a01007 	mov	r1, r7                                        
    3c98:	e3a0200f 	mov	r2, #15                                       
    3c9c:	e2860008 	add	r0, r6, #8                                    
    3ca0:	eb0043e5 	bl	14c3c <strncpy>                                
    disk_desc->dev = dev_stat.st_rdev;                                
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
    3ca4:	e59d3040 	ldr	r3, [sp, #64]	; 0x40                          
        close(fd);                                                    
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    strncpy (disk_desc->dev_name, dev_name, 15);                      
    disk_desc->dev = dev_stat.st_rdev;                                
    3ca8:	e28d1018 	add	r1, sp, #24                                   
    3cac:	e8910003 	ldm	r1, {r0, r1}                                  
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
    3cb0:	e3530000 	cmp	r3, #0                                        
    3cb4:	03a03c02 	moveq	r3, #512	; 0x200                            
 */                                                                   
static rtems_status_code                                              
read_mbr(int fd, rtems_disk_desc_t *disk_desc)                        
{                                                                     
    int                  part_num;                                    
    rtems_sector_data_t *sector = NULL;                               
    3cb8:	e28d2050 	add	r2, sp, #80	; 0x50                            
        close(fd);                                                    
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    strncpy (disk_desc->dev_name, dev_name, 15);                      
    disk_desc->dev = dev_stat.st_rdev;                                
    3cbc:	e8860003 	stm	r6, {r0, r1}                                  
 */                                                                   
static rtems_status_code                                              
read_mbr(int fd, rtems_disk_desc_t *disk_desc)                        
{                                                                     
    int                  part_num;                                    
    rtems_sector_data_t *sector = NULL;                               
    3cc0:	e5224008 	str	r4, [r2, #-8]!                                
    rtems_part_desc_t   *part_desc;                                   
    uint8_t             *data;                                        
    rtems_status_code    rc;                                          
                                                                      
    /* get MBR sector */                                              
    rc = get_sector(fd, 0, §or);                                  
    3cc4:	e1a01004 	mov	r1, r4                                        
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    strncpy (disk_desc->dev_name, dev_name, 15);                      
    disk_desc->dev = dev_stat.st_rdev;                                
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
    3cc8:	e5863018 	str	r3, [r6, #24]                                 
    rtems_part_desc_t   *part_desc;                                   
    uint8_t             *data;                                        
    rtems_status_code    rc;                                          
                                                                      
    /* get MBR sector */                                              
    rc = get_sector(fd, 0, §or);                                  
    3ccc:	e1a00005 	mov	r0, r5                                        
    3cd0:	ebffff32 	bl	39a0 <get_sector>                              
    if (rc != RTEMS_SUCCESSFUL)                                       
    3cd4:	e2504000 	subs	r4, r0, #0                                   
    {                                                                 
        if (sector)                                                   
    3cd8:	e59d0048 	ldr	r0, [sp, #72]	; 0x48                          
    uint8_t             *data;                                        
    rtems_status_code    rc;                                          
                                                                      
    /* get MBR sector */                                              
    rc = get_sector(fd, 0, §or);                                  
    if (rc != RTEMS_SUCCESSFUL)                                       
    3cdc:	0a000004 	beq	3cf4 <partition_table_get+0xb0>               
    {                                                                 
        if (sector)                                                   
    3ce0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            free(sector);                                             
    3ce4:	1b00030e 	blne	4924 <free>                                  <== NOT EXECUTED
    disk_desc->sector_size = (dev_stat.st_blksize) ? dev_stat.st_blksize :
                                              RTEMS_IDE_SECTOR_SIZE;  
                                                                      
    rc = read_mbr(fd, disk_desc);                                     
                                                                      
    close(fd);                                                        
    3ce8:	e1a00005 	mov	r0, r5                                        
    3cec:	eb000263 	bl	4680 <close>                                   
                                                                      
    return rc;                                                        
    3cf0:	eaffffdc 	b	3c68 <partition_table_get+0x24>                 
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
    3cf4:	e5d03202 	ldrb	r3, [r0, #514]	; 0x202                       
    3cf8:	e3530055 	cmp	r3, #85	; 0x55                                
    3cfc:	0a000002 	beq	3d0c <partition_table_get+0xc8>               
    }                                                                 
                                                                      
    /* check if the partition table structure is MS-DOS style */      
    if (!msdos_signature_check(sector))                               
    {                                                                 
        free(sector);                                                 
    3d00:	eb000307 	bl	4924 <free>                                    <== NOT EXECUTED
        return RTEMS_INTERNAL_ERROR;                                  
    3d04:	e3a04019 	mov	r4, #25                                       <== NOT EXECUTED
    3d08:	eafffff6 	b	3ce8 <partition_table_get+0xa4>                 <== NOT EXECUTED
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
    3d0c:	e5d03203 	ldrb	r3, [r0, #515]	; 0x203                       
    3d10:	e35300aa 	cmp	r3, #170	; 0xaa                               
    3d14:	1afffff9 	bne	3d00 <partition_table_get+0xbc>               
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    /* read and process 4 primary partition descriptors */            
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
    3d18:	e2800d07 	add	r0, r0, #448	; 0x1c0                          
    3d1c:	e2808002 	add	r8, r0, #2                                    
    3d20:	e1a0a006 	mov	sl, r6                                        
    3d24:	e3a07001 	mov	r7, #1                                        
    3d28:	e1a00008 	mov	r0, r8                                        
    3d2c:	e28d104c 	add	r1, sp, #76	; 0x4c                            
    3d30:	ebffff3e 	bl	3a30 <data_to_part_desc.part.1>                
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
        if (rc != RTEMS_SUCCESSFUL)                                   
    3d34:	e2504000 	subs	r4, r0, #0                                   
    3d38:	1a000029 	bne	3de4 <partition_table_get+0x1a0>              
        {                                                             
            free(sector);                                             
            return rc;                                                
        }                                                             
                                                                      
        if (part_desc != NULL)                                        
    3d3c:	e59d304c 	ldr	r3, [sp, #76]	; 0x4c                          
    3d40:	e3530000 	cmp	r3, #0                                        
        {                                                             
            part_desc->log_id = part_num + 1;                         
            part_desc->disk_desc = disk_desc;                         
            part_desc->end = part_desc->start + part_desc->size - 1;  
    3d44:	19930006 	ldmibne	r3, {r1, r2}                              
    3d48:	10812002 	addne	r2, r1, r2                                  
            return rc;                                                
        }                                                             
                                                                      
        if (part_desc != NULL)                                        
        {                                                             
            part_desc->log_id = part_num + 1;                         
    3d4c:	15c37002 	strbne	r7, [r3, #2]                               
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    3d50:	e2877001 	add	r7, r7, #1                                    
                                                                      
        if (part_desc != NULL)                                        
        {                                                             
            part_desc->log_id = part_num + 1;                         
            part_desc->disk_desc = disk_desc;                         
            part_desc->end = part_desc->start + part_desc->size - 1;  
    3d54:	12422001 	subne	r2, r2, #1                                  
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    3d58:	e20770ff 	and	r7, r7, #255	; 0xff                           
        }                                                             
                                                                      
        if (part_desc != NULL)                                        
        {                                                             
            part_desc->log_id = part_num + 1;                         
            part_desc->disk_desc = disk_desc;                         
    3d5c:	15836010 	strne	r6, [r3, #16]                               
            part_desc->end = part_desc->start + part_desc->size - 1;  
    3d60:	1583200c 	strne	r2, [r3, #12]                               
            disk_desc->partitions[part_num] = part_desc;              
        }                                                             
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
    3d64:	058a4028 	streq	r4, [sl, #40]	; 0x28                        
        if (part_desc != NULL)                                        
        {                                                             
            part_desc->log_id = part_num + 1;                         
            part_desc->disk_desc = disk_desc;                         
            part_desc->end = part_desc->start + part_desc->size - 1;  
            disk_desc->partitions[part_num] = part_desc;              
    3d68:	158a3028 	strne	r3, [sl, #40]	; 0x28                        
                                                                      
    /* read and process 4 primary partition descriptors */            
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
                                                                      
    for (part_num = 0;                                                
    3d6c:	e3570005 	cmp	r7, #5                                        
        else                                                          
        {                                                             
            disk_desc->partitions[part_num] = NULL;                   
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    3d70:	e2888010 	add	r8, r8, #16                                   
    3d74:	e28aa004 	add	sl, sl, #4                                    
                                                                      
    /* read and process 4 primary partition descriptors */            
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
                                                                      
    for (part_num = 0;                                                
    3d78:	1affffea 	bne	3d28 <partition_table_get+0xe4>               
        }                                                             
                                                                      
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
    3d7c:	e59d0048 	ldr	r0, [sp, #72]	; 0x48                          
    3d80:	eb0002e7 	bl	4924 <free>                                    
                                                                      
    disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
    3d84:	e3a07000 	mov	r7, #0                                        
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
                                                                      
    disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
    3d88:	e3a03004 	mov	r3, #4                                        
    3d8c:	e5863024 	str	r3, [r6, #36]	; 0x24                          
        part_desc = disk_desc->partitions[part_num];                  
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
        {                                                             
            read_extended_partition(fd, part_desc->start, part_desc); 
            free(part_desc);                                          
            disk_desc->partitions[part_num] = NULL;                   
    3d90:	e1a08007 	mov	r8, r7                                        
 * RETURNS:                                                           
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_INTERNAL_ERROR otherwise                                
 */                                                                   
static rtems_status_code                                              
partition_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc)
    3d94:	e2866028 	add	r6, r6, #40	; 0x28                            
       but we are to process each primary partition */                
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
    3d98:	e4962004 	ldr	r2, [r6], #4                                  
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
    3d9c:	e3520000 	cmp	r2, #0                                        
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    3da0:	e2877001 	add	r7, r7, #1                                    
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
    3da4:	e58d204c 	str	r2, [sp, #76]	; 0x4c                          
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
    3da8:	0a000003 	beq	3dbc <partition_table_get+0x178>              
    3dac:	e5d23001 	ldrb	r3, [r2, #1]                                 
    3db0:	e3530005 	cmp	r3, #5                                        
    3db4:	13530085 	cmpne	r3, #133	; 0x85                             
    3db8:	0a000002 	beq	3dc8 <partition_table_get+0x184>              
                                                                      
    disk_desc->last_log_id = RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;
                                                                      
    /* There cannot be more than one extended partition,              
       but we are to process each primary partition */                
    for (part_num = 0;                                                
    3dbc:	e3570004 	cmp	r7, #4                                        
    3dc0:	1afffff4 	bne	3d98 <partition_table_get+0x154>              
    3dc4:	eaffffc7 	b	3ce8 <partition_table_get+0xa4>                 
         part_num++)                                                  
    {                                                                 
        part_desc = disk_desc->partitions[part_num];                  
        if (part_desc != NULL && is_extended(part_desc->sys_type))    
        {                                                             
            read_extended_partition(fd, part_desc->start, part_desc); 
    3dc8:	e5921004 	ldr	r1, [r2, #4]                                  
    3dcc:	e1a00005 	mov	r0, r5                                        
    3dd0:	ebffff46 	bl	3af0 <read_extended_partition>                 
            free(part_desc);                                          
    3dd4:	e59d004c 	ldr	r0, [sp, #76]	; 0x4c                          
    3dd8:	eb0002d1 	bl	4924 <free>                                    
            disk_desc->partitions[part_num] = NULL;                   
    3ddc:	e5068004 	str	r8, [r6, #-4]                                 
    3de0:	eafffff5 	b	3dbc <partition_table_get+0x178>                
         part_num++)                                                  
    {                                                                 
        rc = data_to_part_desc(data, &part_desc);                     
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            free(sector);                                             
    3de4:	e59d0048 	ldr	r0, [sp, #72]	; 0x48                          <== NOT EXECUTED
    3de8:	eb0002cd 	bl	4924 <free>                                    <== NOT EXECUTED
    3dec:	eaffffbd 	b	3ce8 <partition_table_get+0xa4>                 <== NOT EXECUTED
                                                                      

00003a78 <pathconf>: */ long pathconf( const char *path, int name ) {
    3a78:	e92d4030 	push	{r4, r5, lr}                                 
    3a7c:	e1a05001 	mov	r5, r1                                        
  int status;                                                         
  int fd;                                                             
                                                                      
  fd = open( path, O_RDONLY );                                        
    3a80:	e3a01000 	mov	r1, #0                                        
    3a84:	ebffff76 	bl	3864 <open>                                    
  if ( fd == -1 )                                                     
    3a88:	e3700001 	cmn	r0, #1                                        
)                                                                     
{                                                                     
  int status;                                                         
  int fd;                                                             
                                                                      
  fd = open( path, O_RDONLY );                                        
    3a8c:	e1a04000 	mov	r4, r0                                        
  if ( fd == -1 )                                                     
    return -1;                                                        
    3a90:	01a05000 	moveq	r5, r0                                      
{                                                                     
  int status;                                                         
  int fd;                                                             
                                                                      
  fd = open( path, O_RDONLY );                                        
  if ( fd == -1 )                                                     
    3a94:	0a000004 	beq	3aac <pathconf+0x34>                          
    return -1;                                                        
                                                                      
  status = fpathconf( fd, name );                                     
    3a98:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
    3a9c:	eb0013e6 	bl	8a3c <fpathconf>                               <== NOT EXECUTED
    3aa0:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
                                                                      
  (void) close( fd );                                                 
    3aa4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    3aa8:	eb0013c5 	bl	89c4 <close>                                   <== NOT EXECUTED
                                                                      
  return status;                                                      
}                                                                     
    3aac:	e1a00005 	mov	r0, r5                                        
    3ab0:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      

0000bd84 <pipe_create>: static uint16_t rtems_pipe_no = 0; int pipe_create( int filsdes[2] ) {
    bd84:	e92d4030 	push	{r4, r5, lr}                                 
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    bd88:	e59f1120 	ldr	r1, [pc, #288]	; beb0 <pipe_create+0x12c>     
static uint16_t rtems_pipe_no = 0;                                    
                                                                      
int pipe_create(                                                      
  int filsdes[2]                                                      
)                                                                     
{                                                                     
    bd8c:	e24dd010 	sub	sp, sp, #16                                   
    bd90:	e1a04000 	mov	r4, r0                                        
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    bd94:	e59f0118 	ldr	r0, [pc, #280]	; beb4 <pipe_create+0x130>     
    bd98:	eb000565 	bl	d334 <rtems_mkdir>                             
    bd9c:	e3500000 	cmp	r0, #0                                        
    return -1;                                                        
    bda0:	13e03000 	mvnne	r3, #0                                      
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
                                                                      
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    bda4:	1a00002d 	bne	be60 <pipe_create+0xdc>                       
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
    bda8:	e59f3108 	ldr	r3, [pc, #264]	; beb8 <pipe_create+0x134>     
    bdac:	e8930007 	ldm	r3, {r0, r1, r2}                              
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
    bdb0:	e59fc104 	ldr	ip, [pc, #260]	; bebc <pipe_create+0x138>     
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
    bdb4:	e1a0300d 	mov	r3, sp                                        
    bdb8:	e8a30003 	stmia	r3!, {r0, r1}                               
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
    bdbc:	e1dc00b0 	ldrh	r0, [ip]                                     
  if (rtems_mkdir("/tmp", S_IRWXU | S_IRWXG | S_IRWXO) != 0)          
    return -1;                                                        
                                                                      
  /* /tmp/.fifoXXXX */                                                
  char fifopath[15];                                                  
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
    bdc0:	e1c320b0 	strh	r2, [r3]                                     
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
    bdc4:	e59f10f4 	ldr	r1, [pc, #244]	; bec0 <pipe_create+0x13c>     
    bdc8:	e2803001 	add	r3, r0, #1                                    
    bdcc:	e1a02000 	mov	r2, r0                                        
    bdd0:	e28d000a 	add	r0, sp, #10                                   
    bdd4:	e1cc30b0 	strh	r3, [ip]                                     
    bdd8:	eb000ec8 	bl	f900 <sprintf>                                 
                                                                      
  /* Try creating FIFO file until find an available file name */      
  while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {                    
    bddc:	e1a0000d 	mov	r0, sp                                        
    bde0:	e3a01d06 	mov	r1, #384	; 0x180                              
    bde4:	eb0004a5 	bl	d080 <mkfifo>                                  
    bde8:	e2505000 	subs	r5, r0, #0                                   
    bdec:	1a000028 	bne	be94 <pipe_create+0x110>                      
    return -1;                                                        
    /* sprintf(fifopath + 10, "%04x", rtems_pipe_no ++); */           
  }                                                                   
                                                                      
  /* Non-blocking open to avoid waiting for writers */                
  filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);                 
    bdf0:	e1a0000d 	mov	r0, sp                                        
    bdf4:	e3a01901 	mov	r1, #16384	; 0x4000                           
    bdf8:	ebffdf62 	bl	3b88 <open>                                    
  if (filsdes[0] < 0) {                                               
    bdfc:	e3500000 	cmp	r0, #0                                        
    return -1;                                                        
    /* sprintf(fifopath + 10, "%04x", rtems_pipe_no ++); */           
  }                                                                   
                                                                      
  /* Non-blocking open to avoid waiting for writers */                
  filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);                 
    be00:	e5840000 	str	r0, [r4]                                      
  if (filsdes[0] < 0) {                                               
    be04:	ba000018 	blt	be6c <pipe_create+0xe8>                       
     the file node will be deleted after it is closed by all. */      
    unlink(fifopath);                                                 
  }                                                                   
  else {                                                              
  /* Reset open file to blocking mode */                              
    iop = rtems_libio_iop(filsdes[0]);                                
    be08:	e59f30b4 	ldr	r3, [pc, #180]	; bec4 <pipe_create+0x140>     
    be0c:	e5933000 	ldr	r3, [r3]                                      
    be10:	e1500003 	cmp	r0, r3                                        
    be14:	359f30ac 	ldrcc	r3, [pc, #172]	; bec8 <pipe_create+0x144>   
    be18:	35933000 	ldrcc	r3, [r3]                                    
    be1c:	30800080 	addcc	r0, r0, r0, lsl #1                          
    be20:	30835200 	addcc	r5, r3, r0, lsl #4                          
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
    be24:	e595300c 	ldr	r3, [r5, #12]                                 
    be28:	e3c33001 	bic	r3, r3, #1                                    
    be2c:	e585300c 	str	r3, [r5, #12]                                 
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
    be30:	e1a0000d 	mov	r0, sp                                        
    be34:	e3a01001 	mov	r1, #1                                        
    be38:	ebffdf52 	bl	3b88 <open>                                    
                                                                      
    if (filsdes[1] < 0) {                                             
    be3c:	e3500000 	cmp	r0, #0                                        
  else {                                                              
  /* Reset open file to blocking mode */                              
    iop = rtems_libio_iop(filsdes[0]);                                
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
    be40:	e5840004 	str	r0, [r4, #4]                                  
int pipe_create(                                                      
  int filsdes[2]                                                      
)                                                                     
{                                                                     
  rtems_libio_t *iop;                                                 
  int err = 0;                                                        
    be44:	a3a05000 	movge	r5, #0                                      
    iop = rtems_libio_iop(filsdes[0]);                                
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
                                                                      
    if (filsdes[1] < 0) {                                             
    be48:	ba00000c 	blt	be80 <pipe_create+0xfc>                       
    err = errno;                                                      
    close(filsdes[0]);                                                
    }                                                                 
  unlink(fifopath);                                                   
    be4c:	e1a0000d 	mov	r0, sp                                        
    be50:	ebffeb0f 	bl	6a94 <unlink>                                  
  }                                                                   
  if(err != 0)                                                        
    be54:	e3550000 	cmp	r5, #0                                        
    rtems_set_errno_and_return_minus_one(err);                        
  return 0;                                                           
    be58:	01a03005 	moveq	r3, r5                                      
    err = errno;                                                      
    close(filsdes[0]);                                                
    }                                                                 
  unlink(fifopath);                                                   
  }                                                                   
  if(err != 0)                                                        
    be5c:	1a00000f 	bne	bea0 <pipe_create+0x11c>                      
    rtems_set_errno_and_return_minus_one(err);                        
  return 0;                                                           
}                                                                     
    be60:	e1a00003 	mov	r0, r3                                        
    be64:	e28dd010 	add	sp, sp, #16                                   
    be68:	e8bd8030 	pop	{r4, r5, pc}                                  
  }                                                                   
                                                                      
  /* Non-blocking open to avoid waiting for writers */                
  filsdes[0] = open(fifopath, O_RDONLY | O_NONBLOCK);                 
  if (filsdes[0] < 0) {                                               
    err = errno;                                                      
    be6c:	eb000b69 	bl	ec18 <__errno>                                 
    be70:	e5905000 	ldr	r5, [r0]                                      
    /* Delete file at errors, or else if pipe is successfully created 
     the file node will be deleted after it is closed by all. */      
    unlink(fifopath);                                                 
    be74:	e1a0000d 	mov	r0, sp                                        
    be78:	ebffeb05 	bl	6a94 <unlink>                                  
    be7c:	eafffff4 	b	be54 <pipe_create+0xd0>                         
    iop->flags &= ~LIBIO_FLAGS_NO_DELAY;                              
                                                                      
    filsdes[1] = open(fifopath, O_WRONLY);                            
                                                                      
    if (filsdes[1] < 0) {                                             
    err = errno;                                                      
    be80:	eb000b64 	bl	ec18 <__errno>                                 
    be84:	e5905000 	ldr	r5, [r0]                                      
    close(filsdes[0]);                                                
    be88:	e5940000 	ldr	r0, [r4]                                      
    be8c:	ebffdb5e 	bl	2c0c <close>                                   
    be90:	eaffffed 	b	be4c <pipe_create+0xc8>                         
  memcpy(fifopath, "/tmp/.fifo", 10);                                 
  sprintf(fifopath + 10, "%04x", rtems_pipe_no ++);                   
                                                                      
  /* Try creating FIFO file until find an available file name */      
  while (mkfifo(fifopath, S_IRUSR|S_IWUSR) != 0) {                    
    if (errno != EEXIST){                                             
    be94:	eb000b5f 	bl	ec18 <__errno>                                 <== NOT EXECUTED
      return -1;                                                      
    be98:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
    be9c:	eaffffef 	b	be60 <pipe_create+0xdc>                         <== NOT EXECUTED
    close(filsdes[0]);                                                
    }                                                                 
  unlink(fifopath);                                                   
  }                                                                   
  if(err != 0)                                                        
    rtems_set_errno_and_return_minus_one(err);                        
    bea0:	eb000b5c 	bl	ec18 <__errno>                                 
    bea4:	e3e03000 	mvn	r3, #0                                        
    bea8:	e5805000 	str	r5, [r0]                                      
    beac:	eaffffeb 	b	be60 <pipe_create+0xdc>                         
                                                                      

0000d278 <pipe_ioctl>: ioctl_command_t cmd, void *buffer, rtems_libio_t *iop ) { if (cmd == FIONREAD) {
    d278:	e59f3058 	ldr	r3, [pc, #88]	; d2d8 <pipe_ioctl+0x60>        
    d27c:	e1510003 	cmp	r1, r3                                        
  pipe_control_t  *pipe,                                              
  ioctl_command_t  cmd,                                               
  void            *buffer,                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
    d280:	e92d4070 	push	{r4, r5, r6, lr}                             
    d284:	e1a04000 	mov	r4, r0                                        
    d288:	e1a05002 	mov	r5, r2                                        
    *(unsigned int *)buffer = pipe->Length;                           
    PIPE_UNLOCK(pipe);                                                
    return 0;                                                         
  }                                                                   
                                                                      
  return -EINVAL;                                                     
    d28c:	13e00015 	mvnne	r0, #21                                     
  ioctl_command_t  cmd,                                               
  void            *buffer,                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
    d290:	18bd8070 	popne	{r4, r5, r6, pc}                            
    if (buffer == NULL)                                               
    d294:	e3520000 	cmp	r2, #0                                        
      return -EFAULT;                                                 
    d298:	03e0000d 	mvneq	r0, #13                                     
  void            *buffer,                                            
  rtems_libio_t   *iop                                                
)                                                                     
{                                                                     
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
    d29c:	08bd8070 	popeq	{r4, r5, r6, pc}                            
      return -EFAULT;                                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
    d2a0:	e3a01000 	mov	r1, #0                                        
    d2a4:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    d2a8:	e1a02001 	mov	r2, r1                                        
    d2ac:	ebffeafb 	bl	7ea0 <rtems_semaphore_obtain>                  
    d2b0:	e2506000 	subs	r6, r0, #0                                   
    d2b4:	1a000005 	bne	d2d0 <pipe_ioctl+0x58>                        
      return -EINTR;                                                  
                                                                      
    /* Return length of pipe */                                       
    *(unsigned int *)buffer = pipe->Length;                           
    d2b8:	e594300c 	ldr	r3, [r4, #12]                                 
    PIPE_UNLOCK(pipe);                                                
    d2bc:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
                                                                      
    if (! PIPE_LOCK(pipe))                                            
      return -EINTR;                                                  
                                                                      
    /* Return length of pipe */                                       
    *(unsigned int *)buffer = pipe->Length;                           
    d2c0:	e5853000 	str	r3, [r5]                                      
    PIPE_UNLOCK(pipe);                                                
    d2c4:	ebffeb3e 	bl	7fc4 <rtems_semaphore_release>                 
    return 0;                                                         
    d2c8:	e1a00006 	mov	r0, r6                                        
    d2cc:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  if (cmd == FIONREAD) {                                              
    if (buffer == NULL)                                               
      return -EFAULT;                                                 
                                                                      
    if (! PIPE_LOCK(pipe))                                            
      return -EINTR;                                                  
    d2d0:	e3e00003 	mvn	r0, #3                                        <== NOT EXECUTED
    PIPE_UNLOCK(pipe);                                                
    return 0;                                                         
  }                                                                   
                                                                      
  return -EINVAL;                                                     
}                                                                     
    d2d4:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

0000cf0c <pipe_read>: pipe_control_t *pipe, void *buffer, size_t count, rtems_libio_t *iop ) {
    cf0c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    cf10:	e1a09001 	mov	r9, r1                                        
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    cf14:	e3a01000 	mov	r1, #0                                        
  pipe_control_t *pipe,                                               
  void           *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
    cf18:	e24dd004 	sub	sp, sp, #4                                    
    cf1c:	e1a04000 	mov	r4, r0                                        
    cf20:	e1a05002 	mov	r5, r2                                        
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    cf24:	e5900028 	ldr	r0, [r0, #40]	; 0x28                          
    cf28:	e1a02001 	mov	r2, r1                                        
  pipe_control_t *pipe,                                               
  void           *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
    cf2c:	e1a07003 	mov	r7, r3                                        
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    cf30:	ebffebda 	bl	7ea0 <rtems_semaphore_obtain>                  
    cf34:	e250a000 	subs	sl, r0, #0                                   
    return -EINTR;                                                    
    cf38:	13e08003 	mvnne	r8, #3                                      
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    cf3c:	1a000026 	bne	cfdc <pipe_read+0xd0>                         
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
    cf40:	e3550000 	cmp	r5, #0                                        
    cf44:	01a08005 	moveq	r8, r5                                      
    cf48:	01a06008 	moveq	r6, r8                                      
    cf4c:	0a00001e 	beq	cfcc <pipe_read+0xc0>                         
    cf50:	e1a0800a 	mov	r8, sl                                        
    while (PIPE_EMPTY(pipe)) {                                        
    cf54:	e594200c 	ldr	r2, [r4, #12]                                 
    cf58:	e3520000 	cmp	r2, #0                                        
    cf5c:	1a000021 	bne	cfe8 <pipe_read+0xdc>                         
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
    cf60:	e5946014 	ldr	r6, [r4, #20]                                 
    cf64:	e3560000 	cmp	r6, #0                                        
    cf68:	0a000017 	beq	cfcc <pipe_read+0xc0>                         
        goto out_locked;                                              
                                                                      
      if (LIBIO_NODELAY(iop)) {                                       
    cf6c:	e597600c 	ldr	r6, [r7, #12]                                 
    cf70:	e2166001 	ands	r6, r6, #1                                   
    cf74:	1a000040 	bne	d07c <pipe_read+0x170>                        
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
    cf78:	e5943018 	ldr	r3, [r4, #24]                                 
    cf7c:	e2833001 	add	r3, r3, #1                                    
    cf80:	e5843018 	str	r3, [r4, #24]                                 
      PIPE_UNLOCK(pipe);                                              
    cf84:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cf88:	ebffec0d 	bl	7fc4 <rtems_semaphore_release>                 
      if (! PIPE_READWAIT(pipe))                                      
    cf8c:	e1a01006 	mov	r1, r6                                        
    cf90:	e594002c 	ldr	r0, [r4, #44]	; 0x2c                          
    cf94:	eb0003b7 	bl	de78 <rtems_barrier_wait>                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
    cf98:	e1a01006 	mov	r1, r6                                        
    cf9c:	e1a02001 	mov	r2, r1                                        
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
    cfa0:	e2506000 	subs	r6, r0, #0                                   
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
    cfa4:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
      }                                                               
                                                                      
      /* Wait until pipe is no more empty or no writer exists */      
      pipe->waitingReaders ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
    cfa8:	13e06003 	mvnne	r6, #3                                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
    cfac:	ebffebbb 	bl	7ea0 <rtems_semaphore_obtain>                  
    cfb0:	e3500000 	cmp	r0, #0                                        
    cfb4:	1a000032 	bne	d084 <pipe_read+0x178>                        
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingReaders --;                                        
    cfb8:	e5943018 	ldr	r3, [r4, #24]                                 
      if (ret != 0)                                                   
    cfbc:	e3560000 	cmp	r6, #0                                        
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingReaders --;                                        
    cfc0:	e2433001 	sub	r3, r3, #1                                    
    cfc4:	e5843018 	str	r3, [r4, #24]                                 
      if (ret != 0)                                                   
    cfc8:	0affffe1 	beq	cf54 <pipe_read+0x48>                         
      PIPE_WAKEUPWRITERS(pipe);                                       
    read += chunk;                                                    
  }                                                                   
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
    cfcc:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    cfd0:	ebffebfb 	bl	7fc4 <rtems_semaphore_release>                 
                                                                      
out_nolock:                                                           
  if (read > 0)                                                       
    return read;                                                      
  return ret;                                                         
    cfd4:	e3580000 	cmp	r8, #0                                        
    cfd8:	d1a08006 	movle	r8, r6                                      
}                                                                     
    cfdc:	e1a00008 	mov	r0, r8                                        
    cfe0:	e28dd004 	add	sp, sp, #4                                    
    cfe4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
        goto out_locked;                                              
    }                                                                 
                                                                      
    /* Read chunk bytes */                                            
    chunk = MIN(count - read,  pipe->Length);                         
    chunk1 = pipe->Size - pipe->Start;                                
    cfe8:	e5943008 	ldr	r3, [r4, #8]                                  
    cfec:	e594b004 	ldr	fp, [r4, #4]                                  
      if (ret != 0)                                                   
        goto out_locked;                                              
    }                                                                 
                                                                      
    /* Read chunk bytes */                                            
    chunk = MIN(count - read,  pipe->Length);                         
    cff0:	e06a6005 	rsb	r6, sl, r5                                    
    cff4:	e1520006 	cmp	r2, r6                                        
    cff8:	31a06002 	movcc	r6, r2                                      
    chunk1 = pipe->Size - pipe->Start;                                
    cffc:	e063b00b 	rsb	fp, r3, fp                                    
    if (chunk > chunk1) {                                             
    d000:	e156000b 	cmp	r6, fp                                        
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);      
    d004:	e5941000 	ldr	r1, [r4]                                      
    }                                                                 
                                                                      
    /* Read chunk bytes */                                            
    chunk = MIN(count - read,  pipe->Length);                         
    chunk1 = pipe->Size - pipe->Start;                                
    if (chunk > chunk1) {                                             
    d008:	da00001f 	ble	d08c <pipe_read+0x180>                        
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);      
    d00c:	e1a0200b 	mov	r2, fp                                        
    d010:	e0811003 	add	r1, r1, r3                                    
    d014:	e089000a 	add	r0, r9, sl                                    
    d018:	eb000cdf 	bl	1039c <memcpy>                                 
      memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);   
    d01c:	e08a000b 	add	r0, sl, fp                                    
    d020:	e0890000 	add	r0, r9, r0                                    
    d024:	e5941000 	ldr	r1, [r4]                                      
    d028:	e06b2006 	rsb	r2, fp, r6                                    
    d02c:	eb000cda 	bl	1039c <memcpy>                                 
    }                                                                 
    else                                                              
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);       
                                                                      
    pipe->Start += chunk;                                             
    d030:	e5940008 	ldr	r0, [r4, #8]                                  
    pipe->Start %= pipe->Size;                                        
    d034:	e5941004 	ldr	r1, [r4, #4]                                  
    d038:	e0860000 	add	r0, r6, r0                                    
    d03c:	eb003d00 	bl	1c444 <__umodsi3>                              
    pipe->Length -= chunk;                                            
    d040:	e594300c 	ldr	r3, [r4, #12]                                 
    d044:	e0663003 	rsb	r3, r6, r3                                    
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
    d048:	e3530000 	cmp	r3, #0                                        
    }                                                                 
    else                                                              
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);       
                                                                      
    pipe->Start += chunk;                                             
    pipe->Start %= pipe->Size;                                        
    d04c:	e5840008 	str	r0, [r4, #8]                                  
    pipe->Length -= chunk;                                            
    d050:	e584300c 	str	r3, [r4, #12]                                 
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
      pipe->Start = 0;                                                
    d054:	05843008 	streq	r3, [r4, #8]                                
                                                                      
    if (pipe->waitingWriters > 0)                                     
    d058:	e594301c 	ldr	r3, [r4, #28]                                 
    d05c:	e3530000 	cmp	r3, #0                                        
    d060:	1a00000e 	bne	d0a0 <pipe_read+0x194>                        
      PIPE_WAKEUPWRITERS(pipe);                                       
    read += chunk;                                                    
    d064:	e0888006 	add	r8, r8, r6                                    
  int chunk, chunk1, read = 0, ret = 0;                               
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    return -EINTR;                                                    
                                                                      
  while (read < count) {                                              
    d068:	e1580005 	cmp	r8, r5                                        
    d06c:	e1a0a008 	mov	sl, r8                                        
    d070:	3affffb7 	bcc	cf54 <pipe_read+0x48>                         
    d074:	e3a06000 	mov	r6, #0                                        
    d078:	eaffffd3 	b	cfcc <pipe_read+0xc0>                           
      /* Not an error */                                              
      if (pipe->Writers == 0)                                         
        goto out_locked;                                              
                                                                      
      if (LIBIO_NODELAY(iop)) {                                       
        ret = -EAGAIN;                                                
    d07c:	e3e0600a 	mvn	r6, #10                                       
    d080:	eaffffd1 	b	cfcc <pipe_read+0xc0>                           
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_READWAIT(pipe))                                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingReaders not restored! */                       
        ret = -EINTR;                                                 
    d084:	e3e06003 	mvn	r6, #3                                        <== NOT EXECUTED
    d088:	eaffffd1 	b	cfd4 <pipe_read+0xc8>                           <== NOT EXECUTED
    if (chunk > chunk1) {                                             
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk1);      
      memcpy(buffer + read + chunk1, pipe->Buffer, chunk - chunk1);   
    }                                                                 
    else                                                              
      memcpy(buffer + read, pipe->Buffer + pipe->Start, chunk);       
    d08c:	e089000a 	add	r0, r9, sl                                    
    d090:	e0811003 	add	r1, r1, r3                                    
    d094:	e1a02006 	mov	r2, r6                                        
    d098:	eb000cbf 	bl	1039c <memcpy>                                 
    d09c:	eaffffe3 	b	d030 <pipe_read+0x124>                          
    /* For buffering optimization */                                  
    if (PIPE_EMPTY(pipe))                                             
      pipe->Start = 0;                                                
                                                                      
    if (pipe->waitingWriters > 0)                                     
      PIPE_WAKEUPWRITERS(pipe);                                       
    d0a0:	e5940030 	ldr	r0, [r4, #48]	; 0x30                          
    d0a4:	e1a0100d 	mov	r1, sp                                        
    d0a8:	eb00035a 	bl	de18 <rtems_barrier_release>                   
    d0ac:	eaffffec 	b	d064 <pipe_read+0x158>                          
                                                                      

0000d0b0 <pipe_write>: pipe_control_t *pipe, const void *buffer, size_t count, rtems_libio_t *iop ) {
    d0b0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    d0b4:	e2525000 	subs	r5, r2, #0                                   
  pipe_control_t *pipe,                                               
  const void     *buffer,                                             
  size_t          count,                                              
  rtems_libio_t  *iop                                                 
)                                                                     
{                                                                     
    d0b8:	e24dd004 	sub	sp, sp, #4                                    
    d0bc:	e1a04000 	mov	r4, r0                                        
    d0c0:	e1a09001 	mov	r9, r1                                        
    d0c4:	e1a08003 	mov	r8, r3                                        
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
    d0c8:	01a07005 	moveq	r7, r5                                      
)                                                                     
{                                                                     
  int chunk, chunk1, written = 0, ret = 0;                            
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    d0cc:	1a000002 	bne	d0dc <pipe_write+0x2c>                        
#endif                                                                
                                                                      
  if (written > 0)                                                    
    return written;                                                   
  return ret;                                                         
}                                                                     
    d0d0:	e1a00007 	mov	r0, r7                                        
    d0d4:	e28dd004 	add	sp, sp, #4                                    
    d0d8:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    d0dc:	e3a01000 	mov	r1, #0                                        
    d0e0:	e5900028 	ldr	r0, [r0, #40]	; 0x28                          
    d0e4:	e1a02001 	mov	r2, r1                                        
    d0e8:	ebffeb6c 	bl	7ea0 <rtems_semaphore_obtain>                  
    d0ec:	e250b000 	subs	fp, r0, #0                                   
    return -EINTR;                                                    
    d0f0:	13e07003 	mvnne	r7, #3                                      
                                                                      
  /* Write nothing */                                                 
  if (count == 0)                                                     
    return 0;                                                         
                                                                      
  if (! PIPE_LOCK(pipe))                                              
    d0f4:	1afffff5 	bne	d0d0 <pipe_write+0x20>                        
    return -EINTR;                                                    
                                                                      
  if (pipe->Readers == 0) {                                           
    d0f8:	e5947010 	ldr	r7, [r4, #16]                                 
    d0fc:	e3570000 	cmp	r7, #0                                        
    d100:	0a00004e 	beq	d240 <pipe_write+0x190>                       
    ret = -EPIPE;                                                     
    goto out_locked;                                                  
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
    d104:	e5946004 	ldr	r6, [r4, #4]                                  
    d108:	e1550006 	cmp	r5, r6                                        
    d10c:	91a0a005 	movls	sl, r5                                      
    d110:	83a0a001 	movhi	sl, #1                                      
    d114:	e1a0700b 	mov	r7, fp                                        
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
    d118:	e594200c 	ldr	r2, [r4, #12]                                 
    d11c:	e0623006 	rsb	r3, r2, r6                                    
    d120:	e153000a 	cmp	r3, sl                                        
    d124:	2a00001f 	bcs	d1a8 <pipe_write+0xf8>                        
      if (LIBIO_NODELAY(iop)) {                                       
    d128:	e598600c 	ldr	r6, [r8, #12]                                 
    d12c:	e2166001 	ands	r6, r6, #1                                   
    d130:	1a000044 	bne	d248 <pipe_write+0x198>                       
        ret = -EAGAIN;                                                
        goto out_locked;                                              
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
    d134:	e594301c 	ldr	r3, [r4, #28]                                 
    d138:	e2833001 	add	r3, r3, #1                                    
    d13c:	e584301c 	str	r3, [r4, #28]                                 
      PIPE_UNLOCK(pipe);                                              
    d140:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    d144:	ebffeb9e 	bl	7fc4 <rtems_semaphore_release>                 
      if (! PIPE_WRITEWAIT(pipe))                                     
    d148:	e1a01006 	mov	r1, r6                                        
    d14c:	e5940030 	ldr	r0, [r4, #48]	; 0x30                          
    d150:	eb000348 	bl	de78 <rtems_barrier_wait>                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
    d154:	e1a01006 	mov	r1, r6                                        
    d158:	e1a02001 	mov	r2, r1                                        
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
    d15c:	e2506000 	subs	r6, r0, #0                                   
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
    d160:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
      }                                                               
                                                                      
      /* Wait until there is chunk bytes space or no reader exists */ 
      pipe->waitingWriters ++;                                        
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
    d164:	13e06003 	mvnne	r6, #3                                      
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
    d168:	ebffeb4c 	bl	7ea0 <rtems_semaphore_obtain>                  
    d16c:	e3500000 	cmp	r0, #0                                        
    d170:	1a000036 	bne	d250 <pipe_write+0x1a0>                       
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingWriters --;                                        
    d174:	e594301c 	ldr	r3, [r4, #28]                                 
      if (ret != 0)                                                   
    d178:	e3560000 	cmp	r6, #0                                        
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
        goto out_nolock;                                              
      }                                                               
      pipe->waitingWriters --;                                        
    d17c:	e2433001 	sub	r3, r3, #1                                    
    d180:	e584301c 	str	r3, [r4, #28]                                 
      if (ret != 0)                                                   
    d184:	1a000028 	bne	d22c <pipe_write+0x17c>                       
        goto out_locked;                                              
                                                                      
      if (pipe->Readers == 0) {                                       
    d188:	e5943010 	ldr	r3, [r4, #16]                                 
    d18c:	e3530000 	cmp	r3, #0                                        
    d190:	0a00002a 	beq	d240 <pipe_write+0x190>                       
    d194:	e5946004 	ldr	r6, [r4, #4]                                  
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
    d198:	e594200c 	ldr	r2, [r4, #12]                                 
    d19c:	e0623006 	rsb	r3, r2, r6                                    
    d1a0:	e153000a 	cmp	r3, sl                                        
    d1a4:	3affffdf 	bcc	d128 <pipe_write+0x78>                        
        goto out_locked;                                              
      }                                                               
    }                                                                 
                                                                      
    chunk = MIN(count - written, PIPE_SPACE(pipe));                   
    chunk1 = pipe->Size - PIPE_WSTART(pipe);                          
    d1a8:	e5940008 	ldr	r0, [r4, #8]                                  
    d1ac:	e1a01006 	mov	r1, r6                                        
        ret = -EPIPE;                                                 
        goto out_locked;                                              
      }                                                               
    }                                                                 
                                                                      
    chunk = MIN(count - written, PIPE_SPACE(pipe));                   
    d1b0:	e06ba005 	rsb	sl, fp, r5                                    
    chunk1 = pipe->Size - PIPE_WSTART(pipe);                          
    d1b4:	e0820000 	add	r0, r2, r0                                    
        ret = -EPIPE;                                                 
        goto out_locked;                                              
      }                                                               
    }                                                                 
                                                                      
    chunk = MIN(count - written, PIPE_SPACE(pipe));                   
    d1b8:	e153000a 	cmp	r3, sl                                        
    d1bc:	31a0a003 	movcc	sl, r3                                      
    chunk1 = pipe->Size - PIPE_WSTART(pipe);                          
    d1c0:	eb003c9f 	bl	1c444 <__umodsi3>                              
    d1c4:	e0606006 	rsb	r6, r0, r6                                    
    if (chunk > chunk1) {                                             
    d1c8:	e15a0006 	cmp	sl, r6                                        
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
    d1cc:	e5943000 	ldr	r3, [r4]                                      
    d1d0:	e089100b 	add	r1, r9, fp                                    
      }                                                               
    }                                                                 
                                                                      
    chunk = MIN(count - written, PIPE_SPACE(pipe));                   
    chunk1 = pipe->Size - PIPE_WSTART(pipe);                          
    if (chunk > chunk1) {                                             
    d1d4:	da00001f 	ble	d258 <pipe_write+0x1a8>                       
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
    d1d8:	e1a02006 	mov	r2, r6                                        
    d1dc:	e0830000 	add	r0, r3, r0                                    
    d1e0:	eb000c6d 	bl	1039c <memcpy>                                 
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    d1e4:	e086100b 	add	r1, r6, fp                                    
    d1e8:	e5940000 	ldr	r0, [r4]                                      
    d1ec:	e0891001 	add	r1, r9, r1                                    
    d1f0:	e066200a 	rsb	r2, r6, sl                                    
    d1f4:	eb000c68 	bl	1039c <memcpy>                                 
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
    d1f8:	e594300c 	ldr	r3, [r4, #12]                                 
    if (pipe->waitingReaders > 0)                                     
    d1fc:	e5942018 	ldr	r2, [r4, #24]                                 
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
    d200:	e083300a 	add	r3, r3, sl                                    
    if (pipe->waitingReaders > 0)                                     
    d204:	e3520000 	cmp	r2, #0                                        
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
                                                                      
    pipe->Length += chunk;                                            
    d208:	e584300c 	str	r3, [r4, #12]                                 
    if (pipe->waitingReaders > 0)                                     
    d20c:	1a000015 	bne	d268 <pipe_write+0x1b8>                       
      PIPE_WAKEUPREADERS(pipe);                                       
    written += chunk;                                                 
    d210:	e087700a 	add	r7, r7, sl                                    
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    d214:	e1550007 	cmp	r5, r7                                        
    d218:	e1a0b007 	mov	fp, r7                                        
    d21c:	85946004 	ldrhi	r6, [r4, #4]                                
    pipe->Length += chunk;                                            
    if (pipe->waitingReaders > 0)                                     
      PIPE_WAKEUPREADERS(pipe);                                       
    written += chunk;                                                 
    /* Write of more than PIPE_BUF bytes can be interleaved */        
    chunk = 1;                                                        
    d220:	83a0a001 	movhi	sl, #1                                      
    d224:	8affffbb 	bhi	d118 <pipe_write+0x68>                        
  }                                                                   
                                                                      
  /* Write of PIPE_BUF bytes or less shall not be interleaved */      
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    d228:	e3a06000 	mov	r6, #0                                        
    /* Write of more than PIPE_BUF bytes can be interleaved */        
    chunk = 1;                                                        
  }                                                                   
                                                                      
out_locked:                                                           
  PIPE_UNLOCK(pipe);                                                  
    d22c:	e5940028 	ldr	r0, [r4, #40]	; 0x28                          
    d230:	ebffeb63 	bl	7fc4 <rtems_semaphore_release>                 
    kill(getpid(), SIGPIPE);                                          
#endif                                                                
                                                                      
  if (written > 0)                                                    
    return written;                                                   
  return ret;                                                         
    d234:	e3570000 	cmp	r7, #0                                        
    d238:	d1a07006 	movle	r7, r6                                      
    d23c:	eaffffa3 	b	d0d0 <pipe_write+0x20>                          
      pipe->waitingWriters --;                                        
      if (ret != 0)                                                   
        goto out_locked;                                              
                                                                      
      if (pipe->Readers == 0) {                                       
        ret = -EPIPE;                                                 
    d240:	e3e0601f 	mvn	r6, #31                                       
    d244:	eafffff8 	b	d22c <pipe_write+0x17c>                         
  chunk = count <= pipe->Size ? count : 1;                            
                                                                      
  while (written < count) {                                           
    while (PIPE_SPACE(pipe) < chunk) {                                
      if (LIBIO_NODELAY(iop)) {                                       
        ret = -EAGAIN;                                                
    d248:	e3e0600a 	mvn	r6, #10                                       
    d24c:	eafffff6 	b	d22c <pipe_write+0x17c>                         
      PIPE_UNLOCK(pipe);                                              
      if (! PIPE_WRITEWAIT(pipe))                                     
        ret = -EINTR;                                                 
      if (! PIPE_LOCK(pipe)) {                                        
        /* WARN waitingWriters not restored! */                       
        ret = -EINTR;                                                 
    d250:	e3e06003 	mvn	r6, #3                                        <== NOT EXECUTED
    d254:	eafffff6 	b	d234 <pipe_write+0x184>                         <== NOT EXECUTED
    if (chunk > chunk1) {                                             
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk1);
      memcpy(pipe->Buffer, buffer + written + chunk1, chunk - chunk1);
    }                                                                 
    else                                                              
      memcpy(pipe->Buffer + PIPE_WSTART(pipe), buffer + written, chunk);
    d258:	e0830000 	add	r0, r3, r0                                    
    d25c:	e1a0200a 	mov	r2, sl                                        
    d260:	eb000c4d 	bl	1039c <memcpy>                                 
    d264:	eaffffe3 	b	d1f8 <pipe_write+0x148>                         
                                                                      
    pipe->Length += chunk;                                            
    if (pipe->waitingReaders > 0)                                     
      PIPE_WAKEUPREADERS(pipe);                                       
    d268:	e594002c 	ldr	r0, [r4, #44]	; 0x2c                          
    d26c:	e1a0100d 	mov	r1, sp                                        
    d270:	eb0002e8 	bl	de18 <rtems_barrier_release>                   
    d274:	eaffffe5 	b	d210 <pipe_write+0x160>                         
                                                                      

00003094 <putk>: /** * Kernel putk (e.g. puts) function requiring minimal infrastrure. */ void putk(const char *s) {
    3094:	e92d4030 	push	{r4, r5, lr}                                 <== NOT EXECUTED
    3098:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
  const char *p;                                                      
                                                                      
  for (p=s ; *p ; p++ )                                               
    309c:	e5d00000 	ldrb	r0, [r0]                                     <== NOT EXECUTED
    30a0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    30a4:	e59f5024 	ldr	r5, [pc, #36]	; 30d0 <putk+0x3c>              <== NOT EXECUTED
    30a8:	0a000004 	beq	30c0 <putk+0x2c>                              <== NOT EXECUTED
    BSP_output_char(*p);                                              
    30ac:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    30b0:	e595f000 	ldr	pc, [r5]                                      <== NOT EXECUTED
 */                                                                   
void putk(const char *s)                                              
{                                                                     
  const char *p;                                                      
                                                                      
  for (p=s ; *p ; p++ )                                               
    30b4:	e5f40001 	ldrb	r0, [r4, #1]!                                <== NOT EXECUTED
    30b8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    30bc:	1afffffa 	bne	30ac <putk+0x18>                              <== NOT EXECUTED
    BSP_output_char(*p);                                              
  BSP_output_char('\n');                                              
    30c0:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
    30c4:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    30c8:	e595f000 	ldr	pc, [r5]                                      <== NOT EXECUTED
}                                                                     
    30cc:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
                                                                      

0000b6c0 <ramdisk_allocate>: void *area_begin, uint32_t media_block_size, rtems_blkdev_bnum media_block_count, bool trace ) {
    b6c0:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    b6c4:	e1a04000 	mov	r4, r0                                        
  struct ramdisk *rd = malloc(sizeof(struct ramdisk));                
    b6c8:	e3a00010 	mov	r0, #16                                       
  void *area_begin,                                                   
  uint32_t media_block_size,                                          
  rtems_blkdev_bnum media_block_count,                                
  bool trace                                                          
)                                                                     
{                                                                     
    b6cc:	e1a05001 	mov	r5, r1                                        
    b6d0:	e1a07002 	mov	r7, r2                                        
    b6d4:	e20380ff 	and	r8, r3, #255	; 0xff                           
  struct ramdisk *rd = malloc(sizeof(struct ramdisk));                
    b6d8:	ebffe18d 	bl	3d14 <malloc>                                  
                                                                      
  if (rd == NULL) {                                                   
    b6dc:	e2506000 	subs	r6, r0, #0                                   
    b6e0:	0a000008 	beq	b708 <ramdisk_allocate+0x48>                  
    return NULL;                                                      
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
    b6e4:	e3540000 	cmp	r4, #0                                        
                                                                      
      return NULL;                                                    
    }                                                                 
    rd->malloced = true;                                              
  } else {                                                            
    rd->malloced = false;                                             
    b6e8:	13a03000 	movne	r3, #0                                      
    b6ec:	15c6300d 	strbne	r3, [r6, #13]                              
                                                                      
  if (rd == NULL) {                                                   
    return NULL;                                                      
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
    b6f0:	0a000006 	beq	b710 <ramdisk_allocate+0x50>                  
  }                                                                   
  rd->block_size = media_block_size;                                  
  rd->block_num = media_block_count;                                  
  rd->area = area_begin;                                              
  rd->trace = trace;                                                  
  rd->initialized = true;                                             
    b6f4:	e3a03001 	mov	r3, #1                                        
    rd->malloced = true;                                              
  } else {                                                            
    rd->malloced = false;                                             
  }                                                                   
  rd->block_size = media_block_size;                                  
  rd->block_num = media_block_count;                                  
    b6f8:	e88600a0 	stm	r6, {r5, r7}                                  
  rd->area = area_begin;                                              
    b6fc:	e5864008 	str	r4, [r6, #8]                                  
  rd->trace = trace;                                                  
    b700:	e5c6800e 	strb	r8, [r6, #14]                                
  rd->initialized = true;                                             
    b704:	e5c6300c 	strb	r3, [r6, #12]                                
                                                                      
  return rd;                                                          
}                                                                     
    b708:	e1a00006 	mov	r0, r6                                        
    b70c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  if (rd == NULL) {                                                   
    return NULL;                                                      
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
    area_begin = calloc(media_block_count, media_block_size);         
    b710:	e1a00007 	mov	r0, r7                                        
    b714:	e1a01005 	mov	r1, r5                                        
    b718:	ebffdf87 	bl	353c <calloc>                                  
    if (area_begin == NULL) {                                         
    b71c:	e2504000 	subs	r4, r0, #0                                   
      free(rd);                                                       
                                                                      
      return NULL;                                                    
    }                                                                 
    rd->malloced = true;                                              
    b720:	13a03001 	movne	r3, #1                                      
    b724:	15c6300d 	strbne	r3, [r6, #13]                              
    return NULL;                                                      
  }                                                                   
                                                                      
  if (area_begin == NULL) {                                           
    area_begin = calloc(media_block_count, media_block_size);         
    if (area_begin == NULL) {                                         
    b728:	1afffff1 	bne	b6f4 <ramdisk_allocate+0x34>                  
      free(rd);                                                       
    b72c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    b730:	ebffe03c 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
      return NULL;                                                    
    b734:	e1a06004 	mov	r6, r4                                        <== NOT EXECUTED
    b738:	eafffff2 	b	b708 <ramdisk_allocate+0x48>                    <== NOT EXECUTED
                                                                      

0000c9b4 <ramdisk_initialize>: rtems_device_driver ramdisk_initialize( rtems_device_major_number major, rtems_device_minor_number minor __attribute__((unused)), void *arg __attribute__((unused))) {
    c9b4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    c9b8:	e24dd01c 	sub	sp, sp, #28                                   
    c9bc:	e1a0b000 	mov	fp, r0                                        
    rtems_device_minor_number i;                                      
    rtems_ramdisk_config *c = rtems_ramdisk_configuration;            
    struct ramdisk *r;                                                
    rtems_status_code rc;                                             
                                                                      
    rc = rtems_disk_io_initialize();                                  
    c9c0:	ebffdb96 	bl	3820 <rtems_disk_io_initialize>                
    if (rc != RTEMS_SUCCESSFUL)                                       
    c9c4:	e2505000 	subs	r5, r0, #0                                   
    c9c8:	11a00005 	movne	r0, r5                                      
    c9cc:	0a000001 	beq	c9d8 <ramdisk_initialize+0x24>                
            }                                                         
            r->initialized = false;                                   
        }                                                             
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
    c9d0:	e28dd01c 	add	sp, sp, #28                                   
    c9d4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     * This is allocating memory for a RAM disk which will persist for
     * the life of the system. RTEMS has no "de-initialize" driver call
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    c9d8:	e59f7100 	ldr	r7, [pc, #256]	; cae0 <ramdisk_initialize+0x12c>
    c9dc:	e5976000 	ldr	r6, [r7]                                      
    c9e0:	e3a01010 	mov	r1, #16                                       
    c9e4:	e1a00006 	mov	r0, r6                                        
    c9e8:	ebffdf12 	bl	4638 <calloc>                                  
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    c9ec:	e3560000 	cmp	r6, #0                                        
     * This is allocating memory for a RAM disk which will persist for
     * the life of the system. RTEMS has no "de-initialize" driver call
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    c9f0:	e1a04000 	mov	r4, r0                                        
    r->trace = false;                                                 
    c9f4:	e5c0500e 	strb	r5, [r0, #14]                                
                free(r->area);                                        
            }                                                         
            r->initialized = false;                                   
        }                                                             
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
    c9f8:	01a00006 	moveq	r0, r6                                      
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    c9fc:	0afffff3 	beq	c9d0 <ramdisk_initialize+0x1c>                
    ca00:	e59f60dc 	ldr	r6, [pc, #220]	; cae4 <ramdisk_initialize+0x130>
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            r->malloced = false;                                      
            r->initialized = true;                                    
    ca04:	e58db00c 	str	fp, [sp, #12]                                 
    ca08:	e28da010 	add	sl, sp, #16                                   
        {                                                             
            if (r->malloced)                                          
            {                                                         
                free(r->area);                                        
            }                                                         
            r->initialized = false;                                   
    ca0c:	e1a09005 	mov	r9, r5                                        
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
    ca10:	e59f30d0 	ldr	r3, [pc, #208]	; cae8 <ramdisk_initialize+0x134>
    ca14:	e8930007 	ldm	r3, {r0, r1, r2}                              
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
    ca18:	e5963008 	ldr	r3, [r6, #8]                                  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
    ca1c:	e8960900 	ldm	r6, {r8, fp}                                  
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
    ca20:	e0822005 	add	r2, r2, r5                                    
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
    ca24:	e1a0c00a 	mov	ip, sl                                        
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
    ca28:	e3530000 	cmp	r3, #0                                        
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    {                                                                 
        dev_t dev = rtems_filesystem_make_dev_t(major, i);            
        char name [] = RAMDISK_DEVICE_BASE_NAME "a";                  
    ca2c:	e8ac0003 	stmia	ip!, {r0, r1}                               
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
    ca30:	e5cd2018 	strb	r2, [sp, #24]                                
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
    ca34:	e8840900 	stm	r4, {r8, fp}                                  
        if (c->location == NULL)                                      
    ca38:	0a00001d 	beq	cab4 <ramdisk_initialize+0x100>               
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            r->malloced = false;                                      
            r->initialized = true;                                    
    ca3c:	e3a0c001 	mov	ip, #1                                        <== NOT EXECUTED
                r->initialized = true;                                
            }                                                         
        }                                                             
        else                                                          
        {                                                             
            r->malloced = false;                                      
    ca40:	e5c4900d 	strb	r9, [r4, #13]                                <== NOT EXECUTED
            r->initialized = true;                                    
    ca44:	e5c4c00c 	strb	ip, [r4, #12]                                <== NOT EXECUTED
            r->area = c->location;                                    
    ca48:	e5843008 	str	r3, [r4, #8]                                  <== NOT EXECUTED
        }                                                             
        rc = rtems_disk_create_phys(dev, c->block_size, c->block_num, 
    ca4c:	e59fc098 	ldr	ip, [pc, #152]	; caec <ramdisk_initialize+0x138>
    ca50:	e1a01005 	mov	r1, r5                                        
    ca54:	e1a02008 	mov	r2, r8                                        
    ca58:	e1a0300b 	mov	r3, fp                                        
    ca5c:	e59d000c 	ldr	r0, [sp, #12]                                 
    ca60:	e58d4004 	str	r4, [sp, #4]                                  
    ca64:	e58dc000 	str	ip, [sp]                                      
    ca68:	e58da008 	str	sl, [sp, #8]                                  
    ca6c:	ebffdac9 	bl	3598 <rtems_disk_create_phys>                  
                                    ramdisk_ioctl, r, name);          
        if (rc != RTEMS_SUCCESSFUL)                                   
    ca70:	e3500000 	cmp	r0, #0                                        
    ca74:	0a000003 	beq	ca88 <ramdisk_initialize+0xd4>                
        {                                                             
            if (r->malloced)                                          
    ca78:	e5d4300d 	ldrb	r3, [r4, #13]                                <== NOT EXECUTED
    ca7c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    ca80:	1a000008 	bne	caa8 <ramdisk_initialize+0xf4>                <== NOT EXECUTED
            {                                                         
                free(r->area);                                        
            }                                                         
            r->initialized = false;                                   
    ca84:	e5c4900c 	strb	r9, [r4, #12]                                <== NOT EXECUTED
     * so there is no corresponding free(r).  Coverity is correct that
     * it is never freed but this is not a problem.                   
     */                                                               
    r = calloc(rtems_ramdisk_configuration_size, sizeof(struct ramdisk));
    r->trace = false;                                                 
    for (i = 0; i < rtems_ramdisk_configuration_size; i++, c++, r++)  
    ca88:	e5973000 	ldr	r3, [r7]                                      
    ca8c:	e2855001 	add	r5, r5, #1                                    
    ca90:	e1530005 	cmp	r3, r5                                        
    ca94:	e286600c 	add	r6, r6, #12                                   
    ca98:	e2844010 	add	r4, r4, #16                                   
    ca9c:	8affffdb 	bhi	ca10 <ramdisk_initialize+0x5c>                
                free(r->area);                                        
            }                                                         
            r->initialized = false;                                   
        }                                                             
    }                                                                 
    return RTEMS_SUCCESSFUL;                                          
    caa0:	e3a00000 	mov	r0, #0                                        
    caa4:	eaffffc9 	b	c9d0 <ramdisk_initialize+0x1c>                  
                                    ramdisk_ioctl, r, name);          
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            if (r->malloced)                                          
            {                                                         
                free(r->area);                                        
    caa8:	e5940008 	ldr	r0, [r4, #8]                                  <== NOT EXECUTED
    caac:	ebffdf9c 	bl	4924 <free>                                    <== NOT EXECUTED
    cab0:	eafffff3 	b	ca84 <ramdisk_initialize+0xd0>                  <== NOT EXECUTED
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
        {                                                             
            r->malloced = true;                                       
    cab4:	e3a0c001 	mov	ip, #1                                        
            r->area = malloc(r->block_size * r->block_num);           
    cab8:	e0000b98 	mul	r0, r8, fp                                    
        name [sizeof(RAMDISK_DEVICE_BASE_NAME)] += i;                 
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
        {                                                             
            r->malloced = true;                                       
    cabc:	e5c4c00d 	strb	ip, [r4, #13]                                
            r->area = malloc(r->block_size * r->block_num);           
    cac0:	ebffe116 	bl	4f20 <malloc>                                  
            if (r->area == NULL) /* No enough memory for this disk */ 
    cac4:	e3500000 	cmp	r0, #0                                        
                r->initialized = false;                               
                continue;                                             
            }                                                         
            else                                                      
            {                                                         
                r->initialized = true;                                
    cac8:	13a02001 	movne	r2, #1                                      
        r->block_size = c->block_size;                                
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
        {                                                             
            r->malloced = true;                                       
            r->area = malloc(r->block_size * r->block_num);           
    cacc:	e5840008 	str	r0, [r4, #8]                                  
            if (r->area == NULL) /* No enough memory for this disk */ 
            {                                                         
                r->initialized = false;                               
    cad0:	05c4000c 	strbeq	r0, [r4, #12]                              
                continue;                                             
            }                                                         
            else                                                      
            {                                                         
                r->initialized = true;                                
    cad4:	15c4200c 	strbne	r2, [r4, #12]                              
        r->block_num = c->block_num;                                  
        if (c->location == NULL)                                      
        {                                                             
            r->malloced = true;                                       
            r->area = malloc(r->block_size * r->block_num);           
            if (r->area == NULL) /* No enough memory for this disk */ 
    cad8:	1affffdb 	bne	ca4c <ramdisk_initialize+0x98>                
    cadc:	eaffffe9 	b	ca88 <ramdisk_initialize+0xd4>                  <== NOT EXECUTED
                                                                      

0000b598 <ramdisk_ioctl>: int ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) { struct ramdisk *rd = rtems_disk_get_driver_data(dd); switch (req)
    b598:	e59fc118 	ldr	ip, [pc, #280]	; b6b8 <ramdisk_ioctl+0x120>   
    b59c:	e151000c 	cmp	r1, ip                                        
    return 0;                                                         
}                                                                     
                                                                      
int                                                                   
ramdisk_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)        
{                                                                     
    b5a0:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    b5a4:	e1a05002 	mov	r5, r2                                        
                                                                      
static inline void *rtems_disk_get_driver_data(                       
  const rtems_disk_device *dd                                         
)                                                                     
{                                                                     
  return dd->driver_data;                                             
    b5a8:	e590603c 	ldr	r6, [r0, #60]	; 0x3c                          
    struct ramdisk *rd = rtems_disk_get_driver_data(dd);              
                                                                      
    switch (req)                                                      
    b5ac:	0a000004 	beq	b5c4 <ramdisk_ioctl+0x2c>                     
    b5b0:	e59fc104 	ldr	ip, [pc, #260]	; b6bc <ramdisk_ioctl+0x124>   
    b5b4:	e151000c 	cmp	r1, ip                                        
    b5b8:	0a000009 	beq	b5e4 <ramdisk_ioctl+0x4c>                     
            break;                                                    
    }                                                                 
                                                                      
    errno = EINVAL;                                                   
    return -1;                                                        
}                                                                     
    b5bc:	e8bd41f0 	pop	{r4, r5, r6, r7, r8, lr}                      
              ramdisk_free(rd);                                       
            }                                                         
            break;                                                    
                                                                      
        default:                                                      
            return rtems_blkdev_ioctl (dd, req, argp);                
    b5c0:	ea000a71 	b	df8c <rtems_blkdev_ioctl>                       
            }                                                         
            break;                                                    
        }                                                             
                                                                      
        case RTEMS_BLKIO_DELETED:                                     
            if (rd->free_at_delete_request) {                         
    b5c4:	e5d6300f 	ldrb	r3, [r6, #15]                                
    b5c8:	e3530000 	cmp	r3, #0                                        
    b5cc:	1a000036 	bne	b6ac <ramdisk_ioctl+0x114>                    
        default:                                                      
            return rtems_blkdev_ioctl (dd, req, argp);                
            break;                                                    
    }                                                                 
                                                                      
    errno = EINVAL;                                                   
    b5d0:	eb0019d5 	bl	11d2c <__errno>                                
    b5d4:	e3a03016 	mov	r3, #22                                       
    b5d8:	e5803000 	str	r3, [r0]                                      
    return -1;                                                        
    b5dc:	e3e00000 	mvn	r0, #0                                        
}                                                                     
    b5e0:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    {                                                                 
        case RTEMS_BLKIO_REQUEST:                                     
        {                                                             
            rtems_blkdev_request *r = argp;                           
                                                                      
            switch (r->req)                                           
    b5e4:	e5927000 	ldr	r7, [r2]                                      
    b5e8:	e3570000 	cmp	r7, #0                                        
    b5ec:	1a000015 	bne	b648 <ramdisk_ioctl+0xb0>                     
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
    b5f0:	e5923010 	ldr	r3, [r2, #16]                                 
    b5f4:	e3530000 	cmp	r3, #0                                        
#endif                                                                
                                                                      
static int                                                            
ramdisk_read(struct ramdisk *rd, rtems_blkdev_request *req)           
{                                                                     
    uint8_t *from = rd->area;                                         
    b5f8:	e5968008 	ldr	r8, [r6, #8]                                  
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
    b5fc:	0a00000b 	beq	b630 <ramdisk_ioctl+0x98>                     
    b600:	e2824018 	add	r4, r2, #24                                   
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              from + (sg->block * rd->block_size));   
#endif                                                                
        memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
    b604:	e5943000 	ldr	r3, [r4]                                      
    b608:	e5961000 	ldr	r1, [r6]                                      
    b60c:	e5940008 	ldr	r0, [r4, #8]                                  
    b610:	e5942004 	ldr	r2, [r4, #4]                                  
    b614:	e0218193 	mla	r1, r3, r1, r8                                
    b618:	eb001bfd 	bl	12614 <memcpy>                                 
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",    
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
                                                                      
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
    b61c:	e5953010 	ldr	r3, [r5, #16]                                 
    b620:	e2877001 	add	r7, r7, #1                                    
    b624:	e1570003 	cmp	r7, r3                                        
    b628:	e2844010 	add	r4, r4, #16                                   
    b62c:	3afffff4 	bcc	b604 <ramdisk_ioctl+0x6c>                     
static inline void rtems_blkdev_request_done(                         
  rtems_blkdev_request *req,                                          
  rtems_status_code status                                            
)                                                                     
{                                                                     
  (*req->done)(req, status);                                          
    b630:	e1a00005 	mov	r0, r5                                        
    b634:	e3a01000 	mov	r1, #0                                        
    b638:	e1a0e00f 	mov	lr, pc                                        
    b63c:	e595f004 	ldr	pc, [r5, #4]                                  
            {                                                         
                case RTEMS_BLKDEV_REQ_READ:                           
                    return ramdisk_read(rd, r);                       
                                                                      
                case RTEMS_BLKDEV_REQ_WRITE:                          
                    return ramdisk_write(rd, r);                      
    b640:	e3a00000 	mov	r0, #0                                        
    b644:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    {                                                                 
        case RTEMS_BLKIO_REQUEST:                                     
        {                                                             
            rtems_blkdev_request *r = argp;                           
                                                                      
            switch (r->req)                                           
    b648:	e3570001 	cmp	r7, #1                                        
    b64c:	0a000004 	beq	b664 <ramdisk_ioctl+0xcc>                     
                                                                      
                case RTEMS_BLKDEV_REQ_WRITE:                          
                    return ramdisk_write(rd, r);                      
                                                                      
                default:                                              
                    errno = EINVAL;                                   
    b650:	eb0019b5 	bl	11d2c <__errno>                                <== NOT EXECUTED
    b654:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    b658:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
                    return -1;                                        
    b65c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    b660:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
    b664:	e5923010 	ldr	r3, [r2, #16]                                 
    b668:	e3530000 	cmp	r3, #0                                        
}                                                                     
                                                                      
static int                                                            
ramdisk_write(struct ramdisk *rd, rtems_blkdev_request *req)          
{                                                                     
    uint8_t *to = rd->area;                                           
    b66c:	e5968008 	ldr	r8, [r6, #8]                                  
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
    b670:	0affffee 	beq	b630 <ramdisk_ioctl+0x98>                     
    b674:	e2824018 	add	r4, r2, #24                                   
    b678:	e3a07000 	mov	r7, #0                                        
#if RTEMS_RAMDISK_TRACE                                               
        rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
                              i, sg->block, sg->length, sg->block * rd->block_size,
                              to + (sg->block * rd->block_size));     
#endif                                                                
        memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
    b67c:	e5943000 	ldr	r3, [r4]                                      
    b680:	e5960000 	ldr	r0, [r6]                                      
    b684:	e5941008 	ldr	r1, [r4, #8]                                  
    b688:	e5942004 	ldr	r2, [r4, #4]                                  
    b68c:	e0208093 	mla	r0, r3, r0, r8                                
    b690:	eb001bdf 	bl	12614 <memcpy>                                 
                                                                      
#if RTEMS_RAMDISK_TRACE                                               
    rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",   
                          req->bufs[0].block, req->bufnum);           
#endif                                                                
    for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)           
    b694:	e5953010 	ldr	r3, [r5, #16]                                 
    b698:	e2877001 	add	r7, r7, #1                                    
    b69c:	e1570003 	cmp	r7, r3                                        
    b6a0:	e2844010 	add	r4, r4, #16                                   
    b6a4:	3afffff4 	bcc	b67c <ramdisk_ioctl+0xe4>                     
    b6a8:	eaffffe0 	b	b630 <ramdisk_ioctl+0x98>                       
            break;                                                    
        }                                                             
                                                                      
        case RTEMS_BLKIO_DELETED:                                     
            if (rd->free_at_delete_request) {                         
              ramdisk_free(rd);                                       
    b6ac:	e1a00006 	mov	r0, r6                                        
    b6b0:	eb000021 	bl	b73c <ramdisk_free>                            
    b6b4:	eaffffc5 	b	b5d0 <ramdisk_ioctl+0x38>                       
                                                                      

0000b76c <ramdisk_register>: rtems_blkdev_bnum media_block_count, bool trace, const char *disk, dev_t *dev_ptr ) {
    b76c:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
    b770:	e24dd010 	sub	sp, sp, #16                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
    b774:	e3a06000 	mov	r6, #0                                        
    b778:	e28dc010 	add	ip, sp, #16                                   
    b77c:	e52c6004 	str	r6, [ip, #-4]!                                
  rtems_blkdev_bnum media_block_count,                                
  bool trace,                                                         
  const char *disk,                                                   
  dev_t *dev_ptr                                                      
)                                                                     
{                                                                     
    b780:	e1a0e002 	mov	lr, r2                                        
    b784:	e1a05000 	mov	r5, r0                                        
    b788:	e1a04001 	mov	r4, r1                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
    b78c:	e1a00006 	mov	r0, r6                                        
    b790:	e59f108c 	ldr	r1, [pc, #140]	; b824 <ramdisk_register+0xb8> 
    b794:	e1a0200c 	mov	r2, ip                                        
  rtems_blkdev_bnum media_block_count,                                
  bool trace,                                                         
  const char *disk,                                                   
  dev_t *dev_ptr                                                      
)                                                                     
{                                                                     
    b798:	e1a06003 	mov	r6, r3                                        
    b79c:	e59d9030 	ldr	r9, [sp, #48]	; 0x30                          
    b7a0:	e20e80ff 	and	r8, lr, #255	; 0xff                           
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
    b7a4:	ebfff2cf 	bl	82e8 <rtems_io_register_driver>                
  if (sc != RTEMS_SUCCESSFUL) {                                       
    b7a8:	e2507000 	subs	r7, r0, #0                                   
    return RTEMS_UNSATISFIED;                                         
    b7ac:	13a0000d 	movne	r0, #13                                     
  rtems_device_major_number major = 0;                                
  ramdisk *rd = NULL;                                                 
  dev_t dev = 0;                                                      
                                                                      
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
  if (sc != RTEMS_SUCCESSFUL) {                                       
    b7b0:	0a000001 	beq	b7bc <ramdisk_register+0x50>                  
  }                                                                   
                                                                      
  *dev_ptr = dev;                                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    b7b4:	e28dd010 	add	sp, sp, #16                                   
    b7b8:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
  sc = rtems_io_register_driver(0, &ramdisk_ops, &major);             
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  rd = ramdisk_allocate(NULL, media_block_size, media_block_count, trace);
    b7bc:	e1a03008 	mov	r3, r8                                        
    b7c0:	e1a01005 	mov	r1, r5                                        
    b7c4:	e1a02004 	mov	r2, r4                                        
    b7c8:	ebffffbc 	bl	b6c0 <ramdisk_allocate>                        
  if (rd == NULL) {                                                   
    b7cc:	e2508000 	subs	r8, r0, #0                                   
    b7d0:	0a00000f 	beq	b814 <ramdisk_register+0xa8>                  
  rtems_device_minor_number _minor                                    
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.__overlay.major = _major;                                      
    b7d4:	e59da00c 	ldr	sl, [sp, #12]                                 
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  dev = rtems_filesystem_make_dev_t(major, 0);                        
                                                                      
  sc = rtems_disk_create_phys(                                        
    b7d8:	e59fc048 	ldr	ip, [pc, #72]	; b828 <ramdisk_register+0xbc>  
    b7dc:	e1a0000a 	mov	r0, sl                                        
    b7e0:	e1a01007 	mov	r1, r7                                        
    b7e4:	e1a02005 	mov	r2, r5                                        
    b7e8:	e1a03004 	mov	r3, r4                                        
    b7ec:	e58dc000 	str	ip, [sp]                                      
    b7f0:	e58d8004 	str	r8, [sp, #4]                                  
    b7f4:	e58d6008 	str	r6, [sp, #8]                                  
    b7f8:	ebffdca5 	bl	2a94 <rtems_disk_create_phys>                  
    media_block_count,                                                
    ramdisk_ioctl,                                                    
    rd,                                                               
    disk                                                              
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    b7fc:	e3500000 	cmp	r0, #0                                        
    rtems_io_unregister_driver(major);                                
                                                                      
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  *dev_ptr = dev;                                                     
    b800:	0589a000 	streq	sl, [r9]                                    
    b804:	05890004 	streq	r0, [r9, #4]                                
    media_block_count,                                                
    ramdisk_ioctl,                                                    
    rd,                                                               
    disk                                                              
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    b808:	0affffe9 	beq	b7b4 <ramdisk_register+0x48>                  
    ramdisk_free(rd);                                                 
    b80c:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
    b810:	ebffffc9 	bl	b73c <ramdisk_free>                            <== NOT EXECUTED
    rtems_io_unregister_driver(major);                                
    b814:	e59d000c 	ldr	r0, [sp, #12]                                 <== NOT EXECUTED
    b818:	ebfff30d 	bl	8454 <rtems_io_unregister_driver>              <== NOT EXECUTED
                                                                      
    return RTEMS_UNSATISFIED;                                         
    b81c:	e3a0000d 	mov	r0, #13                                       <== NOT EXECUTED
    b820:	eaffffe3 	b	b7b4 <ramdisk_register+0x48>                    <== NOT EXECUTED
                                                                      

00018c14 <read>: size_t count ) { rtems_libio_t *iop; rtems_libio_check_fd( fd );
   18c14:	e59f3080 	ldr	r3, [pc, #128]	; 18c9c <read+0x88>            
   18c18:	e5933000 	ldr	r3, [r3]                                      
   18c1c:	e1500003 	cmp	r0, r3                                        
ssize_t read(                                                         
  int         fd,                                                     
  void       *buffer,                                                 
  size_t      count                                                   
)                                                                     
{                                                                     
   18c20:	e92d4010 	push	{r4, lr}                                     
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
   18c24:	2a000012 	bcs	18c74 <read+0x60>                             
  iop = rtems_libio_iop( fd );                                        
   18c28:	e59f4070 	ldr	r4, [pc, #112]	; 18ca0 <read+0x8c>            
   18c2c:	e5944000 	ldr	r4, [r4]                                      
   18c30:	e0800080 	add	r0, r0, r0, lsl #1                            
   18c34:	e0840200 	add	r0, r4, r0, lsl #4                            
  rtems_libio_check_is_open( iop );                                   
   18c38:	e590400c 	ldr	r4, [r0, #12]                                 
   18c3c:	e3140c01 	tst	r4, #256	; 0x100                              
   18c40:	0a00000b 	beq	18c74 <read+0x60>                             
  rtems_libio_check_buffer( buffer );                                 
   18c44:	e3510000 	cmp	r1, #0                                        
   18c48:	0a00000e 	beq	18c88 <read+0x74>                             
  rtems_libio_check_count( count );                                   
   18c4c:	e3520000 	cmp	r2, #0                                        
   18c50:	0a000005 	beq	18c6c <read+0x58>                             
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
   18c54:	e3140002 	tst	r4, #2                                        
   18c58:	0a000005 	beq	18c74 <read+0x60>                             
                                                                      
  /*                                                                  
   *  Now process the read().                                         
   */                                                                 
  return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );     
   18c5c:	e5903020 	ldr	r3, [r0, #32]                                 
   18c60:	e1a0e00f 	mov	lr, pc                                        
   18c64:	e593f008 	ldr	pc, [r3, #8]                                  
   18c68:	e8bd8010 	pop	{r4, pc}                                      
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
  rtems_libio_check_count( count );                                   
   18c6c:	e1a00002 	mov	r0, r2                                        
                                                                      
  /*                                                                  
   *  Now process the read().                                         
   */                                                                 
  return (*iop->pathinfo.handlers->read_h)( iop, buffer, count );     
}                                                                     
   18c70:	e8bd8010 	pop	{r4, pc}                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
  rtems_libio_check_count( count );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
   18c74:	ebffd2db 	bl	d7e8 <__errno>                                 
   18c78:	e3a03009 	mov	r3, #9                                        
   18c7c:	e5803000 	str	r3, [r0]                                      
   18c80:	e3e00000 	mvn	r0, #0                                        
   18c84:	e8bd8010 	pop	{r4, pc}                                      
  rtems_libio_t *iop;                                                 
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
   18c88:	ebffd2d6 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
   18c8c:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   18c90:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   18c94:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   18c98:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

00003af0 <read_extended_partition>: * RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure, * RTEMS_INTERNAL_ERROR if other error occurs. */ static rtems_status_code read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part) {
    3af0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    int                  i;                                           
    rtems_sector_data_t *sector = NULL;                               
    3af4:	e3a03000 	mov	r3, #0                                        
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
{                                                                     
    3af8:	e24dd008 	sub	sp, sp, #8                                    
    uint32_t             here;                                        
    uint8_t             *data;                                        
    rtems_part_desc_t   *new_part_desc;                               
    rtems_status_code    rc;                                          
                                                                      
    if ((ext_part == NULL) || (ext_part->disk_desc == NULL))          
    3afc:	e2524000 	subs	r4, r2, #0                                   
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
{                                                                     
    3b00:	e1a08000 	mov	r8, r0                                        
    3b04:	e1a07001 	mov	r7, r1                                        
    int                  i;                                           
    rtems_sector_data_t *sector = NULL;                               
    3b08:	e58d3000 	str	r3, [sp]                                      
    uint32_t             here;                                        
    uint8_t             *data;                                        
    rtems_part_desc_t   *new_part_desc;                               
    rtems_status_code    rc;                                          
                                                                      
    if ((ext_part == NULL) || (ext_part->disk_desc == NULL))          
    3b0c:	0a00000f 	beq	3b50 <read_extended_partition+0x60>           
    3b10:	e5943010 	ldr	r3, [r4, #16]                                 
    3b14:	e3530000 	cmp	r3, #0                                        
    3b18:	0a00000c 	beq	3b50 <read_extended_partition+0x60>           
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    }                                                                 
                                                                      
    /* get start sector of current extended partition */              
    here = ext_part->start;                                           
    3b1c:	e5949004 	ldr	r9, [r4, #4]                                  
                                                                      
    /* get first extended partition sector */                         
                                                                      
    rc = get_sector(fd, here, §or);                               
    3b20:	e1a0200d 	mov	r2, sp                                        
    3b24:	e1a01009 	mov	r1, r9                                        
    3b28:	ebffff9c 	bl	39a0 <get_sector>                              
    if (rc != RTEMS_SUCCESSFUL)                                       
    3b2c:	e2505000 	subs	r5, r0, #0                                   
    {                                                                 
        if (sector)                                                   
    3b30:	e59d0000 	ldr	r0, [sp]                                      
    here = ext_part->start;                                           
                                                                      
    /* get first extended partition sector */                         
                                                                      
    rc = get_sector(fd, here, §or);                               
    if (rc != RTEMS_SUCCESSFUL)                                       
    3b34:	1a000009 	bne	3b60 <read_extended_partition+0x70>           
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
    3b38:	e5d03202 	ldrb	r3, [r0, #514]	; 0x202                       
    3b3c:	e3530055 	cmp	r3, #85	; 0x55                                
    3b40:	0a00000a 	beq	3b70 <read_extended_partition+0x80>           
        return rc;                                                    
    }                                                                 
                                                                      
    if (!msdos_signature_check(sector))                               
    {                                                                 
        free(sector);                                                 
    3b44:	eb000376 	bl	4924 <free>                                    <== NOT EXECUTED
        return RTEMS_INTERNAL_ERROR;                                  
    3b48:	e3a05019 	mov	r5, #25                                       <== NOT EXECUTED
    3b4c:	ea000000 	b	3b54 <read_extended_partition+0x64>             <== NOT EXECUTED
    rtems_part_desc_t   *new_part_desc;                               
    rtems_status_code    rc;                                          
                                                                      
    if ((ext_part == NULL) || (ext_part->disk_desc == NULL))          
    {                                                                 
        return RTEMS_INTERNAL_ERROR;                                  
    3b50:	e3a05019 	mov	r5, #25                                       <== NOT EXECUTED
    }                                                                 
                                                                      
    free(sector);                                                     
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
    3b54:	e1a00005 	mov	r0, r5                                        
    3b58:	e28dd008 	add	sp, sp, #8                                    
    3b5c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    /* get first extended partition sector */                         
                                                                      
    rc = get_sector(fd, here, §or);                               
    if (rc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
        if (sector)                                                   
    3b60:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    3b64:	0afffffa 	beq	3b54 <read_extended_partition+0x64>           <== NOT EXECUTED
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
        }                                                             
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
    3b68:	eb00036d 	bl	4924 <free>                                    <== NOT EXECUTED
                                                                      
    return RTEMS_SUCCESSFUL;                                          
    3b6c:	eafffff8 	b	3b54 <read_extended_partition+0x64>             <== NOT EXECUTED
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
    3b70:	e5d03203 	ldrb	r3, [r0, #515]	; 0x203                       
    3b74:	e35300aa 	cmp	r3, #170	; 0xaa                               
    3b78:	1afffff1 	bne	3b44 <read_extended_partition+0x54>           
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
    3b7c:	e2800e1d 	add	r0, r0, #464	; 0x1d0                          
    3b80:	e280a002 	add	sl, r0, #2                                    
static bool                                                           
msdos_signature_check (rtems_sector_data_t *sector)                   
{                                                                     
    uint8_t *p = sector->data + RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_OFFSET;
                                                                      
    return ((p[0] == RTEMS_IDE_PARTITION_MSDOS_SIGNATURE_DATA1) &&    
    3b84:	e1a06004 	mov	r6, r4                                        
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_NO_MEMOTY if cannot allocate memory for part_desc_t strucure,
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
static rtems_status_code                                              
read_extended_partition(int fd, uint32_t start, rtems_part_desc_t *ext_part)
    3b88:	e284b010 	add	fp, r4, #16                                   
    3b8c:	e24a0010 	sub	r0, sl, #16                                   
    3b90:	e28d1004 	add	r1, sp, #4                                    
    3b94:	ebffffa5 	bl	3a30 <data_to_part_desc.part.1>                
    {                                                                 
        /* if data_to_part_desc fails skip this partition             
         * and parse the next one                                     
         */                                                           
        rc = data_to_part_desc(data, &new_part_desc);                 
        if (rc != RTEMS_SUCCESSFUL)                                   
    3b98:	e2505000 	subs	r5, r0, #0                                   
    3b9c:	1a000025 	bne	3c38 <read_extended_partition+0x148>          
        {                                                             
            free(sector);                                             
            return rc;                                                
        }                                                             
                                                                      
        if (new_part_desc == NULL)                                    
    3ba0:	e59d2004 	ldr	r2, [sp, #4]                                  
    3ba4:	e3520000 	cmp	r2, #0                                        
    3ba8:	0a000013 	beq	3bfc <read_extended_partition+0x10c>          
        {                                                             
            data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;              
            continue;                                                 
        }                                                             
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
    3bac:	e5862018 	str	r2, [r6, #24]                                 
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
    3bb0:	e5d21001 	ldrb	r1, [r2, #1]                                 
            continue;                                                 
        }                                                             
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
    3bb4:	e5943010 	ldr	r3, [r4, #16]                                 
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
    3bb8:	e3510005 	cmp	r1, #5                                        
    3bbc:	13510085 	cmpne	r1, #133	; 0x85                             
            data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;              
            continue;                                                 
        }                                                             
                                                                      
        ext_part->sub_part[i] = new_part_desc;                        
        new_part_desc->ext_part = ext_part;                           
    3bc0:	e5824014 	str	r4, [r2, #20]                                 
        new_part_desc->disk_desc = ext_part->disk_desc;               
    3bc4:	e5823010 	str	r3, [r2, #16]                                 
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
    3bc8:	0a000012 	beq	3c18 <read_extended_partition+0x128>          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
            new_part_desc->log_id = ++disk_desc->last_log_id;         
            new_part_desc->start += here;                             
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
    3bcc:	e9924002 	ldmib	r2, {r1, lr}                                
            read_extended_partition(fd, start, new_part_desc);        
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
    3bd0:	e593c024 	ldr	ip, [r3, #36]	; 0x24                          
            new_part_desc->log_id = ++disk_desc->last_log_id;         
            new_part_desc->start += here;                             
    3bd4:	e0891001 	add	r1, r9, r1                                    
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
    3bd8:	e24ee001 	sub	lr, lr, #1                                    
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
            new_part_desc->log_id = ++disk_desc->last_log_id;         
    3bdc:	e28c0001 	add	r0, ip, #1                                    
            new_part_desc->start += here;                             
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
    3be0:	e08ee001 	add	lr, lr, r1                                    
            read_extended_partition(fd, start, new_part_desc);        
        }                                                             
        else                                                          
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
    3be4:	e28cc00a 	add	ip, ip, #10                                   
    3be8:	e783210c 	str	r2, [r3, ip, lsl #2]                          
            new_part_desc->log_id = ++disk_desc->last_log_id;         
    3bec:	e5830024 	str	r0, [r3, #36]	; 0x24                          
    3bf0:	e5c20002 	strb	r0, [r2, #2]                                 
            new_part_desc->start += here;                             
    3bf4:	e5821004 	str	r1, [r2, #4]                                  
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
    3bf8:	e582e00c 	str	lr, [r2, #12]                                 
    3bfc:	e2866004 	add	r6, r6, #4                                    
                                                                      
    /* read and process up to 4 logical partition descriptors */      
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
                                                                      
    for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++)
    3c00:	e156000b 	cmp	r6, fp                                        
        {                                                             
            rtems_disk_desc_t *disk_desc = new_part_desc->disk_desc;  
            disk_desc->partitions[disk_desc->last_log_id] = new_part_desc;
            new_part_desc->log_id = ++disk_desc->last_log_id;         
            new_part_desc->start += here;                             
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
    3c04:	e28aa010 	add	sl, sl, #16                                   
                                                                      
    /* read and process up to 4 logical partition descriptors */      
                                                                      
    data = sector->data + RTEMS_IDE_PARTITION_TABLE_OFFSET;           
                                                                      
    for (i = 0; i < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER; i++)
    3c08:	1affffdf 	bne	3b8c <read_extended_partition+0x9c>           
            new_part_desc->end = new_part_desc->start + new_part_desc->size - 1;
        }                                                             
        data += RTEMS_IDE_PARTITION_DESCRIPTOR_SIZE;                  
    }                                                                 
                                                                      
    free(sector);                                                     
    3c0c:	e59d0000 	ldr	r0, [sp]                                      
    3c10:	eb000343 	bl	4924 <free>                                    
    3c14:	eaffffce 	b	3b54 <read_extended_partition+0x64>             
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
        {                                                             
            new_part_desc->log_id = EMPTY_PARTITION;                  
            new_part_desc->start += start;                            
    3c18:	e5923004 	ldr	r3, [r2, #4]                                  
    3c1c:	e0833007 	add	r3, r3, r7                                    
        new_part_desc->ext_part = ext_part;                           
        new_part_desc->disk_desc = ext_part->disk_desc;               
                                                                      
        if (is_extended(new_part_desc->sys_type))                     
        {                                                             
            new_part_desc->log_id = EMPTY_PARTITION;                  
    3c20:	e5c25002 	strb	r5, [r2, #2]                                 
            new_part_desc->start += start;                            
    3c24:	e5823004 	str	r3, [r2, #4]                                  
            read_extended_partition(fd, start, new_part_desc);        
    3c28:	e1a00008 	mov	r0, r8                                        
    3c2c:	e1a01007 	mov	r1, r7                                        
    3c30:	ebffffae 	bl	3af0 <read_extended_partition>                 
    3c34:	eafffff0 	b	3bfc <read_extended_partition+0x10c>            
         * and parse the next one                                     
         */                                                           
        rc = data_to_part_desc(data, &new_part_desc);                 
        if (rc != RTEMS_SUCCESSFUL)                                   
        {                                                             
            free(sector);                                             
    3c38:	e59d0000 	ldr	r0, [sp]                                      <== NOT EXECUTED
    3c3c:	eb000338 	bl	4924 <free>                                    <== NOT EXECUTED
            return rc;                                                
    3c40:	eaffffc3 	b	3b54 <read_extended_partition+0x64>             <== NOT EXECUTED
                                                                      

00003ff0 <readv>: int v; int bytes; rtems_libio_t *iop; bool all_zeros; rtems_libio_check_fd( fd );
    3ff0:	e59f3120 	ldr	r3, [pc, #288]	; 4118 <readv+0x128>           
    3ff4:	e5933000 	ldr	r3, [r3]                                      
    3ff8:	e1500003 	cmp	r0, r3                                        
ssize_t readv(                                                        
  int                 fd,                                             
  const struct iovec *iov,                                            
  int                 iovcnt                                          
)                                                                     
{                                                                     
    3ffc:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    4000:	e1a04002 	mov	r4, r2                                        
  int            v;                                                   
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
    4004:	2a00003e 	bcs	4104 <readv+0x114>                            
  iop = rtems_libio_iop( fd );                                        
    4008:	e59f310c 	ldr	r3, [pc, #268]	; 411c <readv+0x12c>           
    400c:	e5933000 	ldr	r3, [r3]                                      
    4010:	e0800080 	add	r0, r0, r0, lsl #1                            
    4014:	e0837200 	add	r7, r3, r0, lsl #4                            
  rtems_libio_check_is_open( iop );                                   
    4018:	e597300c 	ldr	r3, [r7, #12]                                 
    401c:	e3130c01 	tst	r3, #256	; 0x100                              
    4020:	0a000037 	beq	4104 <readv+0x114>                            
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
    4024:	e3130002 	tst	r3, #2                                        
    4028:	0a000035 	beq	4104 <readv+0x114>                            
                                                                      
  /*                                                                  
   *  Argument validation on IO vector                                
   */                                                                 
  if ( !iov )                                                         
    402c:	e3510000 	cmp	r1, #0                                        
    4030:	0a00002d 	beq	40ec <readv+0xfc>                             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    4034:	e3520000 	cmp	r2, #0                                        
    4038:	da00002b 	ble	40ec <readv+0xfc>                             
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
    403c:	e3520b01 	cmp	r2, #1024	; 0x400                             
    4040:	ca000029 	bgt	40ec <readv+0xfc>                             
    4044:	e3a02000 	mov	r2, #0                                        
    rtems_set_errno_and_return_minus_one( EINVAL );                   
    4048:	e1a05001 	mov	r5, r1                                        
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
    404c:	e1a03001 	mov	r3, r1                                        
    4050:	e3a06001 	mov	r6, #1                                        
    4054:	e1a01002 	mov	r1, r2                                        
    4058:	ea000000 	b	4060 <readv+0x70>                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    405c:	e1a0100c 	mov	r1, ip                                        
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
    4060:	e5930000 	ldr	r0, [r3]                                      
    4064:	e3500000 	cmp	r0, #0                                        
   *  are obvious errors in the iovec.  So this extra loop ensures    
   *  that we do not do anything if there is an argument error.       
   */                                                                 
                                                                      
  all_zeros = true;                                                   
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    4068:	e2822001 	add	r2, r2, #1                                    
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
    406c:	0a00001e 	beq	40ec <readv+0xfc>                             
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    4070:	e5930004 	ldr	r0, [r3, #4]                                  
    4074:	e080c001 	add	ip, r0, r1                                    
    if ( total < old )                                                
    4078:	e15c0001 	cmp	ip, r1                                        
    407c:	ba00001a 	blt	40ec <readv+0xfc>                             
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
    4080:	e3500000 	cmp	r0, #0                                        
    4084:	13a06000 	movne	r6, #0                                      
   *  are obvious errors in the iovec.  So this extra loop ensures    
   *  that we do not do anything if there is an argument error.       
   */                                                                 
                                                                      
  all_zeros = true;                                                   
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    4088:	e1520004 	cmp	r2, r4                                        
    408c:	e2833008 	add	r3, r3, #8                                    
    4090:	1afffff1 	bne	405c <readv+0x6c>                             
  /*                                                                  
   *  A readv with all zeros logically has no effect.  Even though    
   *  OpenGroup didn't address this case as they did with writev(),   
   *  we will handle it the same way for symmetry.                    
   */                                                                 
  if ( all_zeros == true ) {                                          
    4094:	e3560000 	cmp	r6, #0                                        
    return 0;                                                         
    4098:	13a08000 	movne	r8, #0                                      
  /*                                                                  
   *  A readv with all zeros logically has no effect.  Even though    
   *  OpenGroup didn't address this case as they did with writev(),   
   *  we will handle it the same way for symmetry.                    
   */                                                                 
  if ( all_zeros == true ) {                                          
    409c:	1a000016 	bne	40fc <readv+0x10c>                            
    40a0:	e1a08006 	mov	r8, r6                                        
    40a4:	ea000006 	b	40c4 <readv+0xd4>                               
                                                                      
    if ( bytes > 0 ) {                                                
      total       += bytes;                                           
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
    40a8:	e5953004 	ldr	r3, [r5, #4]                                  
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
      total       += bytes;                                           
    40ac:	10888000 	addne	r8, r8, r0                                  
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
    40b0:	e1500003 	cmp	r0, r3                                        
    40b4:	1a000010 	bne	40fc <readv+0x10c>                            
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    40b8:	e1560004 	cmp	r6, r4                                        
    40bc:	e2855008 	add	r5, r5, #8                                    
    40c0:	0a00000d 	beq	40fc <readv+0x10c>                            
    bytes = (*iop->pathinfo.handlers->read_h)(                        
    40c4:	e8950006 	ldm	r5, {r1, r2}                                  
    40c8:	e5973020 	ldr	r3, [r7, #32]                                 
    40cc:	e1a00007 	mov	r0, r7                                        
    40d0:	e1a0e00f 	mov	lr, pc                                        
    40d4:	e593f008 	ldr	pc, [r3, #8]                                  
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
    40d8:	e3500000 	cmp	r0, #0                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the readv().                                        
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    40dc:	e2866001 	add	r6, r6, #1                                    
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
    40e0:	aafffff0 	bge	40a8 <readv+0xb8>                             
      return -1;                                                      
    40e4:	e3e08000 	mvn	r8, #0                                        <== NOT EXECUTED
    40e8:	ea000003 	b	40fc <readv+0x10c>                              <== NOT EXECUTED
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old )                                                
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    40ec:	eb002911 	bl	e538 <__errno>                                 
    40f0:	e3a03016 	mov	r3, #22                                       
    40f4:	e5803000 	str	r3, [r0]                                      
    40f8:	e3e08000 	mvn	r8, #0                                        
    if (bytes != iov[ v ].iov_len)                                    
      break;                                                          
  }                                                                   
                                                                      
  return total;                                                       
}                                                                     
    40fc:	e1a00008 	mov	r0, r8                                        
    4100:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_READ, EBADF );
    4104:	eb00290b 	bl	e538 <__errno>                                 
    4108:	e3a03009 	mov	r3, #9                                        
    410c:	e5803000 	str	r3, [r0]                                      
    4110:	e3e08000 	mvn	r8, #0                                        
    4114:	eafffff8 	b	40fc <readv+0x10c>                              
                                                                      

000032fc <realloc>: void *realloc( void *ptr, size_t size ) {
    32fc:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    3300:	e59f2118 	ldr	r2, [pc, #280]	; 3420 <realloc+0x124>         
)                                                                     
{                                                                     
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
    3304:	e59f5118 	ldr	r5, [pc, #280]	; 3424 <realloc+0x128>         
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    3308:	e5922000 	ldr	r2, [r2]                                      
)                                                                     
{                                                                     
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
    330c:	e5953010 	ldr	r3, [r5, #16]                                 
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    3310:	e3520003 	cmp	r2, #3                                        
)                                                                     
{                                                                     
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
    3314:	e2833001 	add	r3, r3, #1                                    
                                                                      
void *realloc(                                                        
  void *ptr,                                                          
  size_t size                                                         
)                                                                     
{                                                                     
    3318:	e24dd004 	sub	sp, sp, #4                                    
    331c:	e1a04000 	mov	r4, r0                                        
    3320:	e1a06001 	mov	r6, r1                                        
  uintptr_t old_size;                                                 
  char    *new_area;                                                  
                                                                      
  MSBUMP(realloc_calls, 1);                                           
    3324:	e5853010 	str	r3, [r5, #16]                                 
                                                                      
  /*                                                                  
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    3328:	0a000024 	beq	33c0 <realloc+0xc4>                           
  }                                                                   
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
    332c:	e3540000 	cmp	r4, #0                                        
    3330:	0a000036 	beq	3410 <realloc+0x114>                          
    return malloc( size );                                            
                                                                      
  if ( !size ) {                                                      
    3334:	e3560000 	cmp	r6, #0                                        
    3338:	0a00002b 	beq	33ec <realloc+0xf0>                           
    free( ptr );                                                      
    return (void *) 0;                                                
  }                                                                   
                                                                      
  if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
    333c:	e59f70e4 	ldr	r7, [pc, #228]	; 3428 <realloc+0x12c>         
    3340:	e1a01004 	mov	r1, r4                                        
    3344:	e5970000 	ldr	r0, [r7]                                      
    3348:	e1a0200d 	mov	r2, sp                                        
    334c:	eb0013ce 	bl	828c <_Protected_heap_Get_block_size>          
    3350:	e2508000 	subs	r8, r0, #0                                   
    3354:	0a000028 	beq	33fc <realloc+0x100>                          
  }                                                                   
                                                                      
  /*                                                                  
   *  Now resize it.                                                  
   */                                                                 
  if ( _Protected_heap_Resize_block( RTEMS_Malloc_Heap, ptr, size ) ) {
    3358:	e5970000 	ldr	r0, [r7]                                      
    335c:	e1a01004 	mov	r1, r4                                        
    3360:	e1a02006 	mov	r2, r6                                        
    3364:	eb0013db 	bl	82d8 <_Protected_heap_Resize_block>            
    3368:	e3500000 	cmp	r0, #0                                        
    336c:	0a000002 	beq	337c <realloc+0x80>                           
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
  free( ptr );                                                        
                                                                      
  return new_area;                                                    
                                                                      
}                                                                     
    3370:	e1a00004 	mov	r0, r4                                        
    3374:	e28dd004 	add	sp, sp, #4                                    
    3378:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
   *  There used to be a free on this error case but it is wrong to   
   *  free the memory per OpenGroup Single UNIX Specification V2      
   *  and the C Standard.                                             
   */                                                                 
                                                                      
  new_area = malloc( size );                                          
    337c:	e1a00006 	mov	r0, r6                                        
    3380:	ebfffd31 	bl	284c <malloc>                                  
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
    3384:	e5953004 	ldr	r3, [r5, #4]                                  
                                                                      
  if ( !new_area ) {                                                  
    3388:	e2507000 	subs	r7, r0, #0                                   
   *  and the C Standard.                                             
   */                                                                 
                                                                      
  new_area = malloc( size );                                          
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
    338c:	e2433001 	sub	r3, r3, #1                                    
    3390:	e5853004 	str	r3, [r5, #4]                                  
                                                                      
  if ( !new_area ) {                                                  
    return (void *) 0;                                                
    3394:	01a04007 	moveq	r4, r7                                      
                                                                      
  new_area = malloc( size );                                          
                                                                      
  MSBUMP(malloc_calls, (uint32_t) -1);   /* subtract off the malloc */
                                                                      
  if ( !new_area ) {                                                  
    3398:	0afffff4 	beq	3370 <realloc+0x74>                           
    return (void *) 0;                                                
  }                                                                   
                                                                      
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
    339c:	e59d2000 	ldr	r2, [sp]                                      
    33a0:	e1a01004 	mov	r1, r4                                        
    33a4:	e1560002 	cmp	r6, r2                                        
    33a8:	31a02006 	movcc	r2, r6                                      
    33ac:	eb002b47 	bl	e0d0 <memcpy>                                  
  free( ptr );                                                        
    33b0:	e1a00004 	mov	r0, r4                                        
    33b4:	ebfffc56 	bl	2514 <free>                                    
                                                                      
  return new_area;                                                    
    33b8:	e1a04007 	mov	r4, r7                                        
    33bc:	eaffffeb 	b	3370 <realloc+0x74>                             
   * This routine returns true if thread dispatch indicates           
   * that we are in a critical section.                               
   */                                                                 
  RTEMS_INLINE_ROUTINE bool _Thread_Dispatch_in_critical_section(void)
  {                                                                   
     if (  _Thread_Dispatch_disable_level == 0 )                      
    33c0:	e59f3064 	ldr	r3, [pc, #100]	; 342c <realloc+0x130>         
    33c4:	e5933000 	ldr	r3, [r3]                                      
    33c8:	e3530000 	cmp	r3, #0                                        
   *  Do not attempt to allocate memory if in a critical section or ISR.
   */                                                                 
                                                                      
  if (_System_state_Is_up(_System_state_Get())) {                     
    if (_Thread_Dispatch_in_critical_section())                       
      return (void *) 0;                                              
    33cc:	13a04000 	movne	r4, #0                                      
    33d0:	1affffe6 	bne	3370 <realloc+0x74>                           
                                                                      
    if (_ISR_Nest_level > 0)                                          
    33d4:	e59f2054 	ldr	r2, [pc, #84]	; 3430 <realloc+0x134>          
    33d8:	e5922000 	ldr	r2, [r2]                                      
    33dc:	e3520000 	cmp	r2, #0                                        
    33e0:	0affffd1 	beq	332c <realloc+0x30>                           
      return (void *) 0;                                              
    33e4:	e1a04003 	mov	r4, r3                                        <== NOT EXECUTED
    33e8:	eaffffe0 	b	3370 <realloc+0x74>                             <== NOT EXECUTED
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
                                                                      
  if ( !size ) {                                                      
    free( ptr );                                                      
    33ec:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    33f0:	ebfffc47 	bl	2514 <free>                                    <== NOT EXECUTED
    return (void *) 0;                                                
    33f4:	e1a04006 	mov	r4, r6                                        <== NOT EXECUTED
    33f8:	eaffffdc 	b	3370 <realloc+0x74>                             <== NOT EXECUTED
  }                                                                   
                                                                      
  if ( !_Protected_heap_Get_block_size(RTEMS_Malloc_Heap, ptr, &old_size) ) {
    errno = EINVAL;                                                   
    33fc:	eb0028f9 	bl	d7e8 <__errno>                                 
    3400:	e3a03016 	mov	r3, #22                                       
    3404:	e5803000 	str	r3, [r0]                                      
    return (void *) 0;                                                
    3408:	e1a04008 	mov	r4, r8                                        
    340c:	eaffffd7 	b	3370 <realloc+0x74>                             
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
    3410:	e1a00006 	mov	r0, r6                                        
  memcpy( new_area, ptr, (size < old_size) ? size : old_size );       
  free( ptr );                                                        
                                                                      
  return new_area;                                                    
                                                                      
}                                                                     
    3414:	e28dd004 	add	sp, sp, #4                                    
    3418:	e8bd41f0 	pop	{r4, r5, r6, r7, r8, lr}                      
                                                                      
  /*                                                                  
   * Continue with realloc().                                         
   */                                                                 
  if ( !ptr )                                                         
    return malloc( size );                                            
    341c:	eafffd0a 	b	284c <malloc>                                   
                                                                      

00003bac <release_with_count>: static void release_with_count( rtems_filesystem_global_location_t *global_loc, int count ) {
    3bac:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_filesystem_mount_table_entry_t *mt_entry =                    
    3bb0:	e5905014 	ldr	r5, [r0, #20]                                 
                                                                      
static void release_with_count(                                       
  rtems_filesystem_global_location_t *global_loc,                     
  int count                                                           
)                                                                     
{                                                                     
    3bb4:	e1a04000 	mov	r4, r0                                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    3bb8:	e10f3000 	mrs	r3, CPSR                                      
    3bbc:	e3832080 	orr	r2, r3, #128	; 0x80                           
    3bc0:	e129f002 	msr	CPSR_fc, r2                                   
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    && mt_entry->mt_fs_root->reference_count == 1;                    
    3bc4:	e5d56028 	ldrb	r6, [r5, #40]	; 0x28                         
  rtems_filesystem_mt_entry_declare_lock_context(lock_context);       
  bool do_free;                                                       
  bool do_unmount;                                                    
                                                                      
  rtems_filesystem_mt_entry_lock(lock_context);                       
  global_loc->reference_count -= count;                               
    3bc8:	e5902018 	ldr	r2, [r0, #24]                                 
    3bcc:	e3560000 	cmp	r6, #0                                        
    3bd0:	e0611002 	rsb	r1, r1, r2                                    
    3bd4:	e5801018 	str	r1, [r0, #24]                                 
                                                                      
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    3bd8:	13a06000 	movne	r6, #0                                      
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    && mt_entry->mt_fs_root->reference_count == 1;                    
    3bdc:	1a000003 	bne	3bf0 <release_with_count+0x44>                
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    3be0:	e5950014 	ldr	r0, [r5, #20]                                 
    3be4:	e595201c 	ldr	r2, [r5, #28]                                 
    3be8:	e1500002 	cmp	r0, r2                                        
    3bec:	0a00000e 	beq	3c2c <release_with_count+0x80>                
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    3bf0:	e129f003 	msr	CPSR_fc, r3                                   
  do_free = global_loc->reference_count == 0;                         
  do_unmount = rtems_filesystem_is_ready_for_unmount(mt_entry);       
  rtems_filesystem_mt_entry_unlock(lock_context);                     
                                                                      
  if (do_free) {                                                      
    3bf4:	e3510000 	cmp	r1, #0                                        
    3bf8:	0a000004 	beq	3c10 <release_with_count+0x64>                
    rtems_filesystem_location_free(&global_loc->location);            
    free(global_loc);                                                 
  }                                                                   
                                                                      
  if (do_unmount) {                                                   
    3bfc:	e3560000 	cmp	r6, #0                                        
    3c00:	08bd8070 	popeq	{r4, r5, r6, pc}                            
    rtems_filesystem_do_unmount(mt_entry);                            
    3c04:	e1a00005 	mov	r0, r5                                        
  }                                                                   
}                                                                     
    3c08:	e8bd4070 	pop	{r4, r5, r6, lr}                              
    rtems_filesystem_location_free(&global_loc->location);            
    free(global_loc);                                                 
  }                                                                   
                                                                      
  if (do_unmount) {                                                   
    rtems_filesystem_do_unmount(mt_entry);                            
    3c0c:	eaffff99 	b	3a78 <rtems_filesystem_do_unmount>              
  do_free = global_loc->reference_count == 0;                         
  do_unmount = rtems_filesystem_is_ready_for_unmount(mt_entry);       
  rtems_filesystem_mt_entry_unlock(lock_context);                     
                                                                      
  if (do_free) {                                                      
    rtems_filesystem_location_free(&global_loc->location);            
    3c10:	e1a00004 	mov	r0, r4                                        
    3c14:	eb001bf0 	bl	abdc <rtems_filesystem_location_free>          
    free(global_loc);                                                 
    3c18:	e1a00004 	mov	r0, r4                                        
    3c1c:	ebfffa3c 	bl	2514 <free>                                    
  }                                                                   
                                                                      
  if (do_unmount) {                                                   
    3c20:	e3560000 	cmp	r6, #0                                        
    3c24:	08bd8070 	popeq	{r4, r5, r6, pc}                            
    3c28:	eafffff5 	b	3c04 <release_with_count+0x58>                  <== NOT EXECUTED
    && mt_entry->mt_fs_root->reference_count == 1;                    
    3c2c:	e5952024 	ldr	r2, [r5, #36]	; 0x24                          
    3c30:	e5922018 	ldr	r2, [r2, #24]                                 
    3c34:	e3520001 	cmp	r2, #1                                        
    3c38:	1affffec 	bne	3bf0 <release_with_count+0x44>                
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    3c3c:	e2850014 	add	r0, r5, #20                                   
    3c40:	e285c018 	add	ip, r5, #24                                   
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    3c44:	e5856018 	str	r6, [r5, #24]                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    3c48:	e585c014 	str	ip, [r5, #20]                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
    3c4c:	e585001c 	str	r0, [r5, #28]                                 
                                                                      
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    3c50:	e1a06002 	mov	r6, r2                                        
    3c54:	eaffffe5 	b	3bf0 <release_with_count+0x44>                  
                                                                      

0000ab00 <rtems_assoc_ptr_by_local>: const rtems_assoc_t *rtems_assoc_ptr_by_local( const rtems_assoc_t *ap, uint32_t local_value ) {
    ab00:	e92d4030 	push	{r4, r5, lr}                                 
    ab04:	e1a04000 	mov	r4, r0                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    ab08:	e5900000 	ldr	r0, [r0]                                      
    ab0c:	e3500000 	cmp	r0, #0                                        
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
  const rtems_assoc_t *ap,                                            
  uint32_t             local_value                                    
)                                                                     
{                                                                     
    ab10:	e1a05001 	mov	r5, r1                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    ab14:	08bd8030 	popeq	{r4, r5, pc}                                
    ab18:	e59f1078 	ldr	r1, [pc, #120]	; ab98 <rtems_assoc_ptr_by_local+0x98>
    ab1c:	eb000e8d 	bl	e558 <strcmp>                                  
    ab20:	e3500000 	cmp	r0, #0                                        
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
  const rtems_assoc_t *ap,                                            
  uint32_t             local_value                                    
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
    ab24:	13a0c000 	movne	ip, #0                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    ab28:	0a000011 	beq	ab74 <rtems_assoc_ptr_by_local+0x74>          
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    if (ap->local_value == local_value)                               
    ab2c:	e5943004 	ldr	r3, [r4, #4]                                  
    ab30:	e1530005 	cmp	r3, r5                                        
#include <rtems.h>                                                    
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
    ab34:	1284100c 	addne	r1, r4, #12                                 
    ab38:	11a03001 	movne	r3, r1                                      
    ab3c:	11a00004 	movne	r0, r4                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    if (ap->local_value == local_value)                               
    ab40:	1a000004 	bne	ab58 <rtems_assoc_ptr_by_local+0x58>          
    ab44:	ea000011 	b	ab90 <rtems_assoc_ptr_by_local+0x90>            
    ab48:	e5132008 	ldr	r2, [r3, #-8]                                 
    ab4c:	e1520005 	cmp	r2, r5                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    ab50:	e280000c 	add	r0, r0, #12                                   
    if (ap->local_value == local_value)                               
    ab54:	08bd8030 	popeq	{r4, r5, pc}                                
#include <rtems.h>                                                    
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_local(                        
    ab58:	e0642000 	rsb	r2, r4, r0                                    
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    ab5c:	e7912002 	ldr	r2, [r1, r2]                                  
    ab60:	e3520000 	cmp	r2, #0                                        
    ab64:	e283300c 	add	r3, r3, #12                                   
    ab68:	1afffff6 	bne	ab48 <rtems_assoc_ptr_by_local+0x48>          
    ab6c:	e1a0000c 	mov	r0, ip                                        
    ab70:	e8bd8030 	pop	{r4, r5, pc}                                  
    ab74:	e594300c 	ldr	r3, [r4, #12]                                 
    ab78:	e3530000 	cmp	r3, #0                                        
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
    ab7c:	11a0c004 	movne	ip, r4                                      
    ab80:	1284400c 	addne	r4, r4, #12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
    ab84:	1affffe8 	bne	ab2c <rtems_assoc_ptr_by_local+0x2c>          
    ab88:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    ab8c:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
    if (ap->local_value == local_value)                               
    ab90:	e1a00004 	mov	r0, r4                                        
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
    ab94:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      

00002e5c <rtems_assoc_ptr_by_name>: const rtems_assoc_t *rtems_assoc_ptr_by_name( const rtems_assoc_t *ap, const char *name ) {
    2e5c:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    2e60:	e5904000 	ldr	r4, [r0]                                      
    2e64:	e3540000 	cmp	r4, #0                                        
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
    2e68:	e1a05000 	mov	r5, r0                                        
    2e6c:	e1a06001 	mov	r6, r1                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    2e70:	0a000014 	beq	2ec8 <rtems_assoc_ptr_by_name+0x6c>           
    2e74:	e1a00004 	mov	r0, r4                                        
    2e78:	e59f1078 	ldr	r1, [pc, #120]	; 2ef8 <rtems_assoc_ptr_by_name+0x9c>
    2e7c:	eb0030a7 	bl	f120 <strcmp>                                  
    2e80:	e3500000 	cmp	r0, #0                                        
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
    2e84:	13a08000 	movne	r8, #0                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    2e88:	0a000010 	beq	2ed0 <rtems_assoc_ptr_by_name+0x74>           
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
  const rtems_assoc_t *ap,                                            
  const char          *name                                           
)                                                                     
{                                                                     
    2e8c:	e1a03005 	mov	r3, r5                                        
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
    2e90:	e285700c 	add	r7, r5, #12                                   
    2e94:	ea000002 	b	2ea4 <rtems_assoc_ptr_by_name+0x48>             
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    2e98:	e512400c 	ldr	r4, [r2, #-12]                                
    2e9c:	e3540000 	cmp	r4, #0                                        
    2ea0:	0a000011 	beq	2eec <rtems_assoc_ptr_by_name+0x90>           
    if (strcmp(ap->name, name) == 0)                                  
    2ea4:	e1a00004 	mov	r0, r4                                        
    2ea8:	e1a01006 	mov	r1, r6                                        
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
    2eac:	e1a04003 	mov	r4, r3                                        
                                                                      
  for ( ; ap->name; ap++)                                             
    if (strcmp(ap->name, name) == 0)                                  
    2eb0:	eb00309a 	bl	f120 <strcmp>                                  
    2eb4:	e284300c 	add	r3, r4, #12                                   
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
    2eb8:	e0652003 	rsb	r2, r5, r3                                    
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    if (strcmp(ap->name, name) == 0)                                  
    2ebc:	e3500000 	cmp	r0, #0                                        
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_name(                         
    2ec0:	e0822007 	add	r2, r2, r7                                    
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    if (strcmp(ap->name, name) == 0)                                  
    2ec4:	1afffff3 	bne	2e98 <rtems_assoc_ptr_by_name+0x3c>           
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
    2ec8:	e1a00004 	mov	r0, r4                                        
    2ecc:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    2ed0:	e595400c 	ldr	r4, [r5, #12]                                 
    2ed4:	e3540000 	cmp	r4, #0                                        
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
    2ed8:	11a08005 	movne	r8, r5                                      
    2edc:	1285500c 	addne	r5, r5, #12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
    2ee0:	1affffe9 	bne	2e8c <rtems_assoc_ptr_by_name+0x30>           
    2ee4:	e1a04005 	mov	r4, r5                                        <== NOT EXECUTED
    2ee8:	eafffff6 	b	2ec8 <rtems_assoc_ptr_by_name+0x6c>             <== NOT EXECUTED
    2eec:	e1a04008 	mov	r4, r8                                        
    if (strcmp(ap->name, name) == 0)                                  
	return ap;                                                           
                                                                      
  return default_ap;                                                  
}                                                                     
    2ef0:	e1a00004 	mov	r0, r4                                        
    2ef4:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
                                                                      

0000d28c <rtems_assoc_ptr_by_remote>: const rtems_assoc_t *rtems_assoc_ptr_by_remote( const rtems_assoc_t *ap, uint32_t remote_value ) {
    d28c:	e92d4030 	push	{r4, r5, lr}                                 
    d290:	e1a04000 	mov	r4, r0                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    d294:	e5900000 	ldr	r0, [r0]                                      
    d298:	e3500000 	cmp	r0, #0                                        
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
  const rtems_assoc_t *ap,                                            
  uint32_t       remote_value                                         
)                                                                     
{                                                                     
    d29c:	e1a05001 	mov	r5, r1                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    d2a0:	08bd8030 	popeq	{r4, r5, pc}                                
    d2a4:	e59f1078 	ldr	r1, [pc, #120]	; d324 <rtems_assoc_ptr_by_remote+0x98>
    d2a8:	eb0004aa 	bl	e558 <strcmp>                                  
    d2ac:	e3500000 	cmp	r0, #0                                        
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
  const rtems_assoc_t *ap,                                            
  uint32_t       remote_value                                         
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
    d2b0:	13a0c000 	movne	ip, #0                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    d2b4:	0a000011 	beq	d300 <rtems_assoc_ptr_by_remote+0x74>         
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    if (ap->remote_value == remote_value)                             
    d2b8:	e5943008 	ldr	r3, [r4, #8]                                  
    d2bc:	e1530005 	cmp	r3, r5                                        
#include <rtems.h>                                                    
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
    d2c0:	1284100c 	addne	r1, r4, #12                                 
    d2c4:	11a03001 	movne	r3, r1                                      
    d2c8:	11a00004 	movne	r0, r4                                      
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    if (ap->remote_value == remote_value)                             
    d2cc:	1a000004 	bne	d2e4 <rtems_assoc_ptr_by_remote+0x58>         
    d2d0:	ea000011 	b	d31c <rtems_assoc_ptr_by_remote+0x90>           
    d2d4:	e5132004 	ldr	r2, [r3, #-4]                                 
    d2d8:	e1520005 	cmp	r2, r5                                        
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    d2dc:	e280000c 	add	r0, r0, #12                                   
    if (ap->remote_value == remote_value)                             
    d2e0:	08bd8030 	popeq	{r4, r5, pc}                                
#include <rtems.h>                                                    
#include <rtems/assoc.h>                                              
                                                                      
#include <string.h>             /* strcat, strcmp */                  
                                                                      
const rtems_assoc_t *rtems_assoc_ptr_by_remote(                       
    d2e4:	e0642000 	rsb	r2, r4, r0                                    
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
                                                                      
  for ( ; ap->name; ap++)                                             
    d2e8:	e7912002 	ldr	r2, [r1, r2]                                  
    d2ec:	e3520000 	cmp	r2, #0                                        
    d2f0:	e283300c 	add	r3, r3, #12                                   
    d2f4:	1afffff6 	bne	d2d4 <rtems_assoc_ptr_by_remote+0x48>         
    d2f8:	e1a0000c 	mov	r0, ip                                        
    d2fc:	e8bd8030 	pop	{r4, r5, pc}                                  
    d300:	e594300c 	ldr	r3, [r4, #12]                                 
    d304:	e3530000 	cmp	r3, #0                                        
)                                                                     
{                                                                     
  const rtems_assoc_t *default_ap = 0;                                
                                                                      
  if (rtems_assoc_is_default(ap))                                     
    default_ap = ap++;                                                
    d308:	11a0c004 	movne	ip, r4                                      
    d30c:	1284400c 	addne	r4, r4, #12                                 
                                                                      
  for ( ; ap->name; ap++)                                             
    d310:	1affffe8 	bne	d2b8 <rtems_assoc_ptr_by_remote+0x2c>         
    d314:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d318:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
    if (ap->remote_value == remote_value)                             
    d31c:	e1a00004 	mov	r0, r4                                        
      return ap;                                                      
                                                                      
  return default_ap;                                                  
}                                                                     
    d320:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      

0000bcfc <rtems_bdbuf_add_to_modified_list_after_access>: } } static void rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd) {
    bcfc:	e92d4010 	push	{r4, lr}                                     
  if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)   
    bd00:	e59f40b0 	ldr	r4, [pc, #176]	; bdb8 <rtems_bdbuf_add_to_modified_list_after_access+0xbc>
    bd04:	e5d43030 	ldrb	r3, [r4, #48]	; 0x30                         
    bd08:	e3530000 	cmp	r3, #0                                        
  }                                                                   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd)
{                                                                     
    bd0c:	e24dd004 	sub	sp, sp, #4                                    
  if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)   
    bd10:	0a000003 	beq	bd24 <rtems_bdbuf_add_to_modified_list_after_access+0x28>
    bd14:	e5942038 	ldr	r2, [r4, #56]	; 0x38                          <== NOT EXECUTED
    bd18:	e5903014 	ldr	r3, [r0, #20]                                 <== NOT EXECUTED
    bd1c:	e1520003 	cmp	r2, r3                                        <== NOT EXECUTED
    bd20:	0a00001d 	beq	bd9c <rtems_bdbuf_add_to_modified_list_after_access+0xa0><== NOT EXECUTED
   * difficult question. Is a snapshot of a block that is changing better than
   * nothing being written? We have tended to think we should hold changes for
   * only a specific period of time even if still changing and get onto disk
   * and letting the file system try and recover this position if it can.
   */                                                                 
  if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED                    
    bd24:	e5903020 	ldr	r3, [r0, #32]                                 
    bd28:	e3530003 	cmp	r3, #3                                        
    bd2c:	13530005 	cmpne	r3, #5                                      
        || bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)               
    bd->hold_timer = bdbuf_config.swap_block_hold;                    
    bd30:	059f3084 	ldreq	r3, [pc, #132]	; bdbc <rtems_bdbuf_add_to_modified_list_after_access+0xc0>
    bd34:	05933010 	ldreq	r3, [r3, #16]                               
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    bd38:	e590c024 	ldr	ip, [r0, #36]	; 0x24                          
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    bd3c:	e59f2074 	ldr	r2, [pc, #116]	; bdb8 <rtems_bdbuf_add_to_modified_list_after_access+0xbc>
   * only a specific period of time even if still changing and get onto disk
   * and letting the file system try and recover this position if it can.
   */                                                                 
  if (bd->state == RTEMS_BDBUF_STATE_ACCESS_CACHED                    
        || bd->state == RTEMS_BDBUF_STATE_ACCESS_EMPTY)               
    bd->hold_timer = bdbuf_config.swap_block_hold;                    
    bd40:	0580302c 	streq	r3, [r0, #44]	; 0x2c                        
    bd44:	e5943054 	ldr	r3, [r4, #84]	; 0x54                          
                                                                      
  the_node->next = tail;                                              
    bd48:	e2821050 	add	r1, r2, #80	; 0x50                            
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    bd4c:	e35c0000 	cmp	ip, #0                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    bd50:	e3a0c007 	mov	ip, #7                                        
    bd54:	e580c020 	str	ip, [r0, #32]                                 
    bd58:	e5801000 	str	r1, [r0]                                      
  tail->previous = the_node;                                          
    bd5c:	e5840054 	str	r0, [r4, #84]	; 0x54                          
  old_last->next = the_node;                                          
    bd60:	e5830000 	str	r0, [r3]                                      
  the_node->previous = old_last;                                      
    bd64:	e5803004 	str	r3, [r0, #4]                                  
    bd->hold_timer = bdbuf_config.swap_block_hold;                    
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    bd68:	1a000007 	bne	bd8c <rtems_bdbuf_add_to_modified_list_after_access+0x90>
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
  else if (rtems_bdbuf_has_buffer_waiters ())                         
    bd6c:	e5923074 	ldr	r3, [r2, #116]	; 0x74                         
    bd70:	e3530000 	cmp	r3, #0                                        
    bd74:	1a000001 	bne	bd80 <rtems_bdbuf_add_to_modified_list_after_access+0x84>
    rtems_bdbuf_wake_swapper ();                                      
}                                                                     
    bd78:	e28dd004 	add	sp, sp, #4                                    
    bd7c:	e8bd8010 	pop	{r4, pc}                                      
    bd80:	e28dd004 	add	sp, sp, #4                                    
    bd84:	e8bd4010 	pop	{r4, lr}                                      
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
  else if (rtems_bdbuf_has_buffer_waiters ())                         
    rtems_bdbuf_wake_swapper ();                                      
    bd88:	eaffff32 	b	ba58 <rtems_bdbuf_wake_swapper>                 
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
    bd8c:	e2820064 	add	r0, r2, #100	; 0x64                           
  else if (rtems_bdbuf_has_buffer_waiters ())                         
    rtems_bdbuf_wake_swapper ();                                      
}                                                                     
    bd90:	e28dd004 	add	sp, sp, #4                                    
    bd94:	e8bd4010 	pop	{r4, lr}                                      
                                                                      
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_MODIFIED);             
  rtems_chain_append_unprotected (&bdbuf_cache.modified, &bd->link);  
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
    bd98:	eaffffcd 	b	bcd4 <rtems_bdbuf_wake>                         
static void                                                           
rtems_bdbuf_add_to_modified_list_after_access (rtems_bdbuf_buffer *bd)
{                                                                     
  if (bdbuf_cache.sync_active && bdbuf_cache.sync_device == bd->dd)   
  {                                                                   
    rtems_bdbuf_unlock_cache ();                                      
    bd9c:	e58d0000 	str	r0, [sp]                                      <== NOT EXECUTED
    bda0:	ebffff1a 	bl	ba10 <rtems_bdbuf_unlock_cache>                <== NOT EXECUTED
                                                                      
    /*                                                                
     * Wait for the sync lock.                                        
     */                                                               
    rtems_bdbuf_lock_sync ();                                         
    bda4:	ebffff0b 	bl	b9d8 <rtems_bdbuf_lock_sync>                   <== NOT EXECUTED
                                                                      
    rtems_bdbuf_unlock_sync ();                                       
    bda8:	ebffff21 	bl	ba34 <rtems_bdbuf_unlock_sync>                 <== NOT EXECUTED
    rtems_bdbuf_lock_cache ();                                        
    bdac:	ebfffefe 	bl	b9ac <rtems_bdbuf_lock_cache>                  <== NOT EXECUTED
    bdb0:	e59d0000 	ldr	r0, [sp]                                      <== NOT EXECUTED
    bdb4:	eaffffda 	b	bd24 <rtems_bdbuf_add_to_modified_list_after_access+0x28><== NOT EXECUTED
                                                                      

0000bb2c <rtems_bdbuf_anonymous_wait>: rtems_mode prev_mode; /* * Indicate we are waiting. */ ++waiters->count;
    bb2c:	e5903000 	ldr	r3, [r0]                                      
    bb30:	e2833001 	add	r3, r3, #1                                    
 * The function assumes the cache is locked on entry and it will be locked on
 * exit.                                                              
 */                                                                   
static void                                                           
rtems_bdbuf_anonymous_wait (rtems_bdbuf_waiters *waiters)             
{                                                                     
    bb34:	e92d4030 	push	{r4, r5, lr}                                 
  rtems_mode        prev_mode;                                        
                                                                      
  /*                                                                  
   * Indicate we are waiting.                                         
   */                                                                 
  ++waiters->count;                                                   
    bb38:	e5803000 	str	r3, [r0]                                      
 * The function assumes the cache is locked on entry and it will be locked on
 * exit.                                                              
 */                                                                   
static void                                                           
rtems_bdbuf_anonymous_wait (rtems_bdbuf_waiters *waiters)             
{                                                                     
    bb3c:	e1a04000 	mov	r4, r0                                        
   * blocking or just hits that window, and before this task has blocked on the
   * semaphore. If the preempting task flushes the queue this task will not see
   * the flush and may block for ever or until another transaction flushes this
   * semaphore.                                                       
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
    bb40:	ebffffdb 	bl	bab4 <rtems_bdbuf_disable_preemption>          
    bb44:	e1a05000 	mov	r5, r0                                        
                                                                      
  /*                                                                  
   * Unlock the cache, wait, and lock the cache when we return.       
   */                                                                 
  rtems_bdbuf_unlock_cache ();                                        
    bb48:	ebffffb0 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  sc = rtems_semaphore_obtain (waiters->sema, RTEMS_WAIT, RTEMS_BDBUF_WAIT_TIMEOUT);
    bb4c:	e3a01000 	mov	r1, #0                                        
    bb50:	e5940004 	ldr	r0, [r4, #4]                                  
    bb54:	e1a02001 	mov	r2, r1                                        
    bb58:	ebffefe0 	bl	7ae0 <rtems_semaphore_obtain>                  
                                                                      
  if (sc == RTEMS_TIMEOUT)                                            
    bb5c:	e3500006 	cmp	r0, #6                                        
    bb60:	0a000008 	beq	bb88 <rtems_bdbuf_anonymous_wait+0x5c>        
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_TO);              
                                                                      
  if (sc != RTEMS_UNSATISFIED)                                        
    bb64:	e350000d 	cmp	r0, #13                                       
    bb68:	1a000008 	bne	bb90 <rtems_bdbuf_anonymous_wait+0x64>        
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_2);               
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    bb6c:	ebffff8e 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                                                                      
  rtems_bdbuf_restore_preemption (prev_mode);                         
    bb70:	e1a00005 	mov	r0, r5                                        
    bb74:	ebffffde 	bl	baf4 <rtems_bdbuf_restore_preemption>          
                                                                      
  --waiters->count;                                                   
    bb78:	e5943000 	ldr	r3, [r4]                                      
    bb7c:	e2433001 	sub	r3, r3, #1                                    
    bb80:	e5843000 	str	r3, [r4]                                      
}                                                                     
    bb84:	e8bd8030 	pop	{r4, r5, pc}                                  
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  sc = rtems_semaphore_obtain (waiters->sema, RTEMS_WAIT, RTEMS_BDBUF_WAIT_TIMEOUT);
                                                                      
  if (sc == RTEMS_TIMEOUT)                                            
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_TO);              
    bb88:	e3a00003 	mov	r0, #3                                        <== NOT EXECUTED
    bb8c:	ebffff82 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      
  if (sc != RTEMS_UNSATISFIED)                                        
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAIT_2);               
    bb90:	e3a00002 	mov	r0, #2                                        <== NOT EXECUTED
    bb94:	ebffff80 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000bdc0 <rtems_bdbuf_create_task.constprop.10>: return NULL; } static rtems_status_code rtems_bdbuf_create_task(
    bdc0:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_task_argument arg,                                            
  rtems_id *id                                                        
)                                                                     
{                                                                     
  rtems_status_code sc;                                               
  size_t stack_size = bdbuf_config.task_stack_size ?                  
    bdc4:	e59fc060 	ldr	ip, [pc, #96]	; be2c <rtems_bdbuf_create_task.constprop.10+0x6c>
    bdc8:	e59cc01c 	ldr	ip, [ip, #28]                                 
                                                                      
  return NULL;                                                        
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_create_task(                                              
    bdcc:	e24dd008 	sub	sp, sp, #8                                    
  size_t stack_size = bdbuf_config.task_stack_size ?                  
    bdbuf_config.task_stack_size : RTEMS_BDBUF_TASK_STACK_SIZE_DEFAULT;
                                                                      
  priority = priority != 0 ? priority : default_priority;             
                                                                      
  sc = rtems_task_create (name,                                       
    bdd0:	e3510000 	cmp	r1, #0                                        
                                                                      
  return NULL;                                                        
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_create_task(                                              
    bdd4:	e59d4018 	ldr	r4, [sp, #24]                                 
  size_t stack_size = bdbuf_config.task_stack_size ?                  
    bdbuf_config.task_stack_size : RTEMS_BDBUF_TASK_STACK_SIZE_DEFAULT;
                                                                      
  priority = priority != 0 ? priority : default_priority;             
                                                                      
  sc = rtems_task_create (name,                                       
    bdd8:	03a0100f 	moveq	r1, #15                                     
    bddc:	e35c0000 	cmp	ip, #0                                        
                                                                      
  return NULL;                                                        
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_create_task(                                              
    bde0:	e1a06002 	mov	r6, r2                                        
    bde4:	e1a05003 	mov	r5, r3                                        
  size_t stack_size = bdbuf_config.task_stack_size ?                  
    bdbuf_config.task_stack_size : RTEMS_BDBUF_TASK_STACK_SIZE_DEFAULT;
                                                                      
  priority = priority != 0 ? priority : default_priority;             
                                                                      
  sc = rtems_task_create (name,                                       
    bde8:	11a0200c 	movne	r2, ip                                      
    bdec:	03a02a01 	moveq	r2, #4096	; 0x1000                          
    bdf0:	e3a0c000 	mov	ip, #0                                        
    bdf4:	e3a03b01 	mov	r3, #1024	; 0x400                             
    bdf8:	e58dc000 	str	ip, [sp]                                      
    bdfc:	e58d4004 	str	r4, [sp, #4]                                  
    be00:	ebffefbe 	bl	7d00 <rtems_task_create>                       
                          stack_size,                                 
                          RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
                          RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,      
                          id);                                        
                                                                      
  if (sc == RTEMS_SUCCESSFUL)                                         
    be04:	e3500000 	cmp	r0, #0                                        
    be08:	0a000001 	beq	be14 <rtems_bdbuf_create_task.constprop.10+0x54>
    sc = rtems_task_start (*id, entry, arg);                          
                                                                      
  return sc;                                                          
}                                                                     
    be0c:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
    be10:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                          RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
                          RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,      
                          id);                                        
                                                                      
  if (sc == RTEMS_SUCCESSFUL)                                         
    sc = rtems_task_start (*id, entry, arg);                          
    be14:	e5940000 	ldr	r0, [r4]                                      
    be18:	e1a01006 	mov	r1, r6                                        
    be1c:	e1a02005 	mov	r2, r5                                        
                                                                      
  return sc;                                                          
}                                                                     
    be20:	e28dd008 	add	sp, sp, #8                                    
    be24:	e8bd4070 	pop	{r4, r5, r6, lr}                              
                          RTEMS_PREEMPT | RTEMS_NO_TIMESLICE | RTEMS_NO_ASR,
                          RTEMS_LOCAL | RTEMS_NO_FLOATING_POINT,      
                          id);                                        
                                                                      
  if (sc == RTEMS_SUCCESSFUL)                                         
    sc = rtems_task_start (*id, entry, arg);                          
    be28:	eafff04b 	b	7f5c <rtems_task_start>                         
                                                                      

0000bab4 <rtems_bdbuf_disable_preemption>: --bd->group->users; } static rtems_mode rtems_bdbuf_disable_preemption (void) {
    bab4:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
    bab8:	e24dd004 	sub	sp, sp, #4                                    
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_mode prev_mode = 0;                                           
    babc:	e28d2004 	add	r2, sp, #4                                    
    bac0:	e3a03000 	mov	r3, #0                                        
                                                                      
  sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
    bac4:	e3a00c01 	mov	r0, #256	; 0x100                              
                                                                      
static rtems_mode                                                     
rtems_bdbuf_disable_preemption (void)                                 
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_mode prev_mode = 0;                                           
    bac8:	e5223004 	str	r3, [r2, #-4]!                                
                                                                      
  sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
    bacc:	e1a01000 	mov	r1, r0                                        
    bad0:	e1a0200d 	mov	r2, sp                                        
    bad4:	eb000fba 	bl	f9c4 <rtems_task_mode>                         
  if (sc != RTEMS_SUCCESSFUL)                                         
    bad8:	e3500000 	cmp	r0, #0                                        
    badc:	1a000002 	bne	baec <rtems_bdbuf_disable_preemption+0x38>    
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_DIS);                
                                                                      
  return prev_mode;                                                   
}                                                                     
    bae0:	e59d0000 	ldr	r0, [sp]                                      
    bae4:	e28dd004 	add	sp, sp, #4                                    
    bae8:	e8bd8000 	pop	{pc}                                          
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_mode prev_mode = 0;                                           
                                                                      
  sc = rtems_task_mode (RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode);
  if (sc != RTEMS_SUCCESSFUL)                                         
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_DIS);                
    baec:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
    baf0:	ebffffa9 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000b99c <rtems_bdbuf_fatal>: #define RTEMS_BDBUF_AVL_MAX_HEIGHT (32) #endif static void rtems_bdbuf_fatal (rtems_fatal_code error) {
    b99c:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    b9a0:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  rtems_fatal (RTEMS_FATAL_SOURCE_BDBUF, error);                      
    b9a4:	e3a00003 	mov	r0, #3                                        <== NOT EXECUTED
    b9a8:	ebfff20b 	bl	81dc <rtems_fatal>                             <== NOT EXECUTED
                                                                      

0000ba04 <rtems_bdbuf_fatal_with_state>: } static void rtems_bdbuf_fatal_with_state (rtems_bdbuf_buf_state state, rtems_bdbuf_fatal_code error) {
    ba04:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  rtems_bdbuf_fatal ((((uint32_t) state) << 16) | error);             
    ba08:	e1810800 	orr	r0, r1, r0, lsl #16                           <== NOT EXECUTED
    ba0c:	ebffffe2 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000d6a8 <rtems_bdbuf_get>: rtems_status_code rtems_bdbuf_get (rtems_disk_device *dd, rtems_blkdev_bnum block, rtems_bdbuf_buffer **bd_ptr) {
    d6a8:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    d6ac:	e1a04000 	mov	r4, r0                                        
    d6b0:	e1a06001 	mov	r6, r1                                        
    d6b4:	e1a05002 	mov	r5, r2                                        
  rtems_status_code   sc = RTEMS_SUCCESSFUL;                          
  rtems_bdbuf_buffer *bd = NULL;                                      
  rtems_blkdev_bnum   media_block;                                    
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    d6b8:	ebfff8bb 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
    d6bc:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    d6c0:	e1560003 	cmp	r6, r3                                        
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
  }                                                                   
  else                                                                
  {                                                                   
    sc = RTEMS_INVALID_ID;                                            
    d6c4:	23a06004 	movcs	r6, #4                                      
rtems_bdbuf_get (rtems_disk_device   *dd,                             
                 rtems_blkdev_bnum    block,                          
                 rtems_bdbuf_buffer **bd_ptr)                         
{                                                                     
  rtems_status_code   sc = RTEMS_SUCCESSFUL;                          
  rtems_bdbuf_buffer *bd = NULL;                                      
    d6c8:	23a04000 	movcs	r4, #0                                      
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
    d6cc:	3a000003 	bcc	d6e0 <rtems_bdbuf_get+0x38>                   
      rtems_bdbuf_show_users ("get", bd);                             
      rtems_bdbuf_show_usage ();                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d6d0:	ebfff8ce 	bl	ba10 <rtems_bdbuf_unlock_cache>                <== NOT EXECUTED
                                                                      
  *bd_ptr = bd;                                                       
    d6d4:	e5854000 	str	r4, [r5]                                      <== NOT EXECUTED
                                                                      
  return sc;                                                          
}                                                                     
    d6d8:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    d6dc:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    d6e0:	e5941030 	ldr	r1, [r4, #48]	; 0x30                          
    d6e4:	e3510000 	cmp	r1, #0                                        
    return block << dd->block_to_media_block_shift;                   
    d6e8:	a1a01116 	lslge	r1, r6, r1                                  
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    d6ec:	ba000022 	blt	d77c <rtems_bdbuf_get+0xd4>                   
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
    d6f0:	e5943018 	ldr	r3, [r4, #24]                                 
     */                                                               
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:get: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n",  
              media_block, block, (unsigned) dd->dev);                
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
    d6f4:	e1a00004 	mov	r0, r4                                        
    d6f8:	e0811003 	add	r1, r1, r3                                    
    d6fc:	ebfffbc4 	bl	c614 <rtems_bdbuf_get_buffer_for_access>       
    d700:	e1a04000 	mov	r4, r0                                        
                                                                      
    switch (bd->state)                                                
    d704:	e5900020 	ldr	r0, [r0, #32]                                 
    d708:	e3500002 	cmp	r0, #2                                        
    d70c:	0a000013 	beq	d760 <rtems_bdbuf_get+0xb8>                   
    d710:	e3500007 	cmp	r0, #7                                        
    d714:	0a000003 	beq	d728 <rtems_bdbuf_get+0x80>                   
    d718:	e3500001 	cmp	r0, #1                                        
    d71c:	0a000008 	beq	d744 <rtems_bdbuf_get+0x9c>                   
         * record of this so just gets the block to fill.             
         */                                                           
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_2);
    d720:	e3a0100f 	mov	r1, #15                                       <== NOT EXECUTED
    d724:	ebfff8b6 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    d728:	e3a03004 	mov	r3, #4                                        
    d72c:	e5843020 	str	r3, [r4, #32]                                 
    d730:	e3a06000 	mov	r6, #0                                        
      rtems_bdbuf_show_users ("get", bd);                             
      rtems_bdbuf_show_usage ();                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d734:	ebfff8b5 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  *bd_ptr = bd;                                                       
    d738:	e5854000 	str	r4, [r5]                                      
                                                                      
  return sc;                                                          
}                                                                     
    d73c:	e1a00006 	mov	r0, r6                                        
    d740:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    d744:	e3a03005 	mov	r3, #5                                        
    d748:	e5843020 	str	r3, [r4, #32]                                 
    d74c:	e3a06000 	mov	r6, #0                                        
      rtems_bdbuf_show_users ("get", bd);                             
      rtems_bdbuf_show_usage ();                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d750:	ebfff8ae 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  *bd_ptr = bd;                                                       
    d754:	e5854000 	str	r4, [r5]                                      
                                                                      
  return sc;                                                          
}                                                                     
    d758:	e1a00006 	mov	r0, r6                                        
    d75c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    d760:	e3a03003 	mov	r3, #3                                        
    d764:	e5843020 	str	r3, [r4, #32]                                 
    d768:	e3a06000 	mov	r6, #0                                        
      rtems_bdbuf_show_users ("get", bd);                             
      rtems_bdbuf_show_usage ();                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d76c:	ebfff8a7 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  *bd_ptr = bd;                                                       
    d770:	e5854000 	str	r4, [r5]                                      
                                                                      
  return sc;                                                          
}                                                                     
    d774:	e1a00006 	mov	r0, r6                                        
    d778:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
    d77c:	e5940024 	ldr	r0, [r4, #36]	; 0x24                          <== NOT EXECUTED
    d780:	e0887096 	umull	r7, r8, r6, r0                              <== NOT EXECUTED
    d784:	e5942020 	ldr	r2, [r4, #32]                                 <== NOT EXECUTED
    d788:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    d78c:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
    d790:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    d794:	eb003a56 	bl	1c0f4 <__udivdi3>                              <== NOT EXECUTED
    d798:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    d79c:	eaffffd3 	b	d6f0 <rtems_bdbuf_get+0x48>                     <== NOT EXECUTED
                                                                      

0000c614 <rtems_bdbuf_get_buffer_for_access>: } static rtems_bdbuf_buffer * rtems_bdbuf_get_buffer_for_access (rtems_disk_device *dd, rtems_blkdev_bnum block) {
    c614:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    c618:	e59f7228 	ldr	r7, [pc, #552]	; c848 <rtems_bdbuf_get_buffer_for_access+0x234>
    c61c:	e1a05000 	mov	r5, r0                                        
    c620:	e1a06001 	mov	r6, r1                                        
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
    c624:	e287805c 	add	r8, r7, #92	; 0x5c                            
  rtems_bdbuf_buffer *bd = NULL;                                      
                                                                      
  do                                                                  
  {                                                                   
    bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);       
    c628:	e597403c 	ldr	r4, [r7, #60]	; 0x3c                          
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c62c:	e3540000 	cmp	r4, #0                                        
    c630:	0a000009 	beq	c65c <rtems_bdbuf_get_buffer_for_access+0x48> 
    c634:	e5943014 	ldr	r3, [r4, #20]                                 
    c638:	e1550003 	cmp	r5, r3                                        
    c63c:	0a00001f 	beq	c6c0 <rtems_bdbuf_get_buffer_for_access+0xac> 
  {                                                                   
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    c640:	e1530005 	cmp	r3, r5                                        
    c644:	3a00001b 	bcc	c6b8 <rtems_bdbuf_get_buffer_for_access+0xa4> 
        || ((p->dd == dd) && (p->block < block)))                     
    c648:	e1550003 	cmp	r5, r3                                        
    c64c:	0a000016 	beq	c6ac <rtems_bdbuf_get_buffer_for_access+0x98> 
    {                                                                 
      p = p->avl.right;                                               
    }                                                                 
    else                                                              
    {                                                                 
      p = p->avl.left;                                                
    c650:	e5944008 	ldr	r4, [r4, #8]                                  
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c654:	e3540000 	cmp	r4, #0                                        
    c658:	1afffff5 	bne	c634 <rtems_bdbuf_get_buffer_for_access+0x20> 
        bd = NULL;                                                    
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);          
    c65c:	e1a00005 	mov	r0, r5                                        
    c660:	e1a01006 	mov	r1, r6                                        
    c664:	ebfffed8 	bl	c1cc <rtems_bdbuf_get_buffer_from_lru_list>    
                                                                      
      if (bd == NULL)                                                 
    c668:	e2504000 	subs	r4, r0, #0                                   
    c66c:	0a000050 	beq	c7b4 <rtems_bdbuf_get_buffer_for_access+0x1a0>
static void                                                           
rtems_bdbuf_wait_for_access (rtems_bdbuf_buffer *bd)                  
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
    c670:	e5940020 	ldr	r0, [r4, #32]                                 
    c674:	e2403001 	sub	r3, r0, #1                                    
    c678:	e3530009 	cmp	r3, #9                                        
    c67c:	979ff103 	ldrls	pc, [pc, r3, lsl #2]                        
    c680:	ea00006e 	b	c840 <rtems_bdbuf_get_buffer_for_access+0x22c>  <== NOT EXECUTED
    c684:	0000c828 	.word	0x0000c828                                  <== NOT EXECUTED
    c688:	0000c820 	.word	0x0000c820                                  <== NOT EXECUTED
    c68c:	0000c810 	.word	0x0000c810                                  <== NOT EXECUTED
    c690:	0000c810 	.word	0x0000c810                                  <== NOT EXECUTED
    c694:	0000c810 	.word	0x0000c810                                  <== NOT EXECUTED
    c698:	0000c810 	.word	0x0000c810                                  <== NOT EXECUTED
    c69c:	0000c7e0 	.word	0x0000c7e0                                  <== NOT EXECUTED
    c6a0:	0000c7d0 	.word	0x0000c7d0                                  <== NOT EXECUTED
    c6a4:	0000c7d0 	.word	0x0000c7d0                                  <== NOT EXECUTED
    c6a8:	0000c7d0 	.word	0x0000c7d0                                  <== NOT EXECUTED
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
  {                                                                   
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    c6ac:	e5943018 	ldr	r3, [r4, #24]                                 
    c6b0:	e1560003 	cmp	r6, r3                                        
    c6b4:	9affffe5 	bls	c650 <rtems_bdbuf_get_buffer_for_access+0x3c> 
    {                                                                 
      p = p->avl.right;                                               
    c6b8:	e594400c 	ldr	r4, [r4, #12]                                 
    c6bc:	eaffffe4 	b	c654 <rtems_bdbuf_get_buffer_for_access+0x40>   
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c6c0:	e5942018 	ldr	r2, [r4, #24]                                 
    c6c4:	e1560002 	cmp	r6, r2                                        
    c6c8:	1affffdc 	bne	c640 <rtems_bdbuf_get_buffer_for_access+0x2c> 
  {                                                                   
    bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);       
                                                                      
    if (bd != NULL)                                                   
    {                                                                 
      if (bd->group->bds_per_group != dd->bds_per_group)              
    c6cc:	e5942028 	ldr	r2, [r4, #40]	; 0x28                          
    c6d0:	e5953034 	ldr	r3, [r5, #52]	; 0x34                          
    c6d4:	e5922008 	ldr	r2, [r2, #8]                                  
    c6d8:	e1520003 	cmp	r2, r3                                        
    c6dc:	0affffe3 	beq	c670 <rtems_bdbuf_get_buffer_for_access+0x5c> 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    c6e0:	e3a0a008 	mov	sl, #8                                        
static bool                                                           
rtems_bdbuf_wait_for_recycle (rtems_bdbuf_buffer *bd)                 
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
    c6e4:	e5940020 	ldr	r0, [r4, #32]                                 
    c6e8:	e350000a 	cmp	r0, #10                                       
    c6ec:	979ff100 	ldrls	pc, [pc, r0, lsl #2]                        
    c6f0:	ea00002d 	b	c7ac <rtems_bdbuf_get_buffer_for_access+0x198>  <== NOT EXECUTED
    c6f4:	0000c778 	.word	0x0000c778                                  <== NOT EXECUTED
    c6f8:	0000c76c 	.word	0x0000c76c                                  <== NOT EXECUTED
    c6fc:	0000c76c 	.word	0x0000c76c                                  <== NOT EXECUTED
    c700:	0000c75c 	.word	0x0000c75c                                  <== NOT EXECUTED
    c704:	0000c75c 	.word	0x0000c75c                                  <== NOT EXECUTED
    c708:	0000c75c 	.word	0x0000c75c                                  <== NOT EXECUTED
    c70c:	0000c75c 	.word	0x0000c75c                                  <== NOT EXECUTED
    c710:	0000c730 	.word	0x0000c730                                  <== NOT EXECUTED
    c714:	0000c720 	.word	0x0000c720                                  <== NOT EXECUTED
    c718:	0000c720 	.word	0x0000c720                                  <== NOT EXECUTED
    c71c:	0000c720 	.word	0x0000c720                                  <== NOT EXECUTED
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
    c720:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    c724:	e59f1120 	ldr	r1, [pc, #288]	; c84c <rtems_bdbuf_get_buffer_for_access+0x238><== NOT EXECUTED
    c728:	ebfffd1a 	bl	bb98 <rtems_bdbuf_wait>                        <== NOT EXECUTED
    c72c:	eaffffec 	b	c6e4 <rtems_bdbuf_get_buffer_for_access+0xd0>   <== NOT EXECUTED
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    c730:	e8940006 	ldm	r4, {r1, r2}                                  <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    c734:	e584a020 	str	sl, [r4, #32]                                 <== NOT EXECUTED
  next->previous = previous;                                          
    c738:	e5812004 	str	r2, [r1, #4]                                  <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    c73c:	e5973060 	ldr	r3, [r7, #96]	; 0x60                          <== NOT EXECUTED
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
    c740:	e5821000 	str	r1, [r2]                                      <== NOT EXECUTED
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
    c744:	e5874060 	str	r4, [r7, #96]	; 0x60                          <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
    c748:	e5848000 	str	r8, [r4]                                      <== NOT EXECUTED
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
    c74c:	e5843004 	str	r3, [r4, #4]                                  <== NOT EXECUTED
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
    c750:	e5834000 	str	r4, [r3]                                      <== NOT EXECUTED
rtems_bdbuf_request_sync_for_modified_buffer (rtems_bdbuf_buffer *bd) 
{                                                                     
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
  rtems_chain_extract_unprotected (&bd->link);                        
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
  rtems_bdbuf_wake_swapper ();                                        
    c754:	ebfffcbf 	bl	ba58 <rtems_bdbuf_wake_swapper>                <== NOT EXECUTED
    c758:	eaffffe1 	b	c6e4 <rtems_bdbuf_get_buffer_for_access+0xd0>   <== NOT EXECUTED
        }                                                             
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
    c75c:	e1a00004 	mov	r0, r4                                        
    c760:	e59f10e8 	ldr	r1, [pc, #232]	; c850 <rtems_bdbuf_get_buffer_for_access+0x23c>
    c764:	ebfffd0b 	bl	bb98 <rtems_bdbuf_wait>                        
    c768:	eaffffdd 	b	c6e4 <rtems_bdbuf_get_buffer_for_access+0xd0>   
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        rtems_bdbuf_request_sync_for_modified_buffer (bd);            
        break;                                                        
      case RTEMS_BDBUF_STATE_CACHED:                                  
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        if (bd->waiters == 0)                                         
    c76c:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
    c770:	e3530000 	cmp	r3, #0                                        
    c774:	1a000012 	bne	c7c4 <rtems_bdbuf_get_buffer_for_access+0x1b0>
    {                                                                 
      if (bd->group->bds_per_group != dd->bds_per_group)              
      {                                                               
        if (rtems_bdbuf_wait_for_recycle (bd))                        
        {                                                             
          rtems_bdbuf_remove_from_tree_and_lru_list (bd);             
    c778:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    c77c:	ebfffe84 	bl	c194 <rtems_bdbuf_remove_from_tree_and_lru_list><== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    c780:	e5973040 	ldr	r3, [r7, #64]	; 0x40                          <== NOT EXECUTED
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    c784:	e59f00c8 	ldr	r0, [pc, #200]	; c854 <rtems_bdbuf_get_buffer_for_access+0x240><== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    c788:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
    c78c:	e5842020 	str	r2, [r4, #32]                                 <== NOT EXECUTED
    c790:	e5840004 	str	r0, [r4, #4]                                  <== NOT EXECUTED
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    c794:	e5874040 	str	r4, [r7, #64]	; 0x40                          <== NOT EXECUTED
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    c798:	e5834004 	str	r4, [r3, #4]                                  <== NOT EXECUTED
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
    c79c:	e5843000 	str	r3, [r4]                                      <== NOT EXECUTED
      {                                                               
        if (rtems_bdbuf_wait_for_recycle (bd))                        
        {                                                             
          rtems_bdbuf_remove_from_tree_and_lru_list (bd);             
          rtems_bdbuf_make_free_and_add_to_lru_list (bd);             
          rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);             
    c7a0:	e2800034 	add	r0, r0, #52	; 0x34                            <== NOT EXECUTED
    c7a4:	ebfffd4a 	bl	bcd4 <rtems_bdbuf_wake>                        <== NOT EXECUTED
    c7a8:	eaffff9e 	b	c628 <rtems_bdbuf_get_buffer_for_access+0x14>   <== NOT EXECUTED
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_8);
    c7ac:	e3a01014 	mov	r1, #20                                       <== NOT EXECUTED
    c7b0:	ebfffc93 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wait_for_buffer (void)                                    
{                                                                     
  if (!rtems_chain_is_empty (&bdbuf_cache.modified))                  
    c7b4:	e597204c 	ldr	r2, [r7, #76]	; 0x4c                          
    c7b8:	e59f3098 	ldr	r3, [pc, #152]	; c858 <rtems_bdbuf_get_buffer_for_access+0x244>
    c7bc:	e1520003 	cmp	r2, r3                                        
    rtems_bdbuf_wake_swapper ();                                      
    c7c0:	1bfffca4 	blne	ba58 <rtems_bdbuf_wake_swapper>              
                                                                      
  rtems_bdbuf_anonymous_wait (&bdbuf_cache.buffer_waiters);           
    c7c4:	e59f0090 	ldr	r0, [pc, #144]	; c85c <rtems_bdbuf_get_buffer_for_access+0x248>
    c7c8:	ebfffcd7 	bl	bb2c <rtems_bdbuf_anonymous_wait>              
    c7cc:	eaffff95 	b	c628 <rtems_bdbuf_get_buffer_for_access+0x14>   
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
        break;                                                        
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
    c7d0:	e1a00004 	mov	r0, r4                                        
    c7d4:	e59f1070 	ldr	r1, [pc, #112]	; c84c <rtems_bdbuf_get_buffer_for_access+0x238>
    c7d8:	ebfffcee 	bl	bb98 <rtems_bdbuf_wait>                        
    c7dc:	eaffffa3 	b	c670 <rtems_bdbuf_get_buffer_for_access+0x5c>   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
    c7e0:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    c7e4:	e593200c 	ldr	r2, [r3, #12]                                 
    c7e8:	e2422001 	sub	r2, r2, #1                                    
    c7ec:	e583200c 	str	r2, [r3, #12]                                 
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    c7f0:	e8940006 	ldm	r4, {r1, r2}                                  
  next->previous = previous;                                          
    c7f4:	e5812004 	str	r2, [r1, #4]                                  
  previous->next = next;                                              
    c7f8:	e5821000 	str	r1, [r2]                                      
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
    c7fc:	e593200c 	ldr	r2, [r3, #12]                                 
    c800:	e2822001 	add	r2, r2, #1                                    
    c804:	e583200c 	str	r2, [r3, #12]                                 
                                                                      
  rtems_bdbuf_wait_for_access (bd);                                   
  rtems_bdbuf_group_obtain (bd);                                      
                                                                      
  return bd;                                                          
}                                                                     
    c808:	e1a00004 	mov	r0, r4                                        
    c80c:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
        return;                                                       
      case RTEMS_BDBUF_STATE_ACCESS_CACHED:                           
      case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                            
      case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                         
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        rtems_bdbuf_wait (bd, &bdbuf_cache.access_waiters);           
    c810:	e1a00004 	mov	r0, r4                                        
    c814:	e59f1034 	ldr	r1, [pc, #52]	; c850 <rtems_bdbuf_get_buffer_for_access+0x23c>
    c818:	ebfffcde 	bl	bb98 <rtems_bdbuf_wait>                        
    c81c:	eaffff93 	b	c670 <rtems_bdbuf_get_buffer_for_access+0x5c>   
    c820:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    c824:	eafffff1 	b	c7f0 <rtems_bdbuf_get_buffer_for_access+0x1dc>  
    c828:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
    c82c:	e593200c 	ldr	r2, [r3, #12]                                 
    c830:	e2822001 	add	r2, r2, #1                                    
    c834:	e583200c 	str	r2, [r3, #12]                                 
                                                                      
  rtems_bdbuf_wait_for_access (bd);                                   
  rtems_bdbuf_group_obtain (bd);                                      
                                                                      
  return bd;                                                          
}                                                                     
    c838:	e1a00004 	mov	r0, r4                                        
    c83c:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_7);
    c840:	e3a01013 	mov	r1, #19                                       <== NOT EXECUTED
    c844:	ebfffc6e 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
                                                                      

0000c590 <rtems_bdbuf_get_buffer_for_read_ahead>: rtems_bdbuf_get_buffer_for_read_ahead (rtems_disk_device *dd, rtems_blkdev_bnum block) { rtems_bdbuf_buffer *bd = NULL; bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);
    c590:	e59f3078 	ldr	r3, [pc, #120]	; c610 <rtems_bdbuf_get_buffer_for_read_ahead+0x80>
    c594:	e593303c 	ldr	r3, [r3, #60]	; 0x3c                          
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c598:	e3530000 	cmp	r3, #0                                        
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_for_read_ahead (rtems_disk_device *dd,         
                                       rtems_blkdev_bnum  block)      
{                                                                     
    c59c:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c5a0:	0a000009 	beq	c5cc <rtems_bdbuf_get_buffer_for_read_ahead+0x3c>
    c5a4:	e5932014 	ldr	r2, [r3, #20]                                 
    c5a8:	e1500002 	cmp	r0, r2                                        
    c5ac:	0a000012 	beq	c5fc <rtems_bdbuf_get_buffer_for_read_ahead+0x6c>
  {                                                                   
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    c5b0:	e1520000 	cmp	r2, r0                                        
    c5b4:	3a00000e 	bcc	c5f4 <rtems_bdbuf_get_buffer_for_read_ahead+0x64>
        || ((p->dd == dd) && (p->block < block)))                     
    c5b8:	e1500002 	cmp	r0, r2                                        
    c5bc:	0a000009 	beq	c5e8 <rtems_bdbuf_get_buffer_for_read_ahead+0x58>
    {                                                                 
      p = p->avl.right;                                               
    }                                                                 
    else                                                              
    {                                                                 
      p = p->avl.left;                                                
    c5c0:	e5933008 	ldr	r3, [r3, #8]                                  <== NOT EXECUTED
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c5c4:	e3530000 	cmp	r3, #0                                        
    c5c8:	1afffff5 	bne	c5a4 <rtems_bdbuf_get_buffer_for_read_ahead+0x14>
                                                                      
  bd = rtems_bdbuf_avl_search (&bdbuf_cache.tree, dd, block);         
                                                                      
  if (bd == NULL)                                                     
  {                                                                   
    bd = rtems_bdbuf_get_buffer_from_lru_list (dd, block);            
    c5cc:	ebfffefe 	bl	c1cc <rtems_bdbuf_get_buffer_from_lru_list>    
                                                                      
    if (bd != NULL)                                                   
    c5d0:	e3500000 	cmp	r0, #0                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
    c5d4:	15903028 	ldrne	r3, [r0, #40]	; 0x28                        
    c5d8:	1593200c 	ldrne	r2, [r3, #12]                               
    c5dc:	12822001 	addne	r2, r2, #1                                  
    c5e0:	1583200c 	strne	r2, [r3, #12]                               
     * thus no need for a read ahead.                                 
     */                                                               
    bd = NULL;                                                        
                                                                      
  return bd;                                                          
}                                                                     
    c5e4:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
  {                                                                   
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    c5e8:	e5932018 	ldr	r2, [r3, #24]                                 
    c5ec:	e1510002 	cmp	r1, r2                                        
    c5f0:	9afffff2 	bls	c5c0 <rtems_bdbuf_get_buffer_for_read_ahead+0x30>
    {                                                                 
      p = p->avl.right;                                               
    c5f4:	e593300c 	ldr	r3, [r3, #12]                                 
    c5f8:	eafffff1 	b	c5c4 <rtems_bdbuf_get_buffer_for_read_ahead+0x34>
                        const rtems_disk_device *dd,                  
                        rtems_blkdev_bnum    block)                   
{                                                                     
  rtems_bdbuf_buffer* p = *root;                                      
                                                                      
  while ((p != NULL) && ((p->dd != dd) || (p->block != block)))       
    c5fc:	e593c018 	ldr	ip, [r3, #24]                                 
    c600:	e151000c 	cmp	r1, ip                                        
    c604:	1affffe9 	bne	c5b0 <rtems_bdbuf_get_buffer_for_read_ahead+0x20>
  else                                                                
    /*                                                                
     * The buffer is in the cache.  So it is already available or in use, and
     * thus no need for a read ahead.                                 
     */                                                               
    bd = NULL;                                                        
    c608:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    c60c:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

0000c1cc <rtems_bdbuf_get_buffer_from_lru_list>: } static rtems_bdbuf_buffer * rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd, rtems_blkdev_bnum block) {
    c1cc:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
    c1d0:	e59f53ac 	ldr	r5, [pc, #940]	; c584 <rtems_bdbuf_get_buffer_from_lru_list+0x3b8>
    c1d4:	e5956040 	ldr	r6, [r5, #64]	; 0x40                          
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
    c1d8:	e2852044 	add	r2, r5, #68	; 0x44                            
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
    c1dc:	e24dd08c 	sub	sp, sp, #140	; 0x8c                           
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
    c1e0:	e1560002 	cmp	r6, r2                                        
}                                                                     
                                                                      
static rtems_bdbuf_buffer *                                           
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
    c1e4:	e1a0b000 	mov	fp, r0                                        
    c1e8:	e58d1008 	str	r1, [sp, #8]                                  
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
    c1ec:	0a00003e 	beq	c2ec <rtems_bdbuf_get_buffer_from_lru_list+0x120>
    c1f0:	e2859040 	add	r9, r5, #64	; 0x40                            
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    c1f4:	e3a0a000 	mov	sl, #0                                        
              bd->group->bds_per_group, dd->bds_per_group);           
                                                                      
    /*                                                                
     * If nobody waits for this BD, we may recycle it.                
     */                                                               
    if (bd->waiters == 0)                                             
    c1f8:	e5963024 	ldr	r3, [r6, #36]	; 0x24                          
    c1fc:	e3530000 	cmp	r3, #0                                        
    c200:	1a000035 	bne	c2dc <rtems_bdbuf_get_buffer_from_lru_list+0x110>
    {                                                                 
      if (bd->group->bds_per_group == dd->bds_per_group)              
    c204:	e5967028 	ldr	r7, [r6, #40]	; 0x28                          
    c208:	e59b8034 	ldr	r8, [fp, #52]	; 0x34                          
    c20c:	e5971008 	ldr	r1, [r7, #8]                                  
    c210:	e1510008 	cmp	r1, r8                                        
    c214:	0a000038 	beq	c2fc <rtems_bdbuf_get_buffer_from_lru_list+0x130>
      {                                                               
        rtems_bdbuf_remove_from_tree_and_lru_list (bd);               
                                                                      
        empty_bd = bd;                                                
      }                                                               
      else if (bd->group->users == 0)                                 
    c218:	e597300c 	ldr	r3, [r7, #12]                                 
    c21c:	e3530000 	cmp	r3, #0                                        
    c220:	1a00002d 	bne	c2dc <rtems_bdbuf_get_buffer_from_lru_list+0x110>
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
    c224:	e3510000 	cmp	r1, #0                                        
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:realloc: %tu: %zd -> %zd\n",                       
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
    c228:	e5950020 	ldr	r0, [r5, #32]                                 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
    c22c:	e5974010 	ldr	r4, [r7, #16]                                 
    c230:	0a000011 	beq	c27c <rtems_bdbuf_get_buffer_from_lru_list+0xb0>
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:realloc: %tu: %zd -> %zd\n",                       
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
    c234:	e58d3000 	str	r3, [sp]                                      
    c238:	eb003a71 	bl	1ac04 <__aeabi_uidiv>                          
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
    c23c:	e0600180 	rsb	r0, r0, r0, lsl #3                            
    c240:	e1a00180 	lsl	r0, r0, #3                                    
    c244:	e58d0004 	str	r0, [sp, #4]                                  
    c248:	e59d3000 	ldr	r3, [sp]                                      
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
    c24c:	e1a00004 	mov	r0, r4                                        
    c250:	e58d3000 	str	r3, [sp]                                      
    c254:	ebffffce 	bl	c194 <rtems_bdbuf_remove_from_tree_and_lru_list>
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    c258:	e59d3000 	ldr	r3, [sp]                                      
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
    c25c:	e5972008 	ldr	r2, [r7, #8]                                  
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    c260:	e2833001 	add	r3, r3, #1                                    
    c264:	e59d1004 	ldr	r1, [sp, #4]                                  
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
    c268:	e1530002 	cmp	r3, r2                                        
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    c26c:	e0844001 	add	r4, r4, r1                                    
            group - bdbuf_cache.groups, group->bds_per_group,         
            new_bds_per_group);                                       
                                                                      
  bufs_per_bd = bdbuf_cache.max_bds_per_group / group->bds_per_group; 
                                                                      
  for (b = 0, bd = group->bdbuf;                                      
    c270:	3afffff5 	bcc	c24c <rtems_bdbuf_get_buffer_from_lru_list+0x80>
    c274:	e5950020 	ldr	r0, [r5, #32]                                 
    c278:	e5974010 	ldr	r4, [r7, #16]                                 
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
    c27c:	e3580001 	cmp	r8, #1                                        
  for (b = 0, bd = group->bdbuf;                                      
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
    c280:	e5878008 	str	r8, [r7, #8]                                  
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
    c284:	9a000012 	bls	c2d4 <rtems_bdbuf_get_buffer_from_lru_list+0x108>
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
    c288:	e1a01008 	mov	r1, r8                                        
    c28c:	eb003a5c 	bl	1ac04 <__aeabi_uidiv>                          
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
    c290:	e0600180 	rsb	r0, r0, r0, lsl #3                            
    c294:	e1a01180 	lsl	r1, r0, #3                                    
    c298:	e0844001 	add	r4, r4, r1                                    
    c29c:	e3a03001 	mov	r3, #1                                        
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    c2a0:	e5952040 	ldr	r2, [r5, #64]	; 0x40                          
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    c2a4:	e2833001 	add	r3, r3, #1                                    
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
    c2a8:	e1530008 	cmp	r3, r8                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    c2ac:	e584a020 	str	sl, [r4, #32]                                 
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    c2b0:	e5849004 	str	r9, [r4, #4]                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    c2b4:	e5854040 	str	r4, [r5, #64]	; 0x40                          
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    c2b8:	e5824004 	str	r4, [r2, #4]                                  
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
    c2bc:	e5842000 	str	r2, [r4]                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    c2c0:	e0844001 	add	r4, r4, r1                                    
    rtems_bdbuf_remove_from_tree_and_lru_list (bd);                   
                                                                      
  group->bds_per_group = new_bds_per_group;                           
  bufs_per_bd = bdbuf_cache.max_bds_per_group / new_bds_per_group;    
                                                                      
  for (b = 1, bd = group->bdbuf + bufs_per_bd;                        
    c2c4:	1afffff5 	bne	c2a0 <rtems_bdbuf_get_buffer_from_lru_list+0xd4>
       b < group->bds_per_group;                                      
       b++, bd += bufs_per_bd)                                        
    rtems_bdbuf_make_free_and_add_to_lru_list (bd);                   
                                                                      
  if (b > 1)                                                          
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
    c2c8:	e59f02b8 	ldr	r0, [pc, #696]	; c588 <rtems_bdbuf_get_buffer_from_lru_list+0x3bc>
    c2cc:	ebfffe80 	bl	bcd4 <rtems_bdbuf_wake>                        
    c2d0:	e5974010 	ldr	r4, [r7, #16]                                 
      }                                                               
      else if (bd->group->users == 0)                                 
        empty_bd = rtems_bdbuf_group_realloc (bd->group, dd->bds_per_group);
    }                                                                 
                                                                      
    if (empty_bd != NULL)                                             
    c2d4:	e3540000 	cmp	r4, #0                                        
    c2d8:	1a00000c 	bne	c310 <rtems_bdbuf_get_buffer_from_lru_list+0x144>
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next(                         
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  return the_node->next;                                              
    c2dc:	e5966000 	ldr	r6, [r6]                                      
rtems_bdbuf_get_buffer_from_lru_list (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
  rtems_chain_node *node = rtems_chain_first (&bdbuf_cache.lru);      
                                                                      
  while (!rtems_chain_is_tail (&bdbuf_cache.lru, node))               
    c2e0:	e59f12a4 	ldr	r1, [pc, #676]	; c58c <rtems_bdbuf_get_buffer_from_lru_list+0x3c0>
    c2e4:	e1560001 	cmp	r6, r1                                        
    c2e8:	1affffc2 	bne	c1f8 <rtems_bdbuf_get_buffer_from_lru_list+0x2c>
    }                                                                 
                                                                      
    node = rtems_chain_next (node);                                   
  }                                                                   
                                                                      
  return NULL;                                                        
    c2ec:	e3a04000 	mov	r4, #0                                        
}                                                                     
    c2f0:	e1a00004 	mov	r0, r4                                        
    c2f4:	e28dd08c 	add	sp, sp, #140	; 0x8c                           
    c2f8:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     */                                                               
    if (bd->waiters == 0)                                             
    {                                                                 
      if (bd->group->bds_per_group == dd->bds_per_group)              
      {                                                               
        rtems_bdbuf_remove_from_tree_and_lru_list (bd);               
    c2fc:	e1a00006 	mov	r0, r6                                        
    c300:	e1a04006 	mov	r4, r6                                        
    c304:	ebffffa2 	bl	c194 <rtems_bdbuf_remove_from_tree_and_lru_list>
      }                                                               
      else if (bd->group->users == 0)                                 
        empty_bd = rtems_bdbuf_group_realloc (bd->group, dd->bds_per_group);
    }                                                                 
                                                                      
    if (empty_bd != NULL)                                             
    c308:	e3540000 	cmp	r4, #0                                        
    c30c:	0afffff2 	beq	c2dc <rtems_bdbuf_get_buffer_from_lru_list+0x110>
                                rtems_disk_device  *dd,               
                                rtems_blkdev_bnum   block)            
{                                                                     
  bd->dd        = dd ;                                                
  bd->block     = block;                                              
  bd->avl.left  = NULL;                                               
    c310:	e3a02000 	mov	r2, #0                                        
static void                                                           
rtems_bdbuf_setup_empty_buffer (rtems_bdbuf_buffer *bd,               
                                rtems_disk_device  *dd,               
                                rtems_blkdev_bnum   block)            
{                                                                     
  bd->dd        = dd ;                                                
    c314:	e584b014 	str	fp, [r4, #20]                                 
  bd->block     = block;                                              
  bd->avl.left  = NULL;                                               
    c318:	e5842008 	str	r2, [r4, #8]                                  
  bd->avl.right = NULL;                                               
    c31c:	e584200c 	str	r2, [r4, #12]                                 
                       rtems_bdbuf_buffer*  node)                     
{                                                                     
  const rtems_disk_device *dd = node->dd;                             
  rtems_blkdev_bnum block = node->block;                              
                                                                      
  rtems_bdbuf_buffer*  p = *root;                                     
    c320:	e595303c 	ldr	r3, [r5, #60]	; 0x3c                          
rtems_bdbuf_setup_empty_buffer (rtems_bdbuf_buffer *bd,               
                                rtems_disk_device  *dd,               
                                rtems_blkdev_bnum   block)            
{                                                                     
  bd->dd        = dd ;                                                
  bd->block     = block;                                              
    c324:	e59d8008 	ldr	r8, [sp, #8]                                  
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
    c328:	e1530002 	cmp	r3, r2                                        
rtems_bdbuf_setup_empty_buffer (rtems_bdbuf_buffer *bd,               
                                rtems_disk_device  *dd,               
                                rtems_blkdev_bnum   block)            
{                                                                     
  bd->dd        = dd ;                                                
  bd->block     = block;                                              
    c32c:	e5848018 	str	r8, [r4, #24]                                 
  bd->avl.left  = NULL;                                               
  bd->avl.right = NULL;                                               
  bd->waiters   = 0;                                                  
    c330:	e5842024 	str	r2, [r4, #36]	; 0x24                          
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
    c334:	0a00008c 	beq	c56c <rtems_bdbuf_get_buffer_from_lru_list+0x3a0>
  rtems_bdbuf_buffer*  p = *root;                                     
  rtems_bdbuf_buffer*  q;                                             
  rtems_bdbuf_buffer*  p1;                                            
  rtems_bdbuf_buffer*  p2;                                            
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
    c338:	e28dc00c 	add	ip, sp, #12                                   
    c33c:	e1a0000c 	mov	r0, ip                                        
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
    c340:	e3a06001 	mov	r6, #1                                        
        break;                                                        
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
    c344:	e3e07000 	mvn	r7, #0                                        
    c348:	ea000005 	b	c364 <rtems_bdbuf_get_buffer_from_lru_list+0x198>
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
      q = p->avl.right;                                               
    c34c:	e593100c 	ldr	r1, [r3, #12]                                 
      if (q == NULL)                                                  
    c350:	e3510000 	cmp	r1, #0                                        
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
    c354:	e5c36010 	strb	r6, [r3, #16]                                
      q = p->avl.right;                                               
      if (q == NULL)                                                  
    c358:	0a00007a 	beq	c548 <rtems_bdbuf_get_buffer_from_lru_list+0x37c>
      p->avl.cache = -1;                                              
      q = p->avl.left;                                                
      if (q == NULL)                                                  
      {                                                               
        q = node;                                                     
        p->avl.left = q;                                              
    c35c:	e1a00002 	mov	r0, r2                                        
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
    c360:	e1a03001 	mov	r3, r1                                        
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    c364:	e5931014 	ldr	r1, [r3, #20]                                 
    return 0;                                                         
  }                                                                   
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
    c368:	e1a02000 	mov	r2, r0                                        
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    c36c:	e151000b 	cmp	r1, fp                                        
    return 0;                                                         
  }                                                                   
                                                                      
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
    c370:	e4823004 	str	r3, [r2], #4                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    c374:	3afffff4 	bcc	c34c <rtems_bdbuf_get_buffer_from_lru_list+0x180>
        || ((p->dd == dd) && (p->block < block)))                     
    c378:	e15b0001 	cmp	fp, r1                                        
    c37c:	0a00004b 	beq	c4b0 <rtems_bdbuf_get_buffer_from_lru_list+0x2e4>
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
      q = p->avl.left;                                                
    c380:	e5931008 	ldr	r1, [r3, #8]                                  
      if (q == NULL)                                                  
    c384:	e3510000 	cmp	r1, #0                                        
        break;                                                        
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
    c388:	e5c37010 	strb	r7, [r3, #16]                                
      q = p->avl.left;                                                
      if (q == NULL)                                                  
    c38c:	1afffff2 	bne	c35c <rtems_bdbuf_get_buffer_from_lru_list+0x190>
      {                                                               
        q = node;                                                     
        p->avl.left = q;                                              
    c390:	e5834008 	str	r4, [r3, #8]                                  
    c394:	e3a020ff 	mov	r2, #255	; 0xff                               
    }                                                                 
                                                                      
    p = q;                                                            
  }                                                                   
                                                                      
  q->avl.left = q->avl.right = NULL;                                  
    c398:	e3a07000 	mov	r7, #0                                        
    c39c:	e1a02c02 	lsl	r2, r2, #24                                   
    c3a0:	e584700c 	str	r7, [r4, #12]                                 
    c3a4:	e5847008 	str	r7, [r4, #8]                                  
  q->avl.bal = 0;                                                     
    c3a8:	e5c47011 	strb	r7, [r4, #17]                                
    c3ac:	e1a02c42 	asr	r2, r2, #24                                   
          p->avl.bal = 0;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case 0:                                                       
          p->avl.bal = 1;                                             
    c3b0:	e3a08001 	mov	r8, #1                                        
    c3b4:	ea000015 	b	c410 <rtems_bdbuf_get_buffer_from_lru_list+0x244>
          break;                                                      
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      switch (p->avl.bal)                                             
    c3b8:	e1d321d1 	ldrsb	r2, [r3, #17]                               
    c3bc:	e3520000 	cmp	r2, #0                                        
          p->avl.bal = 0;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case 0:                                                       
          p->avl.bal = 1;                                             
    c3c0:	05c38011 	strbeq	r8, [r3, #17]                              
    c3c4:	01a01003 	moveq	r1, r3                                      
    c3c8:	03a06001 	moveq	r6, #1                                      
          break;                                                      
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      switch (p->avl.bal)                                             
    c3cc:	0a000005 	beq	c3e8 <rtems_bdbuf_get_buffer_from_lru_list+0x21c>
    c3d0:	e3520001 	cmp	r2, #1                                        
    c3d4:	0a000040 	beq	c4dc <rtems_bdbuf_get_buffer_from_lru_list+0x310>
    c3d8:	e3720001 	cmn	r2, #1                                        
    c3dc:	0a00003a 	beq	c4cc <rtems_bdbuf_get_buffer_from_lru_list+0x300>
    c3e0:	e1a01003 	mov	r1, r3                                        <== NOT EXECUTED
    c3e4:	e3a06001 	mov	r6, #1                                        <== NOT EXECUTED
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
    q = p;                                                            
    if (buf_prev > buf_stack)                                         
    c3e8:	e150000c 	cmp	r0, ip                                        
    c3ec:	9a00002b 	bls	c4a0 <rtems_bdbuf_get_buffer_from_lru_list+0x2d4>
    {                                                                 
      p = *--buf_prev;                                                
    c3f0:	e5103004 	ldr	r3, [r0, #-4]                                 
                                                                      
      if (p->avl.cache == -1)                                         
    c3f4:	e1d321d0 	ldrsb	r2, [r3, #16]                               
    c3f8:	e3720001 	cmn	r2, #1                                        
      {                                                               
        p->avl.left = q;                                              
    c3fc:	05831008 	streq	r1, [r3, #8]                                
      }                                                               
      else                                                            
      {                                                               
        p->avl.right = q;                                             
    c400:	1583100c 	strne	r1, [r3, #12]                               
  q->avl.left = q->avl.right = NULL;                                  
  q->avl.bal = 0;                                                     
  modified = true;                                                    
  buf_prev--;                                                         
                                                                      
  while (modified)                                                    
    c404:	e3560000 	cmp	r6, #0                                        
        p->avl.right = q;                                             
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      *root = p;                                                      
    c408:	e2400004 	sub	r0, r0, #4                                    
  q->avl.left = q->avl.right = NULL;                                  
  q->avl.bal = 0;                                                     
  modified = true;                                                    
  buf_prev--;                                                         
                                                                      
  while (modified)                                                    
    c40c:	0a000024 	beq	c4a4 <rtems_bdbuf_get_buffer_from_lru_list+0x2d8>
  {                                                                   
    if (p->avl.cache == -1)                                           
    c410:	e3720001 	cmn	r2, #1                                        
    c414:	1affffe7 	bne	c3b8 <rtems_bdbuf_get_buffer_from_lru_list+0x1ec>
    {                                                                 
      switch (p->avl.bal)                                             
    c418:	e1d311d1 	ldrsb	r1, [r3, #17]                               
    c41c:	e3510000 	cmp	r1, #0                                        
          p->avl.bal = 0;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case 0:                                                       
          p->avl.bal = -1;                                            
    c420:	05c32011 	strbeq	r2, [r3, #17]                              
    c424:	01a01003 	moveq	r1, r3                                      
    c428:	03a06001 	moveq	r6, #1                                      
                                                                      
  while (modified)                                                    
  {                                                                   
    if (p->avl.cache == -1)                                           
    {                                                                 
      switch (p->avl.bal)                                             
    c42c:	0affffed 	beq	c3e8 <rtems_bdbuf_get_buffer_from_lru_list+0x21c>
    c430:	e3510001 	cmp	r1, #1                                        
    c434:	0a000024 	beq	c4cc <rtems_bdbuf_get_buffer_from_lru_list+0x300>
    c438:	e3710001 	cmn	r1, #1                                        
    c43c:	1affffe7 	bne	c3e0 <rtems_bdbuf_get_buffer_from_lru_list+0x214>
        case 0:                                                       
          p->avl.bal = -1;                                            
          break;                                                      
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
    c440:	e5936008 	ldr	r6, [r3, #8]                                  
          if (p1->avl.bal == -1) /* simple LL-turn */                 
    c444:	e1d611d1 	ldrsb	r1, [r6, #17]                               
    c448:	e3710001 	cmn	r1, #1                                        
    c44c:	0a000040 	beq	c554 <rtems_bdbuf_get_buffer_from_lru_list+0x388>
            p->avl.bal = 0;                                           
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
    c450:	e596100c 	ldr	r1, [r6, #12]                                 
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
    c454:	e1d1a1d1 	ldrsb	sl, [r1, #17]                               
    c458:	e37a0001 	cmn	sl, #1                                        
    c45c:	13a0a000 	movne	sl, #0                                      
    c460:	03a0a001 	moveq	sl, #1                                      
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
    c464:	e5919008 	ldr	r9, [r1, #8]                                  
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
    c468:	e5c3a011 	strb	sl, [r3, #17]                                
            p = p1;                                                   
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
    c46c:	e586900c 	str	r9, [r6, #12]                                 
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
    c470:	e1d1a1d1 	ldrsb	sl, [r1, #17]                               
    c474:	e35a0001 	cmp	sl, #1                                        
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
    c478:	e591a00c 	ldr	sl, [r1, #12]                                 
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
    c47c:	11a02007 	movne	r2, r7                                      
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
    c480:	e5816008 	str	r6, [r1, #8]                                  
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
    c484:	e581300c 	str	r3, [r1, #12]                                 
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
    c488:	e583a008 	str	sl, [r3, #8]                                  
            p2->avl.right = p;                                        
            if (p2->avl.bal == -1) p->avl.bal = +1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
    c48c:	e5c62011 	strb	r2, [r6, #17]                                
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
    q = p;                                                            
    if (buf_prev > buf_stack)                                         
    c490:	e150000c 	cmp	r0, ip                                        
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
            p = p2;                                                   
          }                                                           
          p->avl.bal = 0;                                             
    c494:	e5c17011 	strb	r7, [r1, #17]                                
          modified = false;                                           
    c498:	e3a06000 	mov	r6, #0                                        
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
    q = p;                                                            
    if (buf_prev > buf_stack)                                         
    c49c:	8affffd3 	bhi	c3f0 <rtems_bdbuf_get_buffer_from_lru_list+0x224>
        p->avl.right = q;                                             
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      *root = p;                                                      
    c4a0:	e585103c 	str	r1, [r5, #60]	; 0x3c                          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    c4a4:	e3a03001 	mov	r3, #1                                        
    c4a8:	e5843020 	str	r3, [r4, #32]                                 
                                                                      
    if (empty_bd != NULL)                                             
    {                                                                 
      rtems_bdbuf_setup_empty_buffer (empty_bd, dd, block);           
                                                                      
      return empty_bd;                                                
    c4ac:	eaffff8f 	b	c2f0 <rtems_bdbuf_get_buffer_from_lru_list+0x124>
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    c4b0:	e5931018 	ldr	r1, [r3, #24]                                 
    c4b4:	e59d8008 	ldr	r8, [sp, #8]                                  
    c4b8:	e1580001 	cmp	r8, r1                                        
    c4bc:	8affffa2 	bhi	c34c <rtems_bdbuf_get_buffer_from_lru_list+0x180>
        q = node;                                                     
        p->avl.right = q = node;                                      
        break;                                                        
      }                                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    c4c0:	1affffae 	bne	c380 <rtems_bdbuf_get_buffer_from_lru_list+0x1b4>
  bd->avl.left  = NULL;                                               
  bd->avl.right = NULL;                                               
  bd->waiters   = 0;                                                  
                                                                      
  if (rtems_bdbuf_avl_insert (&bdbuf_cache.tree, bd) != 0)            
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RECYCLE);                    
    c4c4:	e3a00008 	mov	r0, #8                                        <== NOT EXECUTED
    c4c8:	ebfffd33 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
    else                                                              
    {                                                                 
      switch (p->avl.bal)                                             
      {                                                               
        case -1:                                                      
          p->avl.bal = 0;                                             
    c4cc:	e5c37011 	strb	r7, [r3, #17]                                
    c4d0:	e1a01003 	mov	r1, r3                                        
          modified = false;                                           
    c4d4:	e3a06000 	mov	r6, #0                                        
    c4d8:	eaffffc2 	b	c3e8 <rtems_bdbuf_get_buffer_from_lru_list+0x21c>
        case 0:                                                       
          p->avl.bal = 1;                                             
          break;                                                      
                                                                      
        case 1:                                                       
          p1 = p->avl.right;                                          
    c4dc:	e593200c 	ldr	r2, [r3, #12]                                 
          if (p1->avl.bal == 1) /* simple RR-turn */                  
    c4e0:	e1d211d1 	ldrsb	r1, [r2, #17]                               
    c4e4:	e3510001 	cmp	r1, #1                                        
          {                                                           
            p->avl.right = p1->avl.left;                              
    c4e8:	e5921008 	ldr	r1, [r2, #8]                                  
          p->avl.bal = 1;                                             
          break;                                                      
                                                                      
        case 1:                                                       
          p1 = p->avl.right;                                          
          if (p1->avl.bal == 1) /* simple RR-turn */                  
    c4ec:	0a000010 	beq	c534 <rtems_bdbuf_get_buffer_from_lru_list+0x368>
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
    c4f0:	e1d161d1 	ldrsb	r6, [r1, #17]                               
    c4f4:	e3560001 	cmp	r6, #1                                        
    c4f8:	03a060ff 	moveq	r6, #255	; 0xff                             
    c4fc:	13a06000 	movne	r6, #0                                      
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
    c500:	e591a00c 	ldr	sl, [r1, #12]                                 
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
    c504:	e5c36011 	strb	r6, [r3, #17]                                
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
    c508:	e582a008 	str	sl, [r2, #8]                                  
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
    c50c:	e1d161d1 	ldrsb	r6, [r1, #17]                               
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
    c510:	e591a008 	ldr	sl, [r1, #8]                                  
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
    c514:	e3760001 	cmn	r6, #1                                        
    c518:	11a06007 	movne	r6, r7                                      
    c51c:	01a06008 	moveq	r6, r8                                      
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
    c520:	e581200c 	str	r2, [r1, #12]                                 
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
    c524:	e5813008 	str	r3, [r1, #8]                                  
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
    c528:	e583a00c 	str	sl, [r3, #12]                                 
            p2->avl.left = p;                                         
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = +1; else p1->avl.bal = 0;
    c52c:	e5c26011 	strb	r6, [r2, #17]                                
    c530:	eaffffd6 	b	c490 <rtems_bdbuf_get_buffer_from_lru_list+0x2c4>
                                                                      
        case 1:                                                       
          p1 = p->avl.right;                                          
          if (p1->avl.bal == 1) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
    c534:	e583100c 	str	r1, [r3, #12]                                 
            p1->avl.left = p;                                         
            p->avl.bal = 0;                                           
    c538:	e5c37011 	strb	r7, [r3, #17]                                
        case 1:                                                       
          p1 = p->avl.right;                                          
          if (p1->avl.bal == 1) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
            p1->avl.left = p;                                         
    c53c:	e5823008 	str	r3, [r2, #8]                                  
            p->avl.bal = 0;                                           
    c540:	e1a01002 	mov	r1, r2                                        
    c544:	eaffffd1 	b	c490 <rtems_bdbuf_get_buffer_from_lru_list+0x2c4>
      p->avl.cache = 1;                                               
      q = p->avl.right;                                               
      if (q == NULL)                                                  
      {                                                               
        q = node;                                                     
        p->avl.right = q = node;                                      
    c548:	e583400c 	str	r4, [r3, #12]                                 
    c54c:	e3a02001 	mov	r2, #1                                        
    c550:	eaffff90 	b	c398 <rtems_bdbuf_get_buffer_from_lru_list+0x1cc>
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
          if (p1->avl.bal == -1) /* simple LL-turn */                 
          {                                                           
            p->avl.left = p1->avl.right;                              
    c554:	e596200c 	ldr	r2, [r6, #12]                                 
            p1->avl.right = p;                                        
            p->avl.bal = 0;                                           
    c558:	e5c37011 	strb	r7, [r3, #17]                                
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
          if (p1->avl.bal == -1) /* simple LL-turn */                 
          {                                                           
            p->avl.left = p1->avl.right;                              
    c55c:	e5832008 	str	r2, [r3, #8]                                  
            p1->avl.right = p;                                        
    c560:	e586300c 	str	r3, [r6, #12]                                 
            p->avl.bal = 0;                                           
    c564:	e1a01006 	mov	r1, r6                                        
    c568:	eaffffc8 	b	c490 <rtems_bdbuf_get_buffer_from_lru_list+0x2c4>
                                                                      
  bool modified = false;                                              
                                                                      
  if (p == NULL)                                                      
  {                                                                   
    *root = node;                                                     
    c56c:	e59f2010 	ldr	r2, [pc, #16]	; c584 <rtems_bdbuf_get_buffer_from_lru_list+0x3b8>
    c570:	e582403c 	str	r4, [r2, #60]	; 0x3c                          
    node->avl.left = NULL;                                            
    c574:	e5843008 	str	r3, [r4, #8]                                  
    node->avl.right = NULL;                                           
    c578:	e584300c 	str	r3, [r4, #12]                                 
    node->avl.bal = 0;                                                
    c57c:	e5c43011 	strb	r3, [r4, #17]                                
    c580:	eaffffc7 	b	c4a4 <rtems_bdbuf_get_buffer_from_lru_list+0x2d8>
                                                                      

0000d260 <rtems_bdbuf_init>: * * @return rtems_status_code The initialisation status. */ rtems_status_code rtems_bdbuf_init (void) {
    d260:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_mode          prev_mode;                                      
                                                                      
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:init\n");                                          
                                                                      
  if (rtems_interrupt_is_in_progress())                               
    d264:	e59f340c 	ldr	r3, [pc, #1036]	; d678 <rtems_bdbuf_init+0x418>
    d268:	e5933000 	ldr	r3, [r3]                                      
    d26c:	e3530000 	cmp	r3, #0                                        
 *                                                                    
 * @return rtems_status_code The initialisation status.               
 */                                                                   
rtems_status_code                                                     
rtems_bdbuf_init (void)                                               
{                                                                     
    d270:	e24dd014 	sub	sp, sp, #20                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:init\n");                                          
                                                                      
  if (rtems_interrupt_is_in_progress())                               
    return RTEMS_CALLED_FROM_ISR;                                     
    d274:	13a00012 	movne	r0, #18                                     
  rtems_mode          prev_mode;                                      
                                                                      
  if (rtems_bdbuf_tracer)                                             
    printf ("bdbuf:init\n");                                          
                                                                      
  if (rtems_interrupt_is_in_progress())                               
    d278:	0a000001 	beq	d284 <rtems_bdbuf_init+0x24>                  
  }                                                                   
                                                                      
  bdbuf_cache.initialised = false;                                    
                                                                      
  return RTEMS_UNSATISFIED;                                           
}                                                                     
    d27c:	e28dd014 	add	sp, sp, #20                                   
    d280:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  /*                                                                  
   * Check the configuration table values.                            
   */                                                                 
  if ((bdbuf_config.buffer_max % bdbuf_config.buffer_min) != 0)       
    d284:	e59f43f0 	ldr	r4, [pc, #1008]	; d67c <rtems_bdbuf_init+0x41c>
    d288:	e59f53ec 	ldr	r5, [pc, #1004]	; d67c <rtems_bdbuf_init+0x41c>
    d28c:	e5944028 	ldr	r4, [r4, #40]	; 0x28                          
    d290:	e5955024 	ldr	r5, [r5, #36]	; 0x24                          
    d294:	e1a00004 	mov	r0, r4                                        
    d298:	e1a01005 	mov	r1, r5                                        
    d29c:	e58d400c 	str	r4, [sp, #12]                                 
    d2a0:	e58d5008 	str	r5, [sp, #8]                                  
    d2a4:	eb00369c 	bl	1ad1c <__umodsi3>                              
    d2a8:	e3500000 	cmp	r0, #0                                        
    return RTEMS_INVALID_NUMBER;                                      
    d2ac:	13a0000a 	movne	r0, #10                                     
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  /*                                                                  
   * Check the configuration table values.                            
   */                                                                 
  if ((bdbuf_config.buffer_max % bdbuf_config.buffer_min) != 0)       
    d2b0:	1afffff1 	bne	d27c <rtems_bdbuf_init+0x1c>                  
  /*                                                                  
   * We use a special variable to manage the initialisation incase we have
   * completing threads doing this. You may get errors if the another thread
   * makes a call and we have not finished initialisation.            
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
    d2b4:	ebfff9fe 	bl	bab4 <rtems_bdbuf_disable_preemption>          
  if (bdbuf_cache.initialised)                                        
    d2b8:	e59f63c0 	ldr	r6, [pc, #960]	; d680 <rtems_bdbuf_init+0x420>
    d2bc:	e5d66095 	ldrb	r6, [r6, #149]	; 0x95                        
    d2c0:	e3560000 	cmp	r6, #0                                        
  /*                                                                  
   * We use a special variable to manage the initialisation incase we have
   * completing threads doing this. You may get errors if the another thread
   * makes a call and we have not finished initialisation.            
   */                                                                 
  prev_mode = rtems_bdbuf_disable_preemption ();                      
    d2c4:	e1a04000 	mov	r4, r0                                        
  if (bdbuf_cache.initialised)                                        
    d2c8:	e58d6010 	str	r6, [sp, #16]                                 
    d2cc:	0a000002 	beq	d2dc <rtems_bdbuf_init+0x7c>                  
  {                                                                   
    rtems_bdbuf_restore_preemption (prev_mode);                       
    d2d0:	ebfffa07 	bl	baf4 <rtems_bdbuf_restore_preemption>          <== NOT EXECUTED
    return RTEMS_RESOURCE_IN_USE;                                     
    d2d4:	e3a0000c 	mov	r0, #12                                       <== NOT EXECUTED
    d2d8:	eaffffe7 	b	d27c <rtems_bdbuf_init+0x1c>                    <== NOT EXECUTED
  }                                                                   
                                                                      
  memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));                       
  bdbuf_cache.initialised = true;                                     
    d2dc:	e59f839c 	ldr	r8, [pc, #924]	; d680 <rtems_bdbuf_init+0x420>
  {                                                                   
    rtems_bdbuf_restore_preemption (prev_mode);                       
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));                       
    d2e0:	e59d1010 	ldr	r1, [sp, #16]                                 
    d2e4:	e3a02098 	mov	r2, #152	; 0x98                               
  bdbuf_cache.initialised = true;                                     
    d2e8:	e3a07001 	mov	r7, #1                                        
  {                                                                   
    rtems_bdbuf_restore_preemption (prev_mode);                       
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));                       
    d2ec:	e59f038c 	ldr	r0, [pc, #908]	; d680 <rtems_bdbuf_init+0x420>
    d2f0:	eb0014fd 	bl	126ec <memset>                                 
  bdbuf_cache.initialised = true;                                     
  rtems_bdbuf_restore_preemption (prev_mode);                         
    d2f4:	e1a00004 	mov	r0, r4                                        
    rtems_bdbuf_restore_preemption (prev_mode);                       
    return RTEMS_RESOURCE_IN_USE;                                     
  }                                                                   
                                                                      
  memset(&bdbuf_cache, 0, sizeof(bdbuf_cache));                       
  bdbuf_cache.initialised = true;                                     
    d2f8:	e5c87095 	strb	r7, [r8, #149]	; 0x95                        
  rtems_bdbuf_restore_preemption (prev_mode);                         
    d2fc:	ebfff9fc 	bl	baf4 <rtems_bdbuf_restore_preemption>          
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d300:	e288700c 	add	r7, r8, #12                                   
  rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);       
                                                                      
  /*                                                                  
   * Create the locks for the cache.                                  
   */                                                                 
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'), 
    d304:	e59d3010 	ldr	r3, [sp, #16]                                 
  head->previous = NULL;                                              
  tail->previous = head;                                              
    d308:	e2886008 	add	r6, r8, #8                                    
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d30c:	e5887008 	str	r7, [r8, #8]                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
    d310:	e5886010 	str	r6, [r8, #16]                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d314:	e2884050 	add	r4, r8, #80	; 0x50                            
  head->previous = NULL;                                              
  tail->previous = head;                                              
    d318:	e288e04c 	add	lr, r8, #76	; 0x4c                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d31c:	e288c05c 	add	ip, r8, #92	; 0x5c                            
  head->previous = NULL;                                              
  tail->previous = head;                                              
    d320:	e2885040 	add	r5, r8, #64	; 0x40                            
    d324:	e2889088 	add	r9, r8, #136	; 0x88                           
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d328:	e2886044 	add	r6, r8, #68	; 0x44                            
  head->previous = NULL;                                              
  tail->previous = head;                                              
    d32c:	e2887058 	add	r7, r8, #88	; 0x58                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d330:	e288a08c 	add	sl, r8, #140	; 0x8c                           
    d334:	e588404c 	str	r4, [r8, #76]	; 0x4c                          
   */                                                                 
  cache_aligment = 32; /* FIXME rtems_cache_get_data_line_size() */   
  if (cache_aligment <= 0)                                            
    cache_aligment = CPU_ALIGNMENT;                                   
                                                                      
  bdbuf_cache.sync_device = BDBUF_INVALID_DEV;                        
    d338:	e5883038 	str	r3, [r8, #56]	; 0x38                          
  head->previous = NULL;                                              
    d33c:	e588300c 	str	r3, [r8, #12]                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d340:	e5886040 	str	r6, [r8, #64]	; 0x40                          
  head->previous = NULL;                                              
    d344:	e5883044 	str	r3, [r8, #68]	; 0x44                          
  tail->previous = head;                                              
    d348:	e5885048 	str	r5, [r8, #72]	; 0x48                          
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    d34c:	e5883050 	str	r3, [r8, #80]	; 0x50                          
  tail->previous = head;                                              
    d350:	e588e054 	str	lr, [r8, #84]	; 0x54                          
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d354:	e588c058 	str	ip, [r8, #88]	; 0x58                          
  head->previous = NULL;                                              
    d358:	e588305c 	str	r3, [r8, #92]	; 0x5c                          
  tail->previous = head;                                              
    d35c:	e5887060 	str	r7, [r8, #96]	; 0x60                          
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    d360:	e588a088 	str	sl, [r8, #136]	; 0x88                         
  head->previous = NULL;                                              
    d364:	e588308c 	str	r3, [r8, #140]	; 0x8c                         
  tail->previous = head;                                              
    d368:	e5889090 	str	r9, [r8, #144]	; 0x90                         
  rtems_chain_initialize_empty (&bdbuf_cache.read_ahead_chain);       
                                                                      
  /*                                                                  
   * Create the locks for the cache.                                  
   */                                                                 
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'l'), 
    d36c:	e288b028 	add	fp, r8, #40	; 0x28                            
    d370:	e59f030c 	ldr	r0, [pc, #780]	; d684 <rtems_bdbuf_init+0x424>
    d374:	e3a01001 	mov	r1, #1                                        
    d378:	e3a02054 	mov	r2, #84	; 0x54                                
    d37c:	e58db000 	str	fp, [sp]                                      
    d380:	ebffe93d 	bl	787c <rtems_semaphore_create>                  
                               1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,  
                               &bdbuf_cache.lock);                    
  if (sc != RTEMS_SUCCESSFUL)                                         
    d384:	e2504000 	subs	r4, r0, #0                                   
    d388:	0a000026 	beq	d428 <rtems_bdbuf_init+0x1c8>                 
                                                                      
  return RTEMS_SUCCESSFUL;                                            
                                                                      
error:                                                                
                                                                      
  if (bdbuf_cache.read_ahead_task != 0)                               
    d38c:	e59f72ec 	ldr	r7, [pc, #748]	; d680 <rtems_bdbuf_init+0x420><== NOT EXECUTED
    d390:	e5970084 	ldr	r0, [r7, #132]	; 0x84                         <== NOT EXECUTED
    d394:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    d398:	1a00001a 	bne	d408 <rtems_bdbuf_init+0x1a8>                 <== NOT EXECUTED
    rtems_task_delete (bdbuf_cache.read_ahead_task);                  
                                                                      
  if (bdbuf_cache.swapout != 0)                                       
    d39c:	e59f82dc 	ldr	r8, [pc, #732]	; d680 <rtems_bdbuf_init+0x420><== NOT EXECUTED
    d3a0:	e5980000 	ldr	r0, [r8]                                      <== NOT EXECUTED
    d3a4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    d3a8:	1a00001c 	bne	d420 <rtems_bdbuf_init+0x1c0>                 <== NOT EXECUTED
    rtems_task_delete (bdbuf_cache.swapout);                          
                                                                      
  free (bdbuf_cache.buffers);                                         
    d3ac:	e59fa2cc 	ldr	sl, [pc, #716]	; d680 <rtems_bdbuf_init+0x420><== NOT EXECUTED
    d3b0:	e59a0018 	ldr	r0, [sl, #24]                                 <== NOT EXECUTED
    d3b4:	ebffd91b 	bl	3828 <free>                                    <== NOT EXECUTED
  free (bdbuf_cache.groups);                                          
    d3b8:	e59a0080 	ldr	r0, [sl, #128]	; 0x80                         <== NOT EXECUTED
    d3bc:	ebffd919 	bl	3828 <free>                                    <== NOT EXECUTED
  free (bdbuf_cache.bds);                                             
    d3c0:	e59a0014 	ldr	r0, [sl, #20]                                 <== NOT EXECUTED
    d3c4:	ebffd917 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
  rtems_semaphore_delete (bdbuf_cache.buffer_waiters.sema);           
    d3c8:	e59a0078 	ldr	r0, [sl, #120]	; 0x78                         <== NOT EXECUTED
    d3cc:	ebffe99a 	bl	7a3c <rtems_semaphore_delete>                  <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.access_waiters.sema);           
    d3d0:	e59a0068 	ldr	r0, [sl, #104]	; 0x68                         <== NOT EXECUTED
    d3d4:	ebffe998 	bl	7a3c <rtems_semaphore_delete>                  <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);         
    d3d8:	e59a0070 	ldr	r0, [sl, #112]	; 0x70                         <== NOT EXECUTED
    d3dc:	ebffe996 	bl	7a3c <rtems_semaphore_delete>                  <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.sync_lock);                     
    d3e0:	e59a002c 	ldr	r0, [sl, #44]	; 0x2c                          <== NOT EXECUTED
    d3e4:	ebffe994 	bl	7a3c <rtems_semaphore_delete>                  <== NOT EXECUTED
                                                                      
  if (bdbuf_cache.lock != 0)                                          
    d3e8:	e59a3028 	ldr	r3, [sl, #40]	; 0x28                          <== NOT EXECUTED
    d3ec:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    d3f0:	1a000006 	bne	d410 <rtems_bdbuf_init+0x1b0>                 <== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_unlock_cache ();                                      
    rtems_semaphore_delete (bdbuf_cache.lock);                        
  }                                                                   
                                                                      
  bdbuf_cache.initialised = false;                                    
    d3f4:	e59fc284 	ldr	ip, [pc, #644]	; d680 <rtems_bdbuf_init+0x420><== NOT EXECUTED
    d3f8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    d3fc:	e5cc3095 	strb	r3, [ip, #149]	; 0x95                        <== NOT EXECUTED
                                                                      
  return RTEMS_UNSATISFIED;                                           
    d400:	e3a0000d 	mov	r0, #13                                       <== NOT EXECUTED
    d404:	eaffff9c 	b	d27c <rtems_bdbuf_init+0x1c>                    <== NOT EXECUTED
  return RTEMS_SUCCESSFUL;                                            
                                                                      
error:                                                                
                                                                      
  if (bdbuf_cache.read_ahead_task != 0)                               
    rtems_task_delete (bdbuf_cache.read_ahead_task);                  
    d408:	ebffea8e 	bl	7e48 <rtems_task_delete>                       <== NOT EXECUTED
    d40c:	eaffffe2 	b	d39c <rtems_bdbuf_init+0x13c>                   <== NOT EXECUTED
  rtems_semaphore_delete (bdbuf_cache.transfer_waiters.sema);         
  rtems_semaphore_delete (bdbuf_cache.sync_lock);                     
                                                                      
  if (bdbuf_cache.lock != 0)                                          
  {                                                                   
    rtems_bdbuf_unlock_cache ();                                      
    d410:	ebfff97e 	bl	ba10 <rtems_bdbuf_unlock_cache>                <== NOT EXECUTED
    rtems_semaphore_delete (bdbuf_cache.lock);                        
    d414:	e59a0028 	ldr	r0, [sl, #40]	; 0x28                          <== NOT EXECUTED
    d418:	ebffe987 	bl	7a3c <rtems_semaphore_delete>                  <== NOT EXECUTED
    d41c:	eafffff4 	b	d3f4 <rtems_bdbuf_init+0x194>                   <== NOT EXECUTED
                                                                      
  if (bdbuf_cache.read_ahead_task != 0)                               
    rtems_task_delete (bdbuf_cache.read_ahead_task);                  
                                                                      
  if (bdbuf_cache.swapout != 0)                                       
    rtems_task_delete (bdbuf_cache.swapout);                          
    d420:	ebffea88 	bl	7e48 <rtems_task_delete>                       <== NOT EXECUTED
    d424:	eaffffe0 	b	d3ac <rtems_bdbuf_init+0x14c>                   <== NOT EXECUTED
                               1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,  
                               &bdbuf_cache.lock);                    
  if (sc != RTEMS_SUCCESSFUL)                                         
    goto error;                                                       
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    d428:	ebfff95f 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 's'), 
    d42c:	e288c02c 	add	ip, r8, #44	; 0x2c                            
    d430:	e3a01001 	mov	r1, #1                                        
    d434:	e59f024c 	ldr	r0, [pc, #588]	; d688 <rtems_bdbuf_init+0x428>
    d438:	e3a02054 	mov	r2, #84	; 0x54                                
    d43c:	e1a03004 	mov	r3, r4                                        
    d440:	e58dc000 	str	ip, [sp]                                      
    d444:	ebffe90c 	bl	787c <rtems_semaphore_create>                  
                               1, RTEMS_BDBUF_CACHE_LOCK_ATTRIBS, 0,  
                               &bdbuf_cache.sync_lock);               
  if (sc != RTEMS_SUCCESSFUL)                                         
    d448:	e2501000 	subs	r1, r0, #0                                   
    d44c:	1affffce 	bne	d38c <rtems_bdbuf_init+0x12c>                 
    goto error;                                                       
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'a'), 
    d450:	e288c068 	add	ip, r8, #104	; 0x68                           
    d454:	e1a03001 	mov	r3, r1                                        
    d458:	e59f022c 	ldr	r0, [pc, #556]	; d68c <rtems_bdbuf_init+0x42c>
    d45c:	e3a02024 	mov	r2, #36	; 0x24                                
    d460:	e58dc000 	str	ip, [sp]                                      
    d464:	ebffe904 	bl	787c <rtems_semaphore_create>                  
                               0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
                               &bdbuf_cache.access_waiters.sema);     
  if (sc != RTEMS_SUCCESSFUL)                                         
    d468:	e2501000 	subs	r1, r0, #0                                   
    d46c:	1affffc6 	bne	d38c <rtems_bdbuf_init+0x12c>                 
    goto error;                                                       
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 't'), 
    d470:	e288c070 	add	ip, r8, #112	; 0x70                           
    d474:	e1a03001 	mov	r3, r1                                        
    d478:	e59f0210 	ldr	r0, [pc, #528]	; d690 <rtems_bdbuf_init+0x430>
    d47c:	e3a02024 	mov	r2, #36	; 0x24                                
    d480:	e58dc000 	str	ip, [sp]                                      
    d484:	ebffe8fc 	bl	787c <rtems_semaphore_create>                  
                               0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
                               &bdbuf_cache.transfer_waiters.sema);   
  if (sc != RTEMS_SUCCESSFUL)                                         
    d488:	e2501000 	subs	r1, r0, #0                                   
    d48c:	1affffbe 	bne	d38c <rtems_bdbuf_init+0x12c>                 
    goto error;                                                       
                                                                      
  sc = rtems_semaphore_create (rtems_build_name ('B', 'D', 'C', 'b'), 
    d490:	e288c078 	add	ip, r8, #120	; 0x78                           
    d494:	e59f01f8 	ldr	r0, [pc, #504]	; d694 <rtems_bdbuf_init+0x434>
    d498:	e3a02024 	mov	r2, #36	; 0x24                                
    d49c:	e1a03001 	mov	r3, r1                                        
    d4a0:	e58dc000 	str	ip, [sp]                                      
    d4a4:	ebffe8f4 	bl	787c <rtems_semaphore_create>                  
                               0, RTEMS_BDBUF_CACHE_WAITER_ATTRIBS, 0,
                               &bdbuf_cache.buffer_waiters.sema);     
  if (sc != RTEMS_SUCCESSFUL)                                         
    d4a8:	e3500000 	cmp	r0, #0                                        
    d4ac:	1affffb6 	bne	d38c <rtems_bdbuf_init+0x12c>                 
                                                                      
  /*                                                                  
   * Compute the various number of elements in the cache.             
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    bdbuf_config.size / bdbuf_config.buffer_min;                      
    d4b0:	e59fe1c4 	ldr	lr, [pc, #452]	; d67c <rtems_bdbuf_init+0x41c>
    d4b4:	e59d1008 	ldr	r1, [sp, #8]                                  
    d4b8:	e59e0020 	ldr	r0, [lr, #32]                                 
    d4bc:	eb0035d0 	bl	1ac04 <__aeabi_uidiv>                          
    d4c0:	e1a05000 	mov	r5, r0                                        
  bdbuf_cache.max_bds_per_group =                                     
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
    d4c4:	e59d1008 	ldr	r1, [sp, #8]                                  
    d4c8:	e59d000c 	ldr	r0, [sp, #12]                                 
    goto error;                                                       
                                                                      
  /*                                                                  
   * Compute the various number of elements in the cache.             
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    d4cc:	e588501c 	str	r5, [r8, #28]                                 
    bdbuf_config.size / bdbuf_config.buffer_min;                      
  bdbuf_cache.max_bds_per_group =                                     
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
    d4d0:	eb0035cb 	bl	1ac04 <__aeabi_uidiv>                          
    d4d4:	e1a03000 	mov	r3, r0                                        
  bdbuf_cache.group_count =                                           
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
    d4d8:	e1a01000 	mov	r1, r0                                        
  /*                                                                  
   * Compute the various number of elements in the cache.             
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    bdbuf_config.size / bdbuf_config.buffer_min;                      
  bdbuf_cache.max_bds_per_group =                                     
    d4dc:	e5883020 	str	r3, [r8, #32]                                 
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
  bdbuf_cache.group_count =                                           
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
    d4e0:	e1a00005 	mov	r0, r5                                        
    d4e4:	eb0035c6 	bl	1ac04 <__aeabi_uidiv>                          
    d4e8:	e1a04000 	mov	r4, r0                                        
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),              
    d4ec:	e1a01005 	mov	r1, r5                                        
    d4f0:	e3a00038 	mov	r0, #56	; 0x38                                
   */                                                                 
  bdbuf_cache.buffer_min_count =                                      
    bdbuf_config.size / bdbuf_config.buffer_min;                      
  bdbuf_cache.max_bds_per_group =                                     
    bdbuf_config.buffer_max / bdbuf_config.buffer_min;                
  bdbuf_cache.group_count =                                           
    d4f4:	e588407c 	str	r4, [r8, #124]	; 0x7c                         
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),              
    d4f8:	ebffd80f 	bl	353c <calloc>                                  
                            bdbuf_cache.buffer_min_count);            
  if (!bdbuf_cache.bds)                                               
    d4fc:	e3500000 	cmp	r0, #0                                        
    bdbuf_cache.buffer_min_count / bdbuf_cache.max_bds_per_group;     
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.bds = calloc (sizeof (rtems_bdbuf_buffer),              
    d500:	e5880014 	str	r0, [r8, #20]                                 
                            bdbuf_cache.buffer_min_count);            
  if (!bdbuf_cache.bds)                                               
    d504:	0affffa0 	beq	d38c <rtems_bdbuf_init+0x12c>                 
    goto error;                                                       
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.groups = calloc (sizeof (rtems_bdbuf_group),            
    d508:	e3a00014 	mov	r0, #20                                       
    d50c:	e1a01004 	mov	r1, r4                                        
    d510:	ebffd809 	bl	353c <calloc>                                  
                               bdbuf_cache.group_count);              
  if (!bdbuf_cache.groups)                                            
    d514:	e3500000 	cmp	r0, #0                                        
    goto error;                                                       
                                                                      
  /*                                                                  
   * Allocate the memory for the buffer descriptors.                  
   */                                                                 
  bdbuf_cache.groups = calloc (sizeof (rtems_bdbuf_group),            
    d518:	e5880080 	str	r0, [r8, #128]	; 0x80                         
                               bdbuf_cache.group_count);              
  if (!bdbuf_cache.groups)                                            
    d51c:	0affff9a 	beq	d38c <rtems_bdbuf_init+0x12c>                 
   * aligned. It is possible to free the memory allocated by rtems_memalign()
   * with free(). Return 0 if allocated.                              
   *                                                                  
   * The memory allocate allows a                                     
   */                                                                 
  if (rtems_memalign ((void **) &bdbuf_cache.buffers,                 
    d520:	e59d6008 	ldr	r6, [sp, #8]                                  
    d524:	e3a01020 	mov	r1, #32                                       
    d528:	e2880018 	add	r0, r8, #24                                   
    d52c:	e0020596 	mul	r2, r6, r5                                    
    d530:	eb000740 	bl	f238 <rtems_memalign>                          
    d534:	e3500000 	cmp	r0, #0                                        
    d538:	e1a04008 	mov	r4, r8                                        
    d53c:	1affff92 	bne	d38c <rtems_bdbuf_init+0x12c>                 
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
    d540:	e5985080 	ldr	r5, [r8, #128]	; 0x80                         
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
    d544:	e594b020 	ldr	fp, [r4, #32]                                 
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
    d548:	e594201c 	ldr	r2, [r4, #28]                                 
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
    d54c:	e5988014 	ldr	r8, [r8, #20]                                 
    d550:	e594a018 	ldr	sl, [r4, #24]                                 
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
    d554:	e1a09005 	mov	r9, r5                                        
    d558:	e58d500c 	str	r5, [sp, #12]                                 
    d55c:	e1a06000 	mov	r6, r0                                        
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
        (bdbuf_cache.max_bds_per_group - 1))                          
    d560:	e24b7001 	sub	r7, fp, #1                                    
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
    d564:	e1a04008 	mov	r4, r8                                        
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
  {                                                                   
    bd->dd    = BDBUF_INVALID_DEV;                                    
    d568:	e1a0c000 	mov	ip, r0                                        
    d56c:	e1a05002 	mov	r5, r2                                        
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
    d570:	e1560005 	cmp	r6, r5                                        
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
    d574:	e1a00006 	mov	r0, r6                                        
    d578:	e1a0100b 	mov	r1, fp                                        
                                                                      
  /*                                                                  
   * The cache is empty after opening so we need to add all the buffers to it
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
    d57c:	0a000013 	beq	d5d0 <rtems_bdbuf_init+0x370>                 
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
  {                                                                   
    bd->dd    = BDBUF_INVALID_DEV;                                    
    bd->group  = group;                                               
    d580:	e5849028 	str	r9, [r4, #40]	; 0x28                          
    bd->buffer = buffer;                                              
    d584:	e584a01c 	str	sl, [r4, #28]                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
  {                                                                   
    bd->dd    = BDBUF_INVALID_DEV;                                    
    d588:	e584c014 	str	ip, [r4, #20]                                 
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    d58c:	e59fe0ec 	ldr	lr, [pc, #236]	; d680 <rtems_bdbuf_init+0x420>
    d590:	e59e3048 	ldr	r3, [lr, #72]	; 0x48                          
                                                                      
  the_node->next = tail;                                              
    d594:	e28e2044 	add	r2, lr, #68	; 0x44                            
    d598:	e5842000 	str	r2, [r4]                                      
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
    d59c:	e5834000 	str	r4, [r3]                                      
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
    d5a0:	e58e4048 	str	r4, [lr, #72]	; 0x48                          
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
    d5a4:	e5843004 	str	r3, [r4, #4]                                  
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
    d5a8:	e58dc004 	str	ip, [sp, #4]                                  
    d5ac:	eb0035da 	bl	1ad1c <__umodsi3>                              
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
    d5b0:	e59d3008 	ldr	r3, [sp, #8]                                  
    bd->group  = group;                                               
    bd->buffer = buffer;                                              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.lru, &bd->link);     
                                                                      
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
    d5b4:	e1500007 	cmp	r0, r7                                        
    d5b8:	e59dc004 	ldr	ip, [sp, #4]                                  
        (bdbuf_cache.max_bds_per_group - 1))                          
      group++;                                                        
    d5bc:	02899014 	addeq	r9, r9, #20                                 
   * and initialise the groups.                                       
   */                                                                 
  for (b = 0, group = bdbuf_cache.groups,                             
         bd = bdbuf_cache.bds, buffer = bdbuf_cache.buffers;          
       b < bdbuf_cache.buffer_min_count;                              
       b++, bd++, buffer += bdbuf_config.buffer_min)                  
    d5c0:	e2866001 	add	r6, r6, #1                                    
    d5c4:	e2844038 	add	r4, r4, #56	; 0x38                            
    d5c8:	e08aa003 	add	sl, sl, r3                                    
    d5cc:	eaffffe7 	b	d570 <rtems_bdbuf_init+0x310>                   
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
  {                                                                   
    group->bds_per_group = bdbuf_cache.max_bds_per_group;             
    d5d0:	e59f40a8 	ldr	r4, [pc, #168]	; d680 <rtems_bdbuf_init+0x420>
    d5d4:	e5942020 	ldr	r2, [r4, #32]                                 
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
    d5d8:	e3a01038 	mov	r1, #56	; 0x38                                
    d5dc:	e0010192 	mul	r1, r2, r1                                    
    d5e0:	e59d500c 	ldr	r5, [sp, #12]                                 
  }                                                                   
                                                                      
  for (b = 0,                                                         
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
    d5e4:	e594007c 	ldr	r0, [r4, #124]	; 0x7c                         
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
    d5e8:	e3a03000 	mov	r3, #0                                        
    if ((b % bdbuf_cache.max_bds_per_group) ==                        
        (bdbuf_cache.max_bds_per_group - 1))                          
      group++;                                                        
  }                                                                   
                                                                      
  for (b = 0,                                                         
    d5ec:	e1530000 	cmp	r3, r0                                        
    d5f0:	0a000005 	beq	d60c <rtems_bdbuf_init+0x3ac>                 
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
  {                                                                   
    group->bds_per_group = bdbuf_cache.max_bds_per_group;             
    group->bdbuf = bd;                                                
    d5f4:	e5858010 	str	r8, [r5, #16]                                 
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
         group++,                                                     
         bd += bdbuf_cache.max_bds_per_group)                         
  {                                                                   
    group->bds_per_group = bdbuf_cache.max_bds_per_group;             
    d5f8:	e5852008 	str	r2, [r5, #8]                                  
                                                                      
  for (b = 0,                                                         
         group = bdbuf_cache.groups,                                  
         bd = bdbuf_cache.bds;                                        
       b < bdbuf_cache.group_count;                                   
       b++,                                                           
    d5fc:	e2833001 	add	r3, r3, #1                                    
         group++,                                                     
    d600:	e2855014 	add	r5, r5, #20                                   
         bd += bdbuf_cache.max_bds_per_group)                         
    d604:	e0888001 	add	r8, r8, r1                                    
    d608:	eafffff7 	b	d5ec <rtems_bdbuf_init+0x38c>                   
                                                                      
  /*                                                                  
   * Create and start swapout task. This task will create and manage the worker
   * threads.                                                         
   */                                                                 
  bdbuf_cache.swapout_enabled = true;                                 
    d60c:	e59f606c 	ldr	r6, [pc, #108]	; d680 <rtems_bdbuf_init+0x420>
                                                                      
  sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'), 
    d610:	e59f5064 	ldr	r5, [pc, #100]	; d67c <rtems_bdbuf_init+0x41c>
                                                                      
  /*                                                                  
   * Create and start swapout task. This task will create and manage the worker
   * threads.                                                         
   */                                                                 
  bdbuf_cache.swapout_enabled = true;                                 
    d614:	e3a04001 	mov	r4, #1                                        
                                                                      
  sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'), 
    d618:	e3a03000 	mov	r3, #0                                        
                                                                      
  /*                                                                  
   * Create and start swapout task. This task will create and manage the worker
   * threads.                                                         
   */                                                                 
  bdbuf_cache.swapout_enabled = true;                                 
    d61c:	e5c64004 	strb	r4, [r6, #4]                                 
                                                                      
  sc = rtems_bdbuf_create_task (rtems_build_name('B', 'S', 'W', 'P'), 
    d620:	e59f0070 	ldr	r0, [pc, #112]	; d698 <rtems_bdbuf_init+0x438>
    d624:	e5951008 	ldr	r1, [r5, #8]                                  
    d628:	e59f206c 	ldr	r2, [pc, #108]	; d69c <rtems_bdbuf_init+0x43c>
    d62c:	e58d6000 	str	r6, [sp]                                      
    d630:	ebfff9e2 	bl	bdc0 <rtems_bdbuf_create_task.constprop.10>    
                                bdbuf_config.swapout_priority,        
                                RTEMS_BDBUF_SWAPOUT_TASK_PRIORITY_DEFAULT,
                                rtems_bdbuf_swapout_task,             
                                0,                                    
                                &bdbuf_cache.swapout);                
  if (sc != RTEMS_SUCCESSFUL)                                         
    d634:	e2503000 	subs	r3, r0, #0                                   
    d638:	1affff53 	bne	d38c <rtems_bdbuf_init+0x12c>                 
    goto error;                                                       
                                                                      
  if (bdbuf_config.max_read_ahead_blocks > 0)                         
    d63c:	e5951000 	ldr	r1, [r5]                                      
    d640:	e3510000 	cmp	r1, #0                                        
    d644:	0a000008 	beq	d66c <rtems_bdbuf_init+0x40c>                 
  {                                                                   
    bdbuf_cache.read_ahead_enabled = true;                            
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
    d648:	e286e084 	add	lr, r6, #132	; 0x84                           
  if (sc != RTEMS_SUCCESSFUL)                                         
    goto error;                                                       
                                                                      
  if (bdbuf_config.max_read_ahead_blocks > 0)                         
  {                                                                   
    bdbuf_cache.read_ahead_enabled = true;                            
    d64c:	e5c64094 	strb	r4, [r6, #148]	; 0x94                        
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'R', 'D', 'A'),
    d650:	e59f0048 	ldr	r0, [pc, #72]	; d6a0 <rtems_bdbuf_init+0x440> 
    d654:	e595102c 	ldr	r1, [r5, #44]	; 0x2c                          
    d658:	e59f2044 	ldr	r2, [pc, #68]	; d6a4 <rtems_bdbuf_init+0x444> 
    d65c:	e58de000 	str	lr, [sp]                                      
    d660:	ebfff9d6 	bl	bdc0 <rtems_bdbuf_create_task.constprop.10>    
                                  bdbuf_config.read_ahead_priority,   
                                  RTEMS_BDBUF_READ_AHEAD_TASK_PRIORITY_DEFAULT,
                                  rtems_bdbuf_read_ahead_task,        
                                  0,                                  
                                  &bdbuf_cache.read_ahead_task);      
    if (sc != RTEMS_SUCCESSFUL)                                       
    d664:	e3500000 	cmp	r0, #0                                        
    d668:	1affff47 	bne	d38c <rtems_bdbuf_init+0x12c>                 
      goto error;                                                     
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d66c:	ebfff8e7 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    d670:	e3a00000 	mov	r0, #0                                        
    d674:	eaffff00 	b	d27c <rtems_bdbuf_init+0x1c>                    
                                                                      

0000b9ac <rtems_bdbuf_lock_cache>: * @param fatal_error_code The error code if the call fails. */ static void rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code) { rtems_status_code sc = rtems_semaphore_obtain (lock,
    b9ac:	e59f3020 	ldr	r3, [pc, #32]	; b9d4 <rtems_bdbuf_lock_cache+0x28>
    b9b0:	e3a01000 	mov	r1, #0                                        
/**                                                                   
 * Lock the cache. A single task can nest calls.                      
 */                                                                   
static void                                                           
rtems_bdbuf_lock_cache (void)                                         
{                                                                     
    b9b4:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
 * @param fatal_error_code The error code if the call fails.          
 */                                                                   
static void                                                           
rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code)           
{                                                                     
  rtems_status_code sc = rtems_semaphore_obtain (lock,                
    b9b8:	e5930028 	ldr	r0, [r3, #40]	; 0x28                          
    b9bc:	e1a02001 	mov	r2, r1                                        
    b9c0:	ebfff046 	bl	7ae0 <rtems_semaphore_obtain>                  
                                                 RTEMS_WAIT,          
                                                 RTEMS_NO_TIMEOUT);   
  if (sc != RTEMS_SUCCESSFUL)                                         
    b9c4:	e3500000 	cmp	r0, #0                                        
    b9c8:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_bdbuf_fatal (fatal_error_code);                             
    b9cc:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    b9d0:	ebfffff1 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000b9d8 <rtems_bdbuf_lock_sync>: * @param fatal_error_code The error code if the call fails. */ static void rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code) { rtems_status_code sc = rtems_semaphore_obtain (lock,
    b9d8:	e59f3020 	ldr	r3, [pc, #32]	; ba00 <rtems_bdbuf_lock_sync+0x28>
    b9dc:	e3a01000 	mov	r1, #0                                        
/**                                                                   
 * Lock the cache's sync. A single task can nest calls.               
 */                                                                   
static void                                                           
rtems_bdbuf_lock_sync (void)                                          
{                                                                     
    b9e0:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
 * @param fatal_error_code The error code if the call fails.          
 */                                                                   
static void                                                           
rtems_bdbuf_lock (rtems_id lock, uint32_t fatal_error_code)           
{                                                                     
  rtems_status_code sc = rtems_semaphore_obtain (lock,                
    b9e4:	e593002c 	ldr	r0, [r3, #44]	; 0x2c                          
    b9e8:	e1a02001 	mov	r2, r1                                        
    b9ec:	ebfff03b 	bl	7ae0 <rtems_semaphore_obtain>                  
                                                 RTEMS_WAIT,          
                                                 RTEMS_NO_TIMEOUT);   
  if (sc != RTEMS_SUCCESSFUL)                                         
    b9f0:	e3500000 	cmp	r0, #0                                        
    b9f4:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_bdbuf_fatal (fatal_error_code);                             
    b9f8:	e3a00019 	mov	r0, #25                                       <== NOT EXECUTED
    b9fc:	ebffffe6 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000dc34 <rtems_bdbuf_purge_dev>: } } void rtems_bdbuf_purge_dev (rtems_disk_device *dd) {
    dc34:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    dc38:	e24dd08c 	sub	sp, sp, #140	; 0x8c                           
    dc3c:	e1a06000 	mov	r6, r0                                        
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    dc40:	e3a05000 	mov	r5, #0                                        
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    dc44:	e28da080 	add	sl, sp, #128	; 0x80                           
    dc48:	e28d7084 	add	r7, sp, #132	; 0x84                           
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,        
                              const rtems_disk_device *dd)            
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
    dc4c:	e59f81d8 	ldr	r8, [pc, #472]	; de2c <rtems_bdbuf_purge_dev+0x1f8>
    dc50:	e58d7080 	str	r7, [sp, #128]	; 0x80                         
  head->previous = NULL;                                              
    dc54:	e58d5084 	str	r5, [sp, #132]	; 0x84                         
  tail->previous = head;                                              
    dc58:	e58da088 	str	sl, [sp, #136]	; 0x88                         
rtems_bdbuf_purge_dev (rtems_disk_device *dd)                         
{                                                                     
  rtems_chain_control purge_list;                                     
                                                                      
  rtems_chain_initialize_empty (&purge_list);                         
  rtems_bdbuf_lock_cache ();                                          
    dc5c:	ebfff752 	bl	b9ac <rtems_bdbuf_lock_cache>                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_read_ahead_reset (rtems_disk_device *dd)                  
{                                                                     
  rtems_bdbuf_read_ahead_cancel (dd);                                 
    dc60:	e1a00006 	mov	r0, r6                                        
    dc64:	ebfff808 	bl	bc8c <rtems_bdbuf_read_ahead_cancel>           
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,        
                              const rtems_disk_device *dd)            
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
    dc68:	e598403c 	ldr	r4, [r8, #60]	; 0x3c                          
                                                                      
static void                                                           
rtems_bdbuf_read_ahead_reset (rtems_disk_device *dd)                  
{                                                                     
  rtems_bdbuf_read_ahead_cancel (dd);                                 
  dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;          
    dc6c:	e3e03000 	mvn	r3, #0                                        
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
                                                                      
  *prev = NULL;                                                       
                                                                      
  while (cur != NULL)                                                 
    dc70:	e1540005 	cmp	r4, r5                                        
                                                                      
static void                                                           
rtems_bdbuf_read_ahead_reset (rtems_disk_device *dd)                  
{                                                                     
  rtems_bdbuf_read_ahead_cancel (dd);                                 
  dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;          
    dc74:	e586306c 	str	r3, [r6, #108]	; 0x6c                         
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
  rtems_bdbuf_buffer *cur = bdbuf_cache.tree;                         
                                                                      
  *prev = NULL;                                                       
    dc78:	e58d5000 	str	r5, [sp]                                      
                                                                      
  while (cur != NULL)                                                 
    dc7c:	0a00003f 	beq	dd80 <rtems_bdbuf_purge_dev+0x14c>            
static void                                                           
rtems_bdbuf_gather_for_purge (rtems_chain_control *purge_list,        
                              const rtems_disk_device *dd)            
{                                                                     
  rtems_bdbuf_buffer *stack [RTEMS_BDBUF_AVL_MAX_HEIGHT];             
  rtems_bdbuf_buffer **prev = stack;                                  
    dc80:	e1a0500d 	mov	r5, sp                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    dc84:	e3a0b006 	mov	fp, #6                                        
    dc88:	e3a0900a 	mov	r9, #10                                       
    dc8c:	ea000005 	b	dca8 <rtems_bdbuf_purge_dev+0x74>               
        default:                                                      
          rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);             
      }                                                               
    }                                                                 
                                                                      
    if (cur->avl.left != NULL)                                        
    dc90:	e5943008 	ldr	r3, [r4, #8]                                  
    dc94:	e3530000 	cmp	r3, #0                                        
    dc98:	0a000025 	beq	dd34 <rtems_bdbuf_purge_dev+0x100>            
    }                                                                 
    else if (cur->avl.right != NULL)                                  
    {                                                                 
      /* Right */                                                     
      ++prev;                                                         
      *prev = cur;                                                    
    dc9c:	e5854004 	str	r4, [r5, #4]                                  
    dca0:	e1a04003 	mov	r4, r3                                        
      cur = cur->avl.left;                                            
    }                                                                 
    else if (cur->avl.right != NULL)                                  
    {                                                                 
      /* Right */                                                     
      ++prev;                                                         
    dca4:	e2855004 	add	r5, r5, #4                                    
                                                                      
  *prev = NULL;                                                       
                                                                      
  while (cur != NULL)                                                 
  {                                                                   
    if (cur->dd == dd)                                                
    dca8:	e5943014 	ldr	r3, [r4, #20]                                 
    dcac:	e1560003 	cmp	r6, r3                                        
    dcb0:	1afffff6 	bne	dc90 <rtems_bdbuf_purge_dev+0x5c>             
    {                                                                 
      switch (cur->state)                                             
    dcb4:	e5943020 	ldr	r3, [r4, #32]                                 
    dcb8:	e353000a 	cmp	r3, #10                                       
    dcbc:	979ff103 	ldrls	pc, [pc, r3, lsl #2]                        
    dcc0:	ea000052 	b	de10 <rtems_bdbuf_purge_dev+0x1dc>              <== NOT EXECUTED
    dcc4:	0000dc90 	.word	0x0000dc90                                  <== NOT EXECUTED
    dcc8:	0000dc90 	.word	0x0000dc90                                  <== NOT EXECUTED
    dccc:	0000dd08 	.word	0x0000dd08                                  <== NOT EXECUTED
    dcd0:	0000de08 	.word	0x0000de08                                  <== NOT EXECUTED
    dcd4:	0000de08 	.word	0x0000de08                                  <== NOT EXECUTED
    dcd8:	0000de08 	.word	0x0000de08                                  <== NOT EXECUTED
    dcdc:	0000dc90 	.word	0x0000dc90                                  <== NOT EXECUTED
    dce0:	0000dcf8 	.word	0x0000dcf8                                  <== NOT EXECUTED
    dce4:	0000dcf0 	.word	0x0000dcf0                                  <== NOT EXECUTED
    dce8:	0000de00 	.word	0x0000de00                                  <== NOT EXECUTED
    dcec:	0000dc90 	.word	0x0000dc90                                  <== NOT EXECUTED
        case RTEMS_BDBUF_STATE_EMPTY:                                 
        case RTEMS_BDBUF_STATE_ACCESS_PURGED:                         
        case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                       
          break;                                                      
        case RTEMS_BDBUF_STATE_SYNC:                                  
          rtems_bdbuf_wake (&bdbuf_cache.transfer_waiters);           
    dcf0:	e59f0138 	ldr	r0, [pc, #312]	; de30 <rtems_bdbuf_purge_dev+0x1fc>
    dcf4:	ebfff7f6 	bl	bcd4 <rtems_bdbuf_wake>                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
    dcf8:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    dcfc:	e593200c 	ldr	r2, [r3, #12]                                 
    dd00:	e2422001 	sub	r2, r2, #1                                    
    dd04:	e583200c 	str	r2, [r3, #12]                                 
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    dd08:	e8940006 	ldm	r4, {r1, r2}                                  
  next->previous = previous;                                          
    dd0c:	e5812004 	str	r2, [r1, #4]                                  
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    dd10:	e59d3088 	ldr	r3, [sp, #136]	; 0x88                         
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
  previous->next = next;                                              
    dd14:	e5821000 	str	r1, [r2]                                      
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
    dd18:	e58d4088 	str	r4, [sp, #136]	; 0x88                         
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
    dd1c:	e5847000 	str	r7, [r4]                                      
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
    dd20:	e5843004 	str	r3, [r4, #4]                                  
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
    dd24:	e5834000 	str	r4, [r3]                                      
        default:                                                      
          rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);             
      }                                                               
    }                                                                 
                                                                      
    if (cur->avl.left != NULL)                                        
    dd28:	e5943008 	ldr	r3, [r4, #8]                                  
    dd2c:	e3530000 	cmp	r3, #0                                        
    dd30:	1affffd9 	bne	dc9c <rtems_bdbuf_purge_dev+0x68>             
      /* Left */                                                      
      ++prev;                                                         
      *prev = cur;                                                    
      cur = cur->avl.left;                                            
    }                                                                 
    else if (cur->avl.right != NULL)                                  
    dd34:	e594300c 	ldr	r3, [r4, #12]                                 
    dd38:	e3530000 	cmp	r3, #0                                        
    dd3c:	1affffd6 	bne	dc9c <rtems_bdbuf_purge_dev+0x68>             
      *prev = cur;                                                    
      cur = cur->avl.right;                                           
    }                                                                 
    else                                                              
    {                                                                 
      while (*prev != NULL                                            
    dd40:	e5953000 	ldr	r3, [r5]                                      
    dd44:	e3530000 	cmp	r3, #0                                        
    dd48:	0a00000c 	beq	dd80 <rtems_bdbuf_purge_dev+0x14c>            
    dd4c:	e1a02005 	mov	r2, r5                                        
    dd50:	ea000001 	b	dd5c <rtems_bdbuf_purge_dev+0x128>              
    dd54:	e1a04003 	mov	r4, r3                                        
    dd58:	e1a03001 	mov	r3, r1                                        
             && (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
    dd5c:	e593100c 	ldr	r1, [r3, #12]                                 
    dd60:	e1510004 	cmp	r1, r4                                        
      *prev = cur;                                                    
      cur = cur->avl.right;                                           
    }                                                                 
    else                                                              
    {                                                                 
      while (*prev != NULL                                            
    dd64:	e1a05002 	mov	r5, r2                                        
             && (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
    dd68:	0a000001 	beq	dd74 <rtems_bdbuf_purge_dev+0x140>            
    dd6c:	e3510000 	cmp	r1, #0                                        
    dd70:	1a00002b 	bne	de24 <rtems_bdbuf_purge_dev+0x1f0>            
      *prev = cur;                                                    
      cur = cur->avl.right;                                           
    }                                                                 
    else                                                              
    {                                                                 
      while (*prev != NULL                                            
    dd74:	e5321004 	ldr	r1, [r2, #-4]!                                
    dd78:	e3510000 	cmp	r1, #0                                        
    dd7c:	1afffff4 	bne	dd54 <rtems_bdbuf_purge_dev+0x120>            
             && (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
    dd80:	e59d4080 	ldr	r4, [sp, #128]	; 0x80                         
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    dd84:	e59f90a8 	ldr	r9, [pc, #168]	; de34 <rtems_bdbuf_purge_dev+0x200>
  while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)   
  {                                                                   
    rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;             
                                                                      
    if (bd->waiters == 0)                                             
      wake_buffer_waiters = true;                                     
    dd88:	e3a02000 	mov	r2, #0                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    dd8c:	e3a06001 	mov	r6, #1                                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    dd90:	e1540007 	cmp	r4, r7                                        
    dd94:	0a000011 	beq	dde0 <rtems_bdbuf_purge_dev+0x1ac>            
                                                                      
  while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)   
  {                                                                   
    rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;             
                                                                      
    if (bd->waiters == 0)                                             
    dd98:	e5945024 	ldr	r5, [r4, #36]	; 0x24                          
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
    dd9c:	e5943000 	ldr	r3, [r4]                                      
    dda0:	e3550000 	cmp	r5, #0                                        
                                                                      
  head->next = new_first;                                             
    dda4:	e58d3080 	str	r3, [sp, #128]	; 0x80                         
  new_first->previous = head;                                         
    dda8:	e583a004 	str	sl, [r3, #4]                                  
    ddac:	1a000010 	bne	ddf4 <rtems_bdbuf_purge_dev+0x1c0>            
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    ddb0:	e5846020 	str	r6, [r4, #32]                                 
{                                                                     
  rtems_bdbuf_make_empty (bd);                                        
                                                                      
  if (bd->waiters == 0)                                               
  {                                                                   
    rtems_bdbuf_remove_from_tree (bd);                                
    ddb4:	e1a00004 	mov	r0, r4                                        
    ddb8:	ebfff81c 	bl	be30 <rtems_bdbuf_remove_from_tree>            
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    ddbc:	e5983040 	ldr	r3, [r8, #64]	; 0x40                          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    ddc0:	e5845020 	str	r5, [r4, #32]                                 
  after_node->next      = the_node;                                   
    ddc4:	e5884040 	str	r4, [r8, #64]	; 0x40                          
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    ddc8:	e8840208 	stm	r4, {r3, r9}                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    ddcc:	e5834004 	str	r4, [r3, #4]                                  
    ddd0:	e59d4080 	ldr	r4, [sp, #128]	; 0x80                         
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    ddd4:	e1540007 	cmp	r4, r7                                        
  while ((node = rtems_chain_get_unprotected (purge_list)) != NULL)   
  {                                                                   
    rtems_bdbuf_buffer *bd = (rtems_bdbuf_buffer *) node;             
                                                                      
    if (bd->waiters == 0)                                             
      wake_buffer_waiters = true;                                     
    ddd8:	e3a02001 	mov	r2, #1                                        
    dddc:	1affffed 	bne	dd98 <rtems_bdbuf_purge_dev+0x164>            
                                                                      
    rtems_bdbuf_discard_buffer (bd);                                  
  }                                                                   
                                                                      
  if (wake_buffer_waiters)                                            
    dde0:	e3520000 	cmp	r2, #0                                        
    dde4:	1a00000b 	bne	de18 <rtems_bdbuf_purge_dev+0x1e4>            
  rtems_chain_initialize_empty (&purge_list);                         
  rtems_bdbuf_lock_cache ();                                          
  rtems_bdbuf_read_ahead_reset (dd);                                  
  rtems_bdbuf_gather_for_purge (&purge_list, dd);                     
  rtems_bdbuf_purge_list (&purge_list);                               
  rtems_bdbuf_unlock_cache ();                                        
    dde8:	ebfff708 	bl	ba10 <rtems_bdbuf_unlock_cache>                
}                                                                     
    ddec:	e28dd08c 	add	sp, sp, #140	; 0x8c                           
    ddf0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    ddf4:	e5846020 	str	r6, [r4, #32]                                 
    ddf8:	e1a04003 	mov	r4, r3                                        
    ddfc:	eaffffe3 	b	dd90 <rtems_bdbuf_purge_dev+0x15c>              
    de00:	e5849020 	str	r9, [r4, #32]                                 
    de04:	eaffffa1 	b	dc90 <rtems_bdbuf_purge_dev+0x5c>               
    de08:	e584b020 	str	fp, [r4, #32]                                 
    de0c:	eaffff9f 	b	dc90 <rtems_bdbuf_purge_dev+0x5c>               
        case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                          
        case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                       
          rtems_bdbuf_set_state (cur, RTEMS_BDBUF_STATE_ACCESS_PURGED);
          break;                                                      
        default:                                                      
          rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_STATE_11);             
    de10:	e3a00017 	mov	r0, #23                                       <== NOT EXECUTED
    de14:	ebfff6e0 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      
    rtems_bdbuf_discard_buffer (bd);                                  
  }                                                                   
                                                                      
  if (wake_buffer_waiters)                                            
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
    de18:	e59f0018 	ldr	r0, [pc, #24]	; de38 <rtems_bdbuf_purge_dev+0x204>
    de1c:	ebfff7ac 	bl	bcd4 <rtems_bdbuf_wake>                        
    de20:	eafffff0 	b	dde8 <rtems_bdbuf_purge_dev+0x1b4>              
      cur = cur->avl.right;                                           
    }                                                                 
    else                                                              
    {                                                                 
      while (*prev != NULL                                            
             && (cur == (*prev)->avl.right || (*prev)->avl.right == NULL))
    de24:	e1a04001 	mov	r4, r1                                        
    de28:	eaffff9e 	b	dca8 <rtems_bdbuf_purge_dev+0x74>               
                                                                      

0000d7a0 <rtems_bdbuf_read>: rtems_status_code rtems_bdbuf_read (rtems_disk_device *dd, rtems_blkdev_bnum block, rtems_bdbuf_buffer **bd_ptr) {
    d7a0:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    d7a4:	e1a04000 	mov	r4, r0                                        
    d7a8:	e1a05001 	mov	r5, r1                                        
    d7ac:	e1a06002 	mov	r6, r2                                        
  rtems_status_code     sc = RTEMS_SUCCESSFUL;                        
  rtems_bdbuf_buffer   *bd = NULL;                                    
  rtems_blkdev_bnum     media_block;                                  
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    d7b0:	ebfff87d 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
    d7b4:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    d7b8:	e1550003 	cmp	r5, r3                                        
rtems_bdbuf_read (rtems_disk_device   *dd,                            
                  rtems_blkdev_bnum    block,                         
                  rtems_bdbuf_buffer **bd_ptr)                        
{                                                                     
  rtems_status_code     sc = RTEMS_SUCCESSFUL;                        
  rtems_bdbuf_buffer   *bd = NULL;                                    
    d7bc:	23a07000 	movcs	r7, #0                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
  }                                                                   
  else                                                                
  {                                                                   
    sc = RTEMS_INVALID_ID;                                            
    d7c0:	23a08004 	movcs	r8, #4                                      
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
    d7c4:	2a00002e 	bcs	d884 <rtems_bdbuf_read+0xe4>                  
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    d7c8:	e5941030 	ldr	r1, [r4, #48]	; 0x30                          
    d7cc:	e3510000 	cmp	r1, #0                                        
    return block << dd->block_to_media_block_shift;                   
    d7d0:	a1a01115 	lslge	r1, r5, r1                                  
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    d7d4:	ba00002e 	blt	d894 <rtems_bdbuf_read+0xf4>                  
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
    d7d8:	e5943018 	ldr	r3, [r4, #24]                                 
  {                                                                   
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:read: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n", 
              media_block + dd->start, block, (unsigned) dd->dev);    
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
    d7dc:	e1a00004 	mov	r0, r4                                        
    d7e0:	e0811003 	add	r1, r1, r3                                    
    d7e4:	ebfffb8a 	bl	c614 <rtems_bdbuf_get_buffer_for_access>       
    d7e8:	e1a07000 	mov	r7, r0                                        
    switch (bd->state)                                                
    d7ec:	e5900020 	ldr	r0, [r0, #32]                                 
    d7f0:	e3500002 	cmp	r0, #2                                        
    d7f4:	0a000005 	beq	d810 <rtems_bdbuf_read+0x70>                  
    d7f8:	e3500007 	cmp	r0, #7                                        
    d7fc:	0a000052 	beq	d94c <rtems_bdbuf_read+0x1ac>                 
    d800:	e3500001 	cmp	r0, #1                                        
    d804:	0a000033 	beq	d8d8 <rtems_bdbuf_read+0x138>                 
        {                                                             
          bd = NULL;                                                  
        }                                                             
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_4);
    d808:	e3a01010 	mov	r1, #16                                       <== NOT EXECUTED
    d80c:	ebfff87c 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
    switch (bd->state)                                                
    {                                                                 
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
    d810:	e5943044 	ldr	r3, [r4, #68]	; 0x44                          
    d814:	e2833001 	add	r3, r3, #1                                    
    d818:	e5843044 	str	r3, [r4, #68]	; 0x44                          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    d81c:	e3a03003 	mov	r3, #3                                        
    d820:	e5873020 	str	r3, [r7, #32]                                 
    d824:	e3a08000 	mov	r8, #0                                        
                                                                      
static void                                                           
rtems_bdbuf_check_read_ahead_trigger (rtems_disk_device *dd,          
                                      rtems_blkdev_bnum  block)       
{                                                                     
  if (bdbuf_cache.read_ahead_task != 0                                
    d828:	e59fa150 	ldr	sl, [pc, #336]	; d980 <rtems_bdbuf_read+0x1e0>
    d82c:	e59a0084 	ldr	r0, [sl, #132]	; 0x84                         
    d830:	e3500000 	cmp	r0, #0                                        
    d834:	0a000012 	beq	d884 <rtems_bdbuf_read+0xe4>                  
      && dd->read_ahead.trigger == block                              
    d838:	e594306c 	ldr	r3, [r4, #108]	; 0x6c                         
    d83c:	e1550003 	cmp	r5, r3                                        
    d840:	1a00000f 	bne	d884 <rtems_bdbuf_read+0xe4>                  
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
    d844:	e5943064 	ldr	r3, [r4, #100]	; 0x64                         
    d848:	e3530000 	cmp	r3, #0                                        
    d84c:	1a00000c 	bne	d884 <rtems_bdbuf_read+0xe4>                  
    d850:	e5943068 	ldr	r3, [r4, #104]	; 0x68                         
    d854:	e3530000 	cmp	r3, #0                                        
    d858:	1a000009 	bne	d884 <rtems_bdbuf_read+0xe4>                  
      && !rtems_bdbuf_is_read_ahead_active (dd))                      
  {                                                                   
    rtems_status_code sc;                                             
    rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;       
                                                                      
    if (rtems_chain_is_empty (chain))                                 
    d85c:	e59a3088 	ldr	r3, [sl, #136]	; 0x88                         
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail(         
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return &the_chain->Tail.Node;                                       
    d860:	e28a508c 	add	r5, sl, #140	; 0x8c                           
    d864:	e1530005 	cmp	r3, r5                                        
    d868:	0a00003e 	beq	d968 <rtems_bdbuf_read+0x1c8>                 
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    d86c:	e59a3090 	ldr	r3, [sl, #144]	; 0x90                         
                             RTEMS_BDBUF_READ_AHEAD_WAKE_UP);         
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RA_WAKE_UP);             
    }                                                                 
                                                                      
    rtems_chain_append_unprotected (chain, &dd->read_ahead.node);     
    d870:	e2842064 	add	r2, r4, #100	; 0x64                           
                                                                      
  the_node->next = tail;                                              
    d874:	e5845064 	str	r5, [r4, #100]	; 0x64                         
  tail->previous = the_node;                                          
    d878:	e58a2090 	str	r2, [sl, #144]	; 0x90                         
  old_last->next = the_node;                                          
    d87c:	e5832000 	str	r2, [r3]                                      
  the_node->previous = old_last;                                      
    d880:	e5843068 	str	r3, [r4, #104]	; 0x68                         
    }                                                                 
                                                                      
    rtems_bdbuf_check_read_ahead_trigger (dd, block);                 
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d884:	ebfff861 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  *bd_ptr = bd;                                                       
    d888:	e5867000 	str	r7, [r6]                                      
                                                                      
  return sc;                                                          
}                                                                     
    d88c:	e1a00008 	mov	r0, r8                                        
    d890:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
    d894:	e5940024 	ldr	r0, [r4, #36]	; 0x24                          <== NOT EXECUTED
    d898:	e0887095 	umull	r7, r8, r5, r0                              <== NOT EXECUTED
    d89c:	e5942020 	ldr	r2, [r4, #32]                                 <== NOT EXECUTED
    d8a0:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    d8a4:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    d8a8:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
    d8ac:	eb003a10 	bl	1c0f4 <__udivdi3>                              <== NOT EXECUTED
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
    d8b0:	e5943018 	ldr	r3, [r4, #24]                                 <== NOT EXECUTED
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
    d8b4:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
  {                                                                   
    if (rtems_bdbuf_tracer)                                           
      printf ("bdbuf:read: %" PRIu32 " (%" PRIu32 ") (dev = %08x)\n", 
              media_block + dd->start, block, (unsigned) dd->dev);    
                                                                      
    bd = rtems_bdbuf_get_buffer_for_access (dd, media_block);         
    d8b8:	e0811003 	add	r1, r1, r3                                    <== NOT EXECUTED
    d8bc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d8c0:	ebfffb53 	bl	c614 <rtems_bdbuf_get_buffer_for_access>       <== NOT EXECUTED
    d8c4:	e1a07000 	mov	r7, r0                                        <== NOT EXECUTED
    switch (bd->state)                                                
    d8c8:	e5900020 	ldr	r0, [r0, #32]                                 <== NOT EXECUTED
    d8cc:	e3500002 	cmp	r0, #2                                        <== NOT EXECUTED
    d8d0:	1affffc8 	bne	d7f8 <rtems_bdbuf_read+0x58>                  <== NOT EXECUTED
    d8d4:	eaffffcd 	b	d810 <rtems_bdbuf_read+0x70>                    <== NOT EXECUTED
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
    d8d8:	e5943048 	ldr	r3, [r4, #72]	; 0x48                          
                                                                      
static void                                                           
rtems_bdbuf_set_read_ahead_trigger (rtems_disk_device *dd,            
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
    d8dc:	e594206c 	ldr	r2, [r4, #108]	; 0x6c                         
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
    d8e0:	e2833001 	add	r3, r3, #1                                    
                                                                      
static void                                                           
rtems_bdbuf_set_read_ahead_trigger (rtems_disk_device *dd,            
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
    d8e4:	e1550002 	cmp	r5, r2                                        
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
    d8e8:	e5843048 	str	r3, [r4, #72]	; 0x48                          
                                                                      
static void                                                           
rtems_bdbuf_set_read_ahead_trigger (rtems_disk_device *dd,            
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
    d8ec:	0a000005 	beq	d908 <rtems_bdbuf_read+0x168>                 
  {                                                                   
    rtems_bdbuf_read_ahead_cancel (dd);                               
    d8f0:	e1a00004 	mov	r0, r4                                        
    d8f4:	ebfff8e4 	bl	bc8c <rtems_bdbuf_read_ahead_cancel>           
    dd->read_ahead.trigger = block + 1;                               
    d8f8:	e2852001 	add	r2, r5, #1                                    
    dd->read_ahead.next = block + 2;                                  
    d8fc:	e2853002 	add	r3, r5, #2                                    
                                    rtems_blkdev_bnum  block)         
{                                                                     
  if (dd->read_ahead.trigger != block)                                
  {                                                                   
    rtems_bdbuf_read_ahead_cancel (dd);                               
    dd->read_ahead.trigger = block + 1;                               
    d900:	e584206c 	str	r2, [r4, #108]	; 0x6c                         
    dd->read_ahead.next = block + 2;                                  
    d904:	e5843070 	str	r3, [r4, #112]	; 0x70                         
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_MODIFIED);
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
        rtems_bdbuf_set_read_ahead_trigger (dd, block);               
        sc = rtems_bdbuf_execute_read_request (dd, bd, 1);            
    d908:	e1a01007 	mov	r1, r7                                        
    d90c:	e1a00004 	mov	r0, r4                                        
    d910:	e3a02001 	mov	r2, #1                                        
    d914:	ebfffdc7 	bl	d038 <rtems_bdbuf_execute_read_request>        
        if (sc == RTEMS_SUCCESSFUL)                                   
    d918:	e2508000 	subs	r8, r0, #0                                   
          rtems_chain_extract_unprotected (&bd->link);                
          rtems_bdbuf_group_obtain (bd);                              
        }                                                             
        else                                                          
        {                                                             
          bd = NULL;                                                  
    d91c:	13a07000 	movne	r7, #0                                      
        break;                                                        
      case RTEMS_BDBUF_STATE_EMPTY:                                   
        ++dd->stats.read_misses;                                      
        rtems_bdbuf_set_read_ahead_trigger (dd, block);               
        sc = rtems_bdbuf_execute_read_request (dd, bd, 1);            
        if (sc == RTEMS_SUCCESSFUL)                                   
    d920:	1affffc0 	bne	d828 <rtems_bdbuf_read+0x88>                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
    d924:	e5973028 	ldr	r3, [r7, #40]	; 0x28                          
    d928:	e593000c 	ldr	r0, [r3, #12]                                 
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    d92c:	e8970006 	ldm	r7, {r1, r2}                                  
    d930:	e2800001 	add	r0, r0, #1                                    
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    d934:	e3a0c003 	mov	ip, #3                                        
    d938:	e587c020 	str	ip, [r7, #32]                                 
  next->previous = previous;                                          
    d93c:	e5812004 	str	r2, [r1, #4]                                  
  previous->next = next;                                              
    d940:	e5821000 	str	r1, [r2]                                      
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_obtain (rtems_bdbuf_buffer *bd)                     
{                                                                     
  ++bd->group->users;                                                 
    d944:	e583000c 	str	r0, [r3, #12]                                 
    d948:	eaffffb6 	b	d828 <rtems_bdbuf_read+0x88>                    
      case RTEMS_BDBUF_STATE_CACHED:                                  
        ++dd->stats.read_hits;                                        
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_ACCESS_CACHED);  
        break;                                                        
      case RTEMS_BDBUF_STATE_MODIFIED:                                
        ++dd->stats.read_hits;                                        
    d94c:	e5943044 	ldr	r3, [r4, #68]	; 0x44                          
    d950:	e2833001 	add	r3, r3, #1                                    
    d954:	e5843044 	str	r3, [r4, #68]	; 0x44                          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    d958:	e3a03004 	mov	r3, #4                                        
    d95c:	e3a08000 	mov	r8, #0                                        
    d960:	e5873020 	str	r3, [r7, #32]                                 
    d964:	eaffffaf 	b	d828 <rtems_bdbuf_read+0x88>                    
    rtems_status_code sc;                                             
    rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;       
                                                                      
    if (rtems_chain_is_empty (chain))                                 
    {                                                                 
      sc = rtems_event_send (bdbuf_cache.read_ahead_task,             
    d968:	e3a01002 	mov	r1, #2                                        
    d96c:	ebffe741 	bl	7678 <rtems_event_send>                        
                             RTEMS_BDBUF_READ_AHEAD_WAKE_UP);         
      if (sc != RTEMS_SUCCESSFUL)                                     
    d970:	e3500000 	cmp	r0, #0                                        
    d974:	0affffbc 	beq	d86c <rtems_bdbuf_read+0xcc>                  
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_RA_WAKE_UP);             
    d978:	e3a00007 	mov	r0, #7                                        <== NOT EXECUTED
    d97c:	ebfff806 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000bc8c <rtems_bdbuf_read_ahead_cancel>: */ RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain( const Chain_Node *node ) { return (node->next == NULL) && (node->previous == NULL);
    bc8c:	e5903064 	ldr	r3, [r0, #100]	; 0x64                         
    bc90:	e3530000 	cmp	r3, #0                                        
    bc94:	e5902068 	ldr	r2, [r0, #104]	; 0x68                         
    bc98:	0a000005 	beq	bcb4 <rtems_bdbuf_read_ahead_cancel+0x28>     
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    bc9c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
    bca0:	e5832004 	str	r2, [r3, #4]                                  <== NOT EXECUTED
  previous->next = next;                                              
    bca4:	e5823000 	str	r3, [r2]                                      <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    bca8:	e5801068 	str	r1, [r0, #104]	; 0x68                         <== NOT EXECUTED
    bcac:	e5801064 	str	r1, [r0, #100]	; 0x64                         <== NOT EXECUTED
    bcb0:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_node_off_chain(                   
  const Chain_Node *node                                              
)                                                                     
{                                                                     
  return (node->next == NULL) && (node->previous == NULL);            
    bcb4:	e3520000 	cmp	r2, #0                                        
    bcb8:	012fff1e 	bxeq	lr                                           
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    bcbc:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
    bcc0:	e5832004 	str	r2, [r3, #4]                                  <== NOT EXECUTED
  previous->next = next;                                              
    bcc4:	e5823000 	str	r3, [r2]                                      <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    bcc8:	e5801068 	str	r1, [r0, #104]	; 0x68                         <== NOT EXECUTED
    bccc:	e5801064 	str	r1, [r0, #100]	; 0x64                         <== NOT EXECUTED
    bcd0:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

0000d124 <rtems_bdbuf_read_ahead_task>: return sc; } static rtems_task rtems_bdbuf_read_ahead_task (rtems_task_argument arg) {
    d124:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;         
                                                                      
  while (bdbuf_cache.read_ahead_enabled)                              
    d128:	e59f7128 	ldr	r7, [pc, #296]	; d258 <rtems_bdbuf_read_ahead_task+0x134>
    d12c:	e5d73094 	ldrb	r3, [r7, #148]	; 0x94                        
    d130:	e3530000 	cmp	r3, #0                                        
    d134:	0a000036 	beq	d214 <rtems_bdbuf_read_ahead_task+0xf0>       
    d138:	e287808c 	add	r8, r7, #140	; 0x8c                           
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    d13c:	e1a0a007 	mov	sl, r7                                        
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
    d140:	e2879088 	add	r9, r7, #136	; 0x88                           
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    d144:	e3a06000 	mov	r6, #0                                        
  {                                                                   
    rtems_chain_node *node;                                           
                                                                      
    rtems_bdbuf_wait_for_event (RTEMS_BDBUF_READ_AHEAD_WAKE_UP);      
    d148:	e3a00002 	mov	r0, #2                                        
    d14c:	ebfffaa8 	bl	bbf4 <rtems_bdbuf_wait_for_event>              
    rtems_bdbuf_lock_cache ();                                        
    d150:	ebfffa15 	bl	b9ac <rtems_bdbuf_lock_cache>                  
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    d154:	e5974088 	ldr	r4, [r7, #136]	; 0x88                         
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    d158:	e1540008 	cmp	r4, r8                                        
    d15c:	0a000027 	beq	d200 <rtems_bdbuf_read_ahead_task+0xdc>       
                                                                      
    while ((node = rtems_chain_get_unprotected (chain)) != NULL)      
    {                                                                 
      rtems_disk_device *dd = (rtems_disk_device *)                   
        ((char *) node - offsetof (rtems_disk_device, read_ahead.node));
      rtems_blkdev_bnum block = dd->read_ahead.next;                  
    d160:	e594500c 	ldr	r5, [r4, #12]                                 
                             rtems_blkdev_bnum        block,          
                             rtems_blkdev_bnum       *media_block_ptr)
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (block < dd->block_count)                                        
    d164:	e514203c 	ldr	r2, [r4, #-60]	; 0x3c                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
    d168:	e5943000 	ldr	r3, [r4]                                      
    d16c:	e1550002 	cmp	r5, r2                                        
                                                                      
  head->next = new_first;                                             
    d170:	e58a3088 	str	r3, [sl, #136]	; 0x88                         
  new_first->previous = head;                                         
    d174:	e5839004 	str	r9, [r3, #4]                                  
    d178:	2a000028 	bcs	d220 <rtems_bdbuf_read_ahead_task+0xfc>       
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    d17c:	e5141034 	ldr	r1, [r4, #-52]	; 0x34                         
    d180:	e3510000 	cmp	r1, #0                                        
    return block << dd->block_to_media_block_shift;                   
    d184:	a1a01115 	lslge	r1, r5, r1                                  
}                                                                     
                                                                      
static rtems_blkdev_bnum                                              
rtems_bdbuf_media_block (const rtems_disk_device *dd, rtems_blkdev_bnum block)
{                                                                     
  if (dd->block_to_media_block_shift >= 0)                            
    d188:	ba000029 	blt	d234 <rtems_bdbuf_read_ahead_task+0x110>      
    /*                                                                
     * Compute the media block number. Drivers work with media block number not
     * the block number a BD may have as this depends on the block size set by
     * the user.                                                      
     */                                                               
    *media_block_ptr = rtems_bdbuf_media_block (dd, block) + dd->start;
    d18c:	e514304c 	ldr	r3, [r4, #-76]	; 0x4c                         
    rtems_bdbuf_wait_for_event (RTEMS_BDBUF_READ_AHEAD_WAKE_UP);      
    rtems_bdbuf_lock_cache ();                                        
                                                                      
    while ((node = rtems_chain_get_unprotected (chain)) != NULL)      
    {                                                                 
      rtems_disk_device *dd = (rtems_disk_device *)                   
    d190:	e244b064 	sub	fp, r4, #100	; 0x64                           
                                                                      
      rtems_chain_set_off_chain (&dd->read_ahead.node);               
                                                                      
      if (sc == RTEMS_SUCCESSFUL)                                     
      {                                                               
        rtems_bdbuf_buffer *bd =                                      
    d194:	e0811003 	add	r1, r1, r3                                    
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    d198:	e5846004 	str	r6, [r4, #4]                                  
    d19c:	e5846000 	str	r6, [r4]                                      
    d1a0:	e1a0000b 	mov	r0, fp                                        
    d1a4:	ebfffcf9 	bl	c590 <rtems_bdbuf_get_buffer_for_read_ahead>   
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
    d1a8:	e2501000 	subs	r1, r0, #0                                   
    d1ac:	0affffe8 	beq	d154 <rtems_bdbuf_read_ahead_task+0x30>       
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
    d1b0:	e59fc0a4 	ldr	ip, [pc, #164]	; d25c <rtems_bdbuf_read_ahead_task+0x138>
        rtems_bdbuf_buffer *bd =                                      
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
    d1b4:	e514203c 	ldr	r2, [r4, #-60]	; 0x3c                         
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
    d1b8:	e59c3000 	ldr	r3, [ip]                                      
        rtems_bdbuf_buffer *bd =                                      
          rtems_bdbuf_get_buffer_for_read_ahead (dd, media_block);    
                                                                      
        if (bd != NULL)                                               
        {                                                             
          uint32_t transfer_count = dd->block_count - block;          
    d1bc:	e0652002 	rsb	r2, r5, r2                                    
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
                                                                      
          if (transfer_count >= max_transfer_count)                   
    d1c0:	e1520003 	cmp	r2, r3                                        
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
    d1c4:	208520a3 	addcs	r2, r5, r3, lsr #1                          
            dd->read_ahead.next = block + transfer_count;             
          }                                                           
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
    d1c8:	33e03000 	mvncc	r3, #0                                      
                                                                      
          if (transfer_count >= max_transfer_count)                   
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
            dd->read_ahead.next = block + transfer_count;             
    d1cc:	20835005 	addcs	r5, r3, r5                                  
          uint32_t max_transfer_count = bdbuf_config.max_read_ahead_blocks;
                                                                      
          if (transfer_count >= max_transfer_count)                   
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
    d1d0:	25842008 	strcs	r2, [r4, #8]                                
            dd->read_ahead.next = block + transfer_count;             
          }                                                           
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
    d1d4:	35843008 	strcc	r3, [r4, #8]                                
                                                                      
          if (transfer_count >= max_transfer_count)                   
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
            dd->read_ahead.next = block + transfer_count;             
    d1d8:	21a02003 	movcs	r2, r3                                      
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
          }                                                           
                                                                      
          ++dd->stats.read_ahead_transfers;                           
    d1dc:	e5143018 	ldr	r3, [r4, #-24]                                
    d1e0:	e2833001 	add	r3, r3, #1                                    
                                                                      
          if (transfer_count >= max_transfer_count)                   
          {                                                           
            transfer_count = max_transfer_count;                      
            dd->read_ahead.trigger = block + transfer_count / 2;      
            dd->read_ahead.next = block + transfer_count;             
    d1e4:	2584500c 	strcs	r5, [r4, #12]                               
          else                                                        
          {                                                           
            dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;
          }                                                           
                                                                      
          ++dd->stats.read_ahead_transfers;                           
    d1e8:	e5043018 	str	r3, [r4, #-24]                                
          rtems_bdbuf_execute_read_request (dd, bd, transfer_count);  
    d1ec:	e1a0000b 	mov	r0, fp                                        
    d1f0:	ebffff90 	bl	d038 <rtems_bdbuf_execute_read_request>        
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    d1f4:	e5974088 	ldr	r4, [r7, #136]	; 0x88                         
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    d1f8:	e1540008 	cmp	r4, r8                                        
    d1fc:	1affffd7 	bne	d160 <rtems_bdbuf_read_ahead_task+0x3c>       
      {                                                               
        dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;    
      }                                                               
    }                                                                 
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
    d200:	ebfffa02 	bl	ba10 <rtems_bdbuf_unlock_cache>                
static rtems_task                                                     
rtems_bdbuf_read_ahead_task (rtems_task_argument arg)                 
{                                                                     
  rtems_chain_control *chain = &bdbuf_cache.read_ahead_chain;         
                                                                      
  while (bdbuf_cache.read_ahead_enabled)                              
    d204:	e59f004c 	ldr	r0, [pc, #76]	; d258 <rtems_bdbuf_read_ahead_task+0x134>
    d208:	e5d03094 	ldrb	r3, [r0, #148]	; 0x94                        
    d20c:	e3530000 	cmp	r3, #0                                        
    d210:	1affffcc 	bne	d148 <rtems_bdbuf_read_ahead_task+0x24>       
    }                                                                 
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
  }                                                                   
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
    d214:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
    d218:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          <== NOT EXECUTED
    }                                                                 
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
  }                                                                   
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
    d21c:	eaffeb09 	b	7e48 <rtems_task_delete>                        <== NOT EXECUTED
          rtems_bdbuf_execute_read_request (dd, bd, transfer_count);  
        }                                                             
      }                                                               
      else                                                            
      {                                                               
        dd->read_ahead.trigger = RTEMS_DISK_READ_AHEAD_NO_TRIGGER;    
    d220:	e3e03000 	mvn	r3, #0                                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    d224:	e5846004 	str	r6, [r4, #4]                                  
    d228:	e5846000 	str	r6, [r4]                                      
    d22c:	e5843008 	str	r3, [r4, #8]                                  
    d230:	eaffffc7 	b	d154 <rtems_bdbuf_read_ahead_task+0x30>         
    /*                                                                
     * Change the block number for the block size to the block number for the media
     * block size. We have to use 64bit maths. There is no short cut here.
     */                                                               
    return (rtems_blkdev_bnum)                                        
      ((((uint64_t) block) * dd->block_size) / dd->media_block_size); 
    d234:	e5140040 	ldr	r0, [r4, #-64]	; 0x40                         <== NOT EXECUTED
    d238:	e08cb590 	umull	fp, ip, r0, r5                              <== NOT EXECUTED
    d23c:	e5142044 	ldr	r2, [r4, #-68]	; 0x44                         <== NOT EXECUTED
    d240:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
    d244:	e1a0100c 	mov	r1, ip                                        <== NOT EXECUTED
    d248:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    d24c:	eb003ba8 	bl	1c0f4 <__udivdi3>                              <== NOT EXECUTED
    d250:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    d254:	eaffffcc 	b	d18c <rtems_bdbuf_read_ahead_task+0x68>         <== NOT EXECUTED
                                                                      

0000d984 <rtems_bdbuf_release>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_bdbuf_release (rtems_bdbuf_buffer *bd) {
    d984:	e92d4010 	push	{r4, lr}                                     
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    d988:	e2504000 	subs	r4, r0, #0                                   
    d98c:	0a000009 	beq	d9b8 <rtems_bdbuf_release+0x34>               
  if (rtems_bdbuf_tracer)                                             
  {                                                                   
    printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);              
    rtems_bdbuf_show_users (kind, bd);                                
  }                                                                   
  rtems_bdbuf_lock_cache();                                           
    d990:	ebfff805 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release");           
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
    d994:	e5940020 	ldr	r0, [r4, #32]                                 
    d998:	e2403003 	sub	r3, r0, #3                                    
    d99c:	e3530003 	cmp	r3, #3                                        
    d9a0:	979ff103 	ldrls	pc, [pc, r3, lsl #2]                        
    d9a4:	ea00000a 	b	d9d4 <rtems_bdbuf_release+0x50>                 <== NOT EXECUTED
    d9a8:	0000d9dc 	.word	0x0000d9dc                                  <== NOT EXECUTED
    d9ac:	0000da30 	.word	0x0000da30                                  <== NOT EXECUTED
    d9b0:	0000d9c0 	.word	0x0000d9c0                                  <== NOT EXECUTED
    d9b4:	0000d9c0 	.word	0x0000d9c0                                  <== NOT EXECUTED
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    return RTEMS_INVALID_ADDRESS;                                     
    d9b8:	e3a00009 	mov	r0, #9                                        <== NOT EXECUTED
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    d9bc:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
    case RTEMS_BDBUF_STATE_ACCESS_CACHED:                             
      rtems_bdbuf_add_to_lru_list_after_access (bd);                  
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
    d9c0:	e1a00004 	mov	r0, r4                                        
    d9c4:	ebfffba5 	bl	c860 <rtems_bdbuf_discard_buffer_after_access> 
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    d9c8:	ebfff810 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    d9cc:	e3a00000 	mov	r0, #0                                        
    d9d0:	e8bd8010 	pop	{r4, pc}                                      
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_0);
    d9d4:	e3a0100e 	mov	r1, #14                                       <== NOT EXECUTED
    d9d8:	ebfff809 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
    d9dc:	e5942028 	ldr	r2, [r4, #40]	; 0x28                          
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    d9e0:	e59f005c 	ldr	r0, [pc, #92]	; da44 <rtems_bdbuf_release+0xc0>
    d9e4:	e592c00c 	ldr	ip, [r2, #12]                                 
rtems_bdbuf_add_to_lru_list_after_access (rtems_bdbuf_buffer *bd)     
{                                                                     
  rtems_bdbuf_group_release (bd);                                     
  rtems_bdbuf_make_cached_and_add_to_lru_list (bd);                   
                                                                      
  if (bd->waiters)                                                    
    d9e8:	e594e024 	ldr	lr, [r4, #36]	; 0x24                          
    d9ec:	e5903048 	ldr	r3, [r0, #72]	; 0x48                          
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_group_release (rtems_bdbuf_buffer *bd)                    
{                                                                     
  --bd->group->users;                                                 
    d9f0:	e24cc001 	sub	ip, ip, #1                                    
    d9f4:	e582c00c 	str	ip, [r2, #12]                                 
                                                                      
  the_node->next = tail;                                              
    d9f8:	e2801044 	add	r1, r0, #68	; 0x44                            
rtems_bdbuf_add_to_lru_list_after_access (rtems_bdbuf_buffer *bd)     
{                                                                     
  rtems_bdbuf_group_release (bd);                                     
  rtems_bdbuf_make_cached_and_add_to_lru_list (bd);                   
                                                                      
  if (bd->waiters)                                                    
    d9fc:	e35e0000 	cmp	lr, #0                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    da00:	e3a02002 	mov	r2, #2                                        
    da04:	e5842020 	str	r2, [r4, #32]                                 
    da08:	e5841000 	str	r1, [r4]                                      
  tail->previous = the_node;                                          
    da0c:	e5804048 	str	r4, [r0, #72]	; 0x48                          
  old_last->next = the_node;                                          
    da10:	e5834000 	str	r4, [r3]                                      
{                                                                     
  rtems_bdbuf_group_release (bd);                                     
  rtems_bdbuf_make_cached_and_add_to_lru_list (bd);                   
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
    da14:	12800064 	addne	r0, r0, #100	; 0x64                         
  else                                                                
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
    da18:	02800074 	addeq	r0, r0, #116	; 0x74                         
  the_node->previous = old_last;                                      
    da1c:	e5843004 	str	r3, [r4, #4]                                  
    da20:	ebfff8ab 	bl	bcd4 <rtems_bdbuf_wake>                        
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    da24:	ebfff7f9 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    da28:	e3a00000 	mov	r0, #0                                        
    da2c:	e8bd8010 	pop	{r4, pc}                                      
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
    da30:	e1a00004 	mov	r0, r4                                        
    da34:	ebfff8b0 	bl	bcfc <rtems_bdbuf_add_to_modified_list_after_access>
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    da38:	ebfff7f4 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    da3c:	e3a00000 	mov	r0, #0                                        
    da40:	e8bd8010 	pop	{r4, pc}                                      
                                                                      

0000da48 <rtems_bdbuf_release_modified>: } rtems_status_code rtems_bdbuf_release_modified (rtems_bdbuf_buffer *bd) {
    da48:	e92d4010 	push	{r4, lr}                                     
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    da4c:	e2504000 	subs	r4, r0, #0                                   
    da50:	0a00000c 	beq	da88 <rtems_bdbuf_release_modified+0x40>      
  if (rtems_bdbuf_tracer)                                             
  {                                                                   
    printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);              
    rtems_bdbuf_show_users (kind, bd);                                
  }                                                                   
  rtems_bdbuf_lock_cache();                                           
    da54:	ebfff7d4 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release modified");  
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
    da58:	e5940020 	ldr	r0, [r4, #32]                                 
    da5c:	e3500003 	cmp	r0, #3                                        
    da60:	2a000001 	bcs	da6c <rtems_bdbuf_release_modified+0x24>      
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_6);
    da64:	e3a01012 	mov	r1, #18                                       <== NOT EXECUTED
    da68:	ebfff7e5 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release modified");  
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
    da6c:	e3500005 	cmp	r0, #5                                        
    da70:	8a000006 	bhi	da90 <rtems_bdbuf_release_modified+0x48>      
  {                                                                   
    case RTEMS_BDBUF_STATE_ACCESS_CACHED:                             
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
    da74:	e1a00004 	mov	r0, r4                                        
    da78:	ebfff89f 	bl	bcfc <rtems_bdbuf_add_to_modified_list_after_access>
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    da7c:	ebfff7e3 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    da80:	e3a00000 	mov	r0, #0                                        
    da84:	e8bd8010 	pop	{r4, pc}                                      
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    return RTEMS_INVALID_ADDRESS;                                     
    da88:	e3a00009 	mov	r0, #9                                        <== NOT EXECUTED
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    da8c:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "release modified");  
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
    da90:	e3500006 	cmp	r0, #6                                        
    da94:	1afffff2 	bne	da64 <rtems_bdbuf_release_modified+0x1c>      
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_add_to_modified_list_after_access (bd);             
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
    da98:	e1a00004 	mov	r0, r4                                        
    da9c:	ebfffb6f 	bl	c860 <rtems_bdbuf_discard_buffer_after_access> 
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    daa0:	ebfff7da 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    daa4:	e3a00000 	mov	r0, #0                                        
    daa8:	e8bd8010 	pop	{r4, pc}                                      
                                                                      

0000be30 <rtems_bdbuf_remove_from_tree>: return bdbuf_cache.buffer_waiters.count; } static void rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd) {
    be30:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
                       const rtems_bdbuf_buffer* node)                
{                                                                     
  const rtems_disk_device *dd = node->dd;                             
  rtems_blkdev_bnum block = node->block;                              
                                                                      
  rtems_bdbuf_buffer*  p = *root;                                     
    be34:	e59fa354 	ldr	sl, [pc, #852]	; c190 <rtems_bdbuf_remove_from_tree+0x360>
  return bdbuf_cache.buffer_waiters.count;                            
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
{                                                                     
    be38:	e24dd080 	sub	sp, sp, #128	; 0x80                           
                       const rtems_bdbuf_buffer* node)                
{                                                                     
  const rtems_disk_device *dd = node->dd;                             
  rtems_blkdev_bnum block = node->block;                              
                                                                      
  rtems_bdbuf_buffer*  p = *root;                                     
    be3c:	e59a403c 	ldr	r4, [sl, #60]	; 0x3c                          
  return bdbuf_cache.buffer_waiters.count;                            
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
{                                                                     
    be40:	e1a07000 	mov	r7, r0                                        
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
    be44:	e3a01000 	mov	r1, #0                                        
    be48:	e1a0000d 	mov	r0, sp                                        
    be4c:	e3a02080 	mov	r2, #128	; 0x80                               
static int                                                            
rtems_bdbuf_avl_remove(rtems_bdbuf_buffer**      root,                
                       const rtems_bdbuf_buffer* node)                
{                                                                     
  const rtems_disk_device *dd = node->dd;                             
  rtems_blkdev_bnum block = node->block;                              
    be50:	e2875014 	add	r5, r7, #20                                   
    be54:	e8950120 	ldm	r5, {r5, r8}                                  
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
    be58:	eb001a23 	bl	126ec <memset>                                 
                                                                      
  while (p != NULL)                                                   
    be5c:	e3540000 	cmp	r4, #0                                        
  rtems_bdbuf_buffer*  buf_stack[RTEMS_BDBUF_AVL_MAX_HEIGHT];         
  rtems_bdbuf_buffer** buf_prev = buf_stack;                          
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
    be60:	e1a0600d 	mov	r6, sp                                        
                                                                      
  while (p != NULL)                                                   
    be64:	0a000012 	beq	beb4 <rtems_bdbuf_remove_from_tree+0x84>      
    be68:	e1a0300d 	mov	r3, sp                                        
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
    be6c:	e3a00001 	mov	r0, #1                                        
      p = p->avl.right;                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
    be70:	e3e0c000 	mvn	ip, #0                                        
    be74:	ea000005 	b	be90 <rtems_bdbuf_remove_from_tree+0x60>        
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    be78:	e1550001 	cmp	r5, r1                                        
    be7c:	0a00000f 	beq	bec0 <rtems_bdbuf_remove_from_tree+0x90>      
      p->avl.cache = 1;                                               
      p = p->avl.right;                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    {                                                                 
      p->avl.cache = -1;                                              
    be80:	e5c4c010 	strb	ip, [r4, #16]                                
      p = p->avl.left;                                                
    be84:	e5944008 	ldr	r4, [r4, #8]                                  
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
    be88:	e3540000 	cmp	r4, #0                                        
    be8c:	0a000008 	beq	beb4 <rtems_bdbuf_remove_from_tree+0x84>      
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    be90:	e5941014 	ldr	r1, [r4, #20]                                 
    be94:	e1510005 	cmp	r1, r5                                        
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
    be98:	e1a02003 	mov	r2, r3                                        
  {                                                                   
    *buf_prev++ = p;                                                  
    be9c:	e4834004 	str	r4, [r3], #4                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
    bea0:	2afffff4 	bcs	be78 <rtems_bdbuf_remove_from_tree+0x48>      
        || ((p->dd == dd) && (p->block < block)))                     
    {                                                                 
      p->avl.cache = 1;                                               
    bea4:	e5c40010 	strb	r0, [r4, #16]                                
      p = p->avl.right;                                               
    bea8:	e594400c 	ldr	r4, [r4, #12]                                 
                                                                      
  bool modified = false;                                              
                                                                      
  memset (buf_stack, 0, sizeof(buf_stack));                           
                                                                      
  while (p != NULL)                                                   
    beac:	e3540000 	cmp	r4, #0                                        
    beb0:	1afffff6 	bne	be90 <rtems_bdbuf_remove_from_tree+0x60>      
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
{                                                                     
  if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0)            
    rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
    beb4:	e5970020 	ldr	r0, [r7, #32]                                 <== NOT EXECUTED
    beb8:	e3a0101b 	mov	r1, #27                                       <== NOT EXECUTED
    bebc:	ebfffed0 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
  while (p != NULL)                                                   
  {                                                                   
    *buf_prev++ = p;                                                  
                                                                      
    if (((uintptr_t) p->dd < (uintptr_t) dd)                          
        || ((p->dd == dd) && (p->block < block)))                     
    bec0:	e5941018 	ldr	r1, [r4, #24]                                 
    bec4:	e1580001 	cmp	r8, r1                                        
    bec8:	8afffff5 	bhi	bea4 <rtems_bdbuf_remove_from_tree+0x74>      
    {                                                                 
      p->avl.cache = 1;                                               
      p = p->avl.right;                                               
    }                                                                 
    else if ((p->dd != dd) || (p->block != block))                    
    becc:	1affffeb 	bne	be80 <rtems_bdbuf_remove_from_tree+0x50>      
  {                                                                   
    p = NULL;                                                         
  }                                                                   
                                                                      
  /* at this moment q - is a node to delete, p is q's parent */       
  if (q->avl.right == NULL)                                           
    bed0:	e594800c 	ldr	r8, [r4, #12]                                 
  }                                                                   
                                                                      
  q = p;                                                              
                                                                      
  buf_prev--;                                                         
  if (buf_prev > buf_stack)                                           
    bed4:	e1520006 	cmp	r2, r6                                        
  {                                                                   
    p = *(buf_prev - 1);                                              
    bed8:	85139008 	ldrhi	r9, [r3, #-8]                               
  }                                                                   
  else                                                                
  {                                                                   
    p = NULL;                                                         
    bedc:	93a09000 	movls	r9, #0                                      
  }                                                                   
                                                                      
  /* at this moment q - is a node to delete, p is q's parent */       
  if (q->avl.right == NULL)                                           
    bee0:	e3580000 	cmp	r8, #0                                        
    bee4:	0a00009b 	beq	c158 <rtems_bdbuf_remove_from_tree+0x328>     
  {                                                                   
    rtems_bdbuf_buffer **t;                                           
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    bee8:	e5981008 	ldr	r1, [r8, #8]                                  
    beec:	e3510000 	cmp	r1, #0                                        
    {                                                                 
      r->avl.left = q->avl.left;                                      
      r->avl.bal = q->avl.bal;                                        
      r->avl.cache = 1;                                               
      *buf_prev++ = q = r;                                            
    bef0:	11a05003 	movne	r5, r3                                      
  {                                                                   
    rtems_bdbuf_buffer **t;                                           
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    bef4:	11a00008 	movne	r0, r8                                      
                                                                      
      while (s->avl.left != NULL)                                     
      {                                                               
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
    bef8:	13e07000 	mvnne	r7, #0                                      
  {                                                                   
    rtems_bdbuf_buffer **t;                                           
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    befc:	1a000002 	bne	bf0c <rtems_bdbuf_remove_from_tree+0xdc>      
    bf00:	ea000098 	b	c168 <rtems_bdbuf_remove_from_tree+0x338>       
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
    bf04:	e1a00001 	mov	r0, r1                                        
    bf08:	e1a0100c 	mov	r1, ip                                        
      {                                                               
        *buf_prev++ = r = s;                                          
    bf0c:	e1a02005 	mov	r2, r5                                        
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
    bf10:	e591c008 	ldr	ip, [r1, #8]                                  
      {                                                               
        *buf_prev++ = r = s;                                          
    bf14:	e4820004 	str	r0, [r2], #4                                  
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
    bf18:	e35c0000 	cmp	ip, #0                                        
      {                                                               
        *buf_prev++ = r = s;                                          
    bf1c:	e1a05002 	mov	r5, r2                                        
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
    bf20:	e5c07010 	strb	r7, [r0, #16]                                
    else                                                              
    {                                                                 
      t = buf_prev++;                                                 
      s = r;                                                          
                                                                      
      while (s->avl.left != NULL)                                     
    bf24:	1afffff6 	bne	bf04 <rtems_bdbuf_remove_from_tree+0xd4>      
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
    bf28:	e5947008 	ldr	r7, [r4, #8]                                  
      r->avl.left = s->avl.right;                                     
    bf2c:	e591500c 	ldr	r5, [r1, #12]                                 
      s->avl.right = q->avl.right;                                    
      s->avl.bal = q->avl.bal;                                        
    bf30:	e5d4c011 	ldrb	ip, [r4, #17]                                
        *buf_prev++ = r = s;                                          
        s = r->avl.left;                                              
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
    bf34:	e5817008 	str	r7, [r1, #8]                                  
      r->avl.left = s->avl.right;                                     
    bf38:	e5805008 	str	r5, [r0, #8]                                  
      s->avl.right = q->avl.right;                                    
      s->avl.bal = q->avl.bal;                                        
      s->avl.cache = 1;                                               
    bf3c:	e3a00001 	mov	r0, #1                                        
        r->avl.cache = -1;                                            
      }                                                               
                                                                      
      s->avl.left = q->avl.left;                                      
      r->avl.left = s->avl.right;                                     
      s->avl.right = q->avl.right;                                    
    bf40:	e581800c 	str	r8, [r1, #12]                                 
      s->avl.bal = q->avl.bal;                                        
    bf44:	e5c1c011 	strb	ip, [r1, #17]                                
      s->avl.cache = 1;                                               
    bf48:	e5c10010 	strb	r0, [r1, #16]                                
                                                                      
      *t = q = s;                                                     
    bf4c:	e5031004 	str	r1, [r3, #-4]                                 
    }                                                                 
  }                                                                   
                                                                      
  if (p != NULL)                                                      
    bf50:	e3590000 	cmp	r9, #0                                        
      p->avl.right = q;                                               
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    *root = q;                                                        
    bf54:	058a103c 	streq	r1, [sl, #60]	; 0x3c                        
                                                                      
      *t = q = s;                                                     
    }                                                                 
  }                                                                   
                                                                      
  if (p != NULL)                                                      
    bf58:	0a000003 	beq	bf6c <rtems_bdbuf_remove_from_tree+0x13c>     
  {                                                                   
    if (p->avl.cache == -1)                                           
    bf5c:	e1d931d0 	ldrsb	r3, [r9, #16]                               
    bf60:	e3730001 	cmn	r3, #1                                        
    {                                                                 
      p->avl.left = q;                                                
    }                                                                 
    else                                                              
    {                                                                 
      p->avl.right = q;                                               
    bf64:	1589100c 	strne	r1, [r9, #12]                               
                                                                      
  if (p != NULL)                                                      
  {                                                                   
    if (p->avl.cache == -1)                                           
    {                                                                 
      p->avl.left = q;                                                
    bf68:	05891008 	streq	r1, [r9, #8]                                
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
  {                                                                   
    if (buf_prev > buf_stack)                                         
    bf6c:	e1520006 	cmp	r2, r6                                        
    bf70:	9a000032 	bls	c040 <rtems_bdbuf_remove_from_tree+0x210>     
      p->avl.right = q;                                               
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    *root = q;                                                        
    bf74:	e5323004 	ldr	r3, [r2, #-4]!                                
{                                                                     
  return bdbuf_cache.buffer_waiters.count;                            
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
    bf78:	e2664003 	rsb	r4, r6, #3                                    
    bf7c:	e0844002 	add	r4, r4, r2                                    
    bf80:	e3c44003 	bic	r4, r4, #3                                    
    bf84:	e1d301d0 	ldrsb	r0, [r3, #16]                               
    bf88:	e0644002 	rsb	r4, r4, r2                                    
        case +1:                                                      
          p->avl.bal = 0;                                             
          break;                                                      
                                                                      
        case  0:                                                      
          p->avl.bal = -1;                                            
    bf8c:	e3e07000 	mvn	r7, #0                                        
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
      {                                                               
        case +1:                                                      
          p->avl.bal = 0;                                             
    bf90:	e3a06000 	mov	r6, #0                                        
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
    bf94:	e3a08001 	mov	r8, #1                                        
    bf98:	ea000017 	b	bffc <rtems_bdbuf_remove_from_tree+0x1cc>       
    bf9c:	e1d301d1 	ldrsb	r0, [r3, #17]                               
    bfa0:	e3500000 	cmp	r0, #0                                        
        case +1:                                                      
          p->avl.bal = 0;                                             
          break;                                                      
                                                                      
        case  0:                                                      
          p->avl.bal = -1;                                            
    bfa4:	05c37011 	strbeq	r7, [r3, #17]                              
    bfa8:	01a01003 	moveq	r1, r3                                      
          modified = false;                                           
    bfac:	01a0c000 	moveq	ip, r0                                      
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
    bfb0:	0a000008 	beq	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>     
    bfb4:	e3500001 	cmp	r0, #1                                        
      {                                                               
        case +1:                                                      
          p->avl.bal = 0;                                             
    bfb8:	05c36011 	strbeq	r6, [r3, #17]                              
    bfbc:	01a01003 	moveq	r1, r3                                      
    bfc0:	01a0c000 	moveq	ip, r0                                      
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      /* rebalance right branch */                                    
      switch (p->avl.bal)                                             
    bfc4:	0a000003 	beq	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>     
    bfc8:	e3700001 	cmn	r0, #1                                        
    bfcc:	0a00001d 	beq	c048 <rtems_bdbuf_remove_from_tree+0x218>     
    bfd0:	e1a01003 	mov	r1, r3                                        <== NOT EXECUTED
    bfd4:	e3a0c001 	mov	ip, #1                                        <== NOT EXECUTED
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
                                                                      
    if (buf_prev > buf_stack)                                         
    bfd8:	e1520004 	cmp	r2, r4                                        
    bfdc:	0a000016 	beq	c03c <rtems_bdbuf_remove_from_tree+0x20c>     
    {                                                                 
      q = *(buf_prev - 1);                                            
    bfe0:	e5323004 	ldr	r3, [r2, #-4]!                                
                                                                      
      if (q->avl.cache == -1)                                         
    bfe4:	e1d301d0 	ldrsb	r0, [r3, #16]                               
    bfe8:	e3700001 	cmn	r0, #1                                        
      {                                                               
        q->avl.left = p;                                              
    bfec:	05831008 	streq	r1, [r3, #8]                                
      }                                                               
      else                                                            
      {                                                               
        q->avl.right = p;                                             
    bff0:	1583100c 	strne	r1, [r3, #12]                               
    *root = q;                                                        
  }                                                                   
                                                                      
  modified = true;                                                    
                                                                      
  while (modified)                                                    
    bff4:	e35c0000 	cmp	ip, #0                                        
    bff8:	0a000010 	beq	c040 <rtems_bdbuf_remove_from_tree+0x210>     
    else                                                              
    {                                                                 
      break;                                                          
    }                                                                 
                                                                      
    if (p->avl.cache == -1)                                           
    bffc:	e3700001 	cmn	r0, #1                                        
    c000:	1affffe5 	bne	bf9c <rtems_bdbuf_remove_from_tree+0x16c>     
    {                                                                 
      /* rebalance left branch */                                     
      switch (p->avl.bal)                                             
    c004:	e1d3c1d1 	ldrsb	ip, [r3, #17]                               
    c008:	e35c0000 	cmp	ip, #0                                        
      {                                                               
        case -1:                                                      
          p->avl.bal = 0;                                             
          break;                                                      
        case  0:                                                      
          p->avl.bal = 1;                                             
    c00c:	05c38011 	strbeq	r8, [r3, #17]                              
    c010:	01a01003 	moveq	r1, r3                                      
    }                                                                 
                                                                      
    if (p->avl.cache == -1)                                           
    {                                                                 
      /* rebalance left branch */                                     
      switch (p->avl.bal)                                             
    c014:	0affffef 	beq	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>     
    c018:	e35c0001 	cmp	ip, #1                                        
    c01c:	0a000022 	beq	c0ac <rtems_bdbuf_remove_from_tree+0x27c>     
    c020:	e37c0001 	cmn	ip, #1                                        
      {                                                               
        case -1:                                                      
          p->avl.bal = 0;                                             
    c024:	05c36011 	strbeq	r6, [r3, #17]                              
    c028:	01a01003 	moveq	r1, r3                                      
    c02c:	03a0c001 	moveq	ip, #1                                      
    }                                                                 
                                                                      
    if (p->avl.cache == -1)                                           
    {                                                                 
      /* rebalance left branch */                                     
      switch (p->avl.bal)                                             
    c030:	1affffe6 	bne	bfd0 <rtems_bdbuf_remove_from_tree+0x1a0>     
        default:                                                      
          break;                                                      
      }                                                               
    }                                                                 
                                                                      
    if (buf_prev > buf_stack)                                         
    c034:	e1520004 	cmp	r2, r4                                        
    c038:	1affffe8 	bne	bfe0 <rtems_bdbuf_remove_from_tree+0x1b0>     
        q->avl.right = p;                                             
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      *root = p;                                                      
    c03c:	e58a103c 	str	r1, [sl, #60]	; 0x3c                          
static void                                                           
rtems_bdbuf_remove_from_tree (rtems_bdbuf_buffer *bd)                 
{                                                                     
  if (rtems_bdbuf_avl_remove (&bdbuf_cache.tree, bd) != 0)            
    rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_TREE_RM);
}                                                                     
    c040:	e28dd080 	add	sp, sp, #128	; 0x80                           
    c044:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
          p->avl.bal = -1;                                            
          modified = false;                                           
          break;                                                      
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
    c048:	e5935008 	ldr	r5, [r3, #8]                                  
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
    c04c:	e5d5c011 	ldrb	ip, [r5, #17]                                
    c050:	e1a01c0c 	lsl	r1, ip, #24                                   
    c054:	e3510000 	cmp	r1, #0                                        
          {                                                           
            p->avl.left = p1->avl.right;                              
    c058:	e595100c 	ldr	r1, [r5, #12]                                 
          break;                                                      
                                                                      
        case -1:                                                      
          p1 = p->avl.left;                                           
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
    c05c:	da00001f 	ble	c0e0 <rtems_bdbuf_remove_from_tree+0x2b0>     
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
    c060:	e1d1c1d1 	ldrsb	ip, [r1, #17]                               
    c064:	e37c0001 	cmn	ip, #1                                        
    c068:	13a0c000 	movne	ip, #0                                      
    c06c:	03a0c001 	moveq	ip, #1                                      
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
    c070:	e5910008 	ldr	r0, [r1, #8]                                  
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
    c074:	e5c3c011 	strb	ip, [r3, #17]                                
          }                                                           
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
    c078:	e585000c 	str	r0, [r5, #12]                                 
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
    c07c:	e1d1c1d1 	ldrsb	ip, [r1, #17]                               
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
    c080:	e591000c 	ldr	r0, [r1, #12]                                 
            p2->avl.right = p;                                        
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
    c084:	e35c0001 	cmp	ip, #1                                        
    c088:	03a0c0ff 	moveq	ip, #255	; 0xff                             
    c08c:	13a0c000 	movne	ip, #0                                      
    c090:	e5c5c011 	strb	ip, [r5, #17]                                
          else /* double LR-turn */                                   
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
    c094:	e5815008 	str	r5, [r1, #8]                                  
            p->avl.left = p2->avl.right;                              
            p2->avl.right = p;                                        
    c098:	e581300c 	str	r3, [r1, #12]                                 
          {                                                           
            p2 = p1->avl.right;                                       
                                                                      
            p1->avl.right = p2->avl.left;                             
            p2->avl.left = p1;                                        
            p->avl.left = p2->avl.right;                              
    c09c:	e5830008 	str	r0, [r3, #8]                                  
                                                                      
            if (p2->avl.bal == -1) p->avl.bal = 1; else p->avl.bal = 0;
            if (p2->avl.bal == +1) p1->avl.bal = -1; else p1->avl.bal = 0;
                                                                      
            p = p2;                                                   
            p2->avl.bal = 0;                                          
    c0a0:	e5c16011 	strb	r6, [r1, #17]                                
    c0a4:	e3a0c001 	mov	ip, #1                                        
    c0a8:	eaffffca 	b	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>       
          p->avl.bal = 1;                                             
          modified = false;                                           
          break;                                                      
                                                                      
        case +1:                                                      
          p1 = p->avl.right;                                          
    c0ac:	e593100c 	ldr	r1, [r3, #12]                                 
                                                                      
          if (p1->avl.bal >= 0) /* simple RR-turn */                  
    c0b0:	e5d15011 	ldrb	r5, [r1, #17]                                
    c0b4:	e3150080 	tst	r5, #128	; 0x80                               
    c0b8:	1a000012 	bne	c108 <rtems_bdbuf_remove_from_tree+0x2d8>     
          {                                                           
            p->avl.right = p1->avl.left;                              
    c0bc:	e5919008 	ldr	r9, [r1, #8]                                  
            p1->avl.left = p;                                         
                                                                      
            if (p1->avl.bal == 0)                                     
    c0c0:	e3550000 	cmp	r5, #0                                        
              p1->avl.bal = -1;                                       
              modified = false;                                       
            }                                                         
            else                                                      
            {                                                         
              p->avl.bal = 0;                                         
    c0c4:	15c36011 	strbne	r6, [r3, #17]                              
        case +1:                                                      
          p1 = p->avl.right;                                          
                                                                      
          if (p1->avl.bal >= 0) /* simple RR-turn */                  
          {                                                           
            p->avl.right = p1->avl.left;                              
    c0c8:	e583900c 	str	r9, [r3, #12]                                 
            p1->avl.left = p;                                         
    c0cc:	e5813008 	str	r3, [r1, #8]                                  
                                                                      
            if (p1->avl.bal == 0)                                     
            {                                                         
              p1->avl.bal = -1;                                       
    c0d0:	05c10011 	strbeq	r0, [r1, #17]                              
              modified = false;                                       
    c0d4:	01a0c005 	moveq	ip, r5                                      
            }                                                         
            else                                                      
            {                                                         
              p->avl.bal = 0;                                         
              p1->avl.bal = 0;                                        
    c0d8:	15c16011 	strbne	r6, [r1, #17]                              
    c0dc:	eaffffbd 	b	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>       
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
          {                                                           
            p->avl.left = p1->avl.right;                              
            p1->avl.right = p;                                        
            if (p1->avl.bal == 0)                                     
    c0e0:	e35c0000 	cmp	ip, #0                                        
        case -1:                                                      
          p1 = p->avl.left;                                           
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
          {                                                           
            p->avl.left = p1->avl.right;                              
    c0e4:	e5831008 	str	r1, [r3, #8]                                  
              p1->avl.bal = 1;                                        
              modified = false;                                       
            }                                                         
            else                                                      
            {                                                         
              p->avl.bal = 0;                                         
    c0e8:	15c36011 	strbne	r6, [r3, #17]                              
          p1 = p->avl.left;                                           
                                                                      
          if (p1->avl.bal <= 0) /* simple LL-turn */                  
          {                                                           
            p->avl.left = p1->avl.right;                              
            p1->avl.right = p;                                        
    c0ec:	e585300c 	str	r3, [r5, #12]                                 
            if (p1->avl.bal == 0)                                     
            {                                                         
              p1->avl.bal = 1;                                        
    c0f0:	05c58011 	strbeq	r8, [r5, #17]                              
    c0f4:	01a01005 	moveq	r1, r5                                      
              modified = false;                                       
            }                                                         
            else                                                      
            {                                                         
              p->avl.bal = 0;                                         
              p1->avl.bal = 0;                                        
    c0f8:	11a01005 	movne	r1, r5                                      
    c0fc:	15c56011 	strbne	r6, [r5, #17]                              
    c100:	13a0c001 	movne	ip, #1                                      
    c104:	eaffffb3 	b	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>       
            }                                                         
            p = p1;                                                   
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
    c108:	e5910008 	ldr	r0, [r1, #8]                                  
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
    c10c:	e1d091d1 	ldrsb	r9, [r0, #17]                               
    c110:	e3590001 	cmp	r9, #1                                        
    c114:	03a090ff 	moveq	r9, #255	; 0xff                             
    c118:	13a09000 	movne	r9, #0                                      
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
    c11c:	e590500c 	ldr	r5, [r0, #12]                                 
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
    c120:	e5c39011 	strb	r9, [r3, #17]                                
          }                                                           
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
    c124:	e5815008 	str	r5, [r1, #8]                                  
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
    c128:	e1d091d1 	ldrsb	r9, [r0, #17]                               
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
    c12c:	e5905008 	ldr	r5, [r0, #8]                                  
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
    c130:	e3790001 	cmn	r9, #1                                        
    c134:	13a09000 	movne	r9, #0                                      
    c138:	03a09001 	moveq	r9, #1                                      
          else /* double RL-turn */                                   
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
    c13c:	e580100c 	str	r1, [r0, #12]                                 
            p->avl.right = p2->avl.left;                              
            p2->avl.left = p;                                         
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
    c140:	e5c19011 	strb	r9, [r1, #17]                                
          {                                                           
            p2 = p1->avl.left;                                        
                                                                      
            p1->avl.left = p2->avl.right;                             
            p2->avl.right = p1;                                       
            p->avl.right = p2->avl.left;                              
    c144:	e583500c 	str	r5, [r3, #12]                                 
            p2->avl.left = p;                                         
    c148:	e5803008 	str	r3, [r0, #8]                                  
                                                                      
            if (p2->avl.bal == +1) p->avl.bal = -1; else p->avl.bal = 0;
            if (p2->avl.bal == -1) p1->avl.bal = 1; else p1->avl.bal = 0;
                                                                      
            p = p2;                                                   
            p2->avl.bal = 0;                                          
    c14c:	e5c06011 	strb	r6, [r0, #17]                                
    c150:	e1a01000 	mov	r1, r0                                        
    c154:	eaffff9f 	b	bfd8 <rtems_bdbuf_remove_from_tree+0x1a8>       
  }                                                                   
                                                                      
  /* at this moment q - is a node to delete, p is q's parent */       
  if (q->avl.right == NULL)                                           
  {                                                                   
    r = q->avl.left;                                                  
    c158:	e5941008 	ldr	r1, [r4, #8]                                  
    if (r != NULL)                                                    
    c15c:	e3510000 	cmp	r1, #0                                        
    {                                                                 
      r->avl.bal = 0;                                                 
    c160:	15c18011 	strbne	r8, [r1, #17]                              
    c164:	eaffff79 	b	bf50 <rtems_bdbuf_remove_from_tree+0x120>       
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
      r->avl.bal = q->avl.bal;                                        
    c168:	e5d42011 	ldrb	r2, [r4, #17]                                
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
    c16c:	e5941008 	ldr	r1, [r4, #8]                                  
      r->avl.bal = q->avl.bal;                                        
    c170:	e5c82011 	strb	r2, [r8, #17]                                
      r->avl.cache = 1;                                               
    c174:	e3a02001 	mov	r2, #1                                        
                                                                      
    r = q->avl.right;                                                 
                                                                      
    if (r->avl.left == NULL)                                          
    {                                                                 
      r->avl.left = q->avl.left;                                      
    c178:	e5881008 	str	r1, [r8, #8]                                  
      r->avl.bal = q->avl.bal;                                        
      r->avl.cache = 1;                                               
    c17c:	e5c82010 	strb	r2, [r8, #16]                                
      *buf_prev++ = q = r;                                            
    c180:	e5038004 	str	r8, [r3, #-4]                                 
    c184:	e1a02003 	mov	r2, r3                                        
    c188:	e1a01008 	mov	r1, r8                                        
    c18c:	eaffff6f 	b	bf50 <rtems_bdbuf_remove_from_tree+0x120>       
                                                                      

0000baf4 <rtems_bdbuf_restore_preemption>: return prev_mode; } static void rtems_bdbuf_restore_preemption (rtems_mode prev_mode) {
    baf4:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
    baf8:	e24dd004 	sub	sp, sp, #4                                    
    bafc:	e28d2004 	add	r2, sp, #4                                    
    bb00:	e5220004 	str	r0, [r2, #-4]!                                
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_task_mode (prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode); 
    bb04:	e59f101c 	ldr	r1, [pc, #28]	; bb28 <rtems_bdbuf_restore_preemption+0x34>
    bb08:	e1a0200d 	mov	r2, sp                                        
    bb0c:	eb000fac 	bl	f9c4 <rtems_task_mode>                         
  if (sc != RTEMS_SUCCESSFUL)                                         
    bb10:	e3500000 	cmp	r0, #0                                        
    bb14:	1a000001 	bne	bb20 <rtems_bdbuf_restore_preemption+0x2c>    
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_RST);                
}                                                                     
    bb18:	e28dd004 	add	sp, sp, #4                                    
    bb1c:	e8bd8000 	pop	{pc}                                          
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_task_mode (prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode); 
  if (sc != RTEMS_SUCCESSFUL)                                         
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_PREEMPT_RST);                
    bb20:	e3a00006 	mov	r0, #6                                        <== NOT EXECUTED
    bb24:	ebffff9c 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000b82c <rtems_bdbuf_swapout_modified_processing>: rtems_chain_control* chain, rtems_chain_control* transfer, bool sync_active, bool update_timers, uint32_t timer_delta) {
    b82c:	e92d0ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp}             
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    b830:	e491c004 	ldr	ip, [r1], #4                                  
  if (!rtems_chain_is_empty (chain))                                  
    b834:	e15c0001 	cmp	ip, r1                                        
                                         rtems_chain_control* chain,  
                                         rtems_chain_control* transfer,
                                         bool                 sync_active,
                                         bool                 update_timers,
                                         uint32_t             timer_delta)
{                                                                     
    b838:	e5dd9020 	ldrb	r9, [sp, #32]                                
  if (!rtems_chain_is_empty (chain))                                  
    b83c:	0a00002a 	beq	b8ec <rtems_bdbuf_swapout_modified_processing+0xc0>
    node = node->next;                                                
                                                                      
    /*                                                                
     * A sync active with no valid dev means sync all.                
     */                                                               
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
    b840:	e3530000 	cmp	r3, #0                                        
      sync_all = true;                                                
    else                                                              
      sync_all = false;                                               
    b844:	01a07003 	moveq	r7, r3                                      
    node = node->next;                                                
                                                                      
    /*                                                                
     * A sync active with no valid dev means sync all.                
     */                                                               
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
    b848:	0a000002 	beq	b858 <rtems_bdbuf_swapout_modified_processing+0x2c>
 * @param update_timers If true update the timers.                    
 * @param timer_delta It update_timers is true update the timers by this
 *                    amount.                                         
 */                                                                   
static void                                                           
rtems_bdbuf_swapout_modified_processing (rtems_disk_device  **dd_ptr, 
    b84c:	e5907000 	ldr	r7, [r0]                                      
    b850:	e2777001 	rsbs	r7, r7, #1                                   
    b854:	33a07000 	movcc	r7, #0                                      
}                                                                     
                                                                      
static bool                                                           
rtems_bdbuf_has_buffer_waiters (void)                                 
{                                                                     
  return bdbuf_cache.buffer_waiters.count;                            
    b858:	e59f4138 	ldr	r4, [pc, #312]	; b998 <rtems_bdbuf_swapout_modified_processing+0x16c>
    b85c:	e594b074 	ldr	fp, [r4, #116]	; 0x74                         
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
          || rtems_bdbuf_has_buffer_waiters ())                       
        bd->hold_timer = 0;                                           
    b860:	e3a0a000 	mov	sl, #0                                        
    b864:	e1a08003 	mov	r8, r3                                        
       * or someone waits for a buffer written force all the timers to 0.
       *                                                              
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
    b868:	e3570000 	cmp	r7, #0                                        
    b86c:	1a000034 	bne	b944 <rtems_bdbuf_swapout_modified_processing+0x118>
    b870:	e3580000 	cmp	r8, #0                                        
    b874:	0a000003 	beq	b888 <rtems_bdbuf_swapout_modified_processing+0x5c>
    b878:	e5903000 	ldr	r3, [r0]                                      
    b87c:	e59c4014 	ldr	r4, [ip, #20]                                 
    b880:	e1530004 	cmp	r3, r4                                        
    b884:	0a000040 	beq	b98c <rtems_bdbuf_swapout_modified_processing+0x160>
          || rtems_bdbuf_has_buffer_waiters ())                       
    b888:	e35b0000 	cmp	fp, #0                                        
    b88c:	1a00002c 	bne	b944 <rtems_bdbuf_swapout_modified_processing+0x118>
        bd->hold_timer = 0;                                           
                                                                      
      if (bd->hold_timer)                                             
    b890:	e59c302c 	ldr	r3, [ip, #44]	; 0x2c                          
    b894:	e3530000 	cmp	r3, #0                                        
    b898:	0a000008 	beq	b8c0 <rtems_bdbuf_swapout_modified_processing+0x94>
      {                                                               
        if (update_timers)                                            
    b89c:	e3590000 	cmp	r9, #0                                        
    b8a0:	0a00000e 	beq	b8e0 <rtems_bdbuf_swapout_modified_processing+0xb4>
        {                                                             
          if (bd->hold_timer > timer_delta)                           
    b8a4:	e59d4024 	ldr	r4, [sp, #36]	; 0x24                          
    b8a8:	e1530004 	cmp	r3, r4                                        
    b8ac:	9a000032 	bls	b97c <rtems_bdbuf_swapout_modified_processing+0x150>
            bd->hold_timer -= timer_delta;                            
    b8b0:	e0643003 	rsb	r3, r4, r3                                    
          else                                                        
            bd->hold_timer = 0;                                       
        }                                                             
                                                                      
        if (bd->hold_timer)                                           
    b8b4:	e3530000 	cmp	r3, #0                                        
      if (bd->hold_timer)                                             
      {                                                               
        if (update_timers)                                            
        {                                                             
          if (bd->hold_timer > timer_delta)                           
            bd->hold_timer -= timer_delta;                            
    b8b8:	e58c302c 	str	r3, [ip, #44]	; 0x2c                          
          else                                                        
            bd->hold_timer = 0;                                       
        }                                                             
                                                                      
        if (bd->hold_timer)                                           
    b8bc:	1a000007 	bne	b8e0 <rtems_bdbuf_swapout_modified_processing+0xb4>
        {                                                             
          node = node->next;                                          
          continue;                                                   
    b8c0:	e5903000 	ldr	r3, [r0]                                      <== NOT EXECUTED
    b8c4:	e59c4014 	ldr	r4, [ip, #20]                                 <== NOT EXECUTED
      /*                                                              
       * This assumes we can set it to BDBUF_INVALID_DEV which is just an
       * assumption. Cannot use the transfer list being empty the sync dev
       * calls sets the dev to use.                                   
       */                                                             
      if (*dd_ptr == BDBUF_INVALID_DEV)                               
    b8c8:	e3530000 	cmp	r3, #0                                        
        *dd_ptr = bd->dd;                                             
    b8cc:	05804000 	streq	r4, [r0]                                    
    b8d0:	01a03004 	moveq	r3, r4                                      
    b8d4:	059c4014 	ldreq	r4, [ip, #20]                               
                                                                      
      if (bd->dd == *dd_ptr)                                          
    b8d8:	e1530004 	cmp	r3, r4                                        
    b8dc:	0a000004 	beq	b8f4 <rtems_bdbuf_swapout_modified_processing+0xc8>
                                                                      
        node = next_node;                                             
      }                                                               
      else                                                            
      {                                                               
        node = node->next;                                            
    b8e0:	e59cc000 	ldr	ip, [ip]                                      
    if (sync_active && (*dd_ptr == BDBUF_INVALID_DEV))                
      sync_all = true;                                                
    else                                                              
      sync_all = false;                                               
                                                                      
    while (!rtems_chain_is_tail (chain, node))                        
    b8e4:	e151000c 	cmp	r1, ip                                        
    b8e8:	1affffde 	bne	b868 <rtems_bdbuf_swapout_modified_processing+0x3c>
      {                                                               
        node = node->next;                                            
      }                                                               
    }                                                                 
  }                                                                   
}                                                                     
    b8ec:	e8bd0ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp}              
    b8f0:	e12fff1e 	bx	lr                                             
      if (*dd_ptr == BDBUF_INVALID_DEV)                               
        *dd_ptr = bd->dd;                                             
                                                                      
      if (bd->dd == *dd_ptr)                                          
      {                                                               
        rtems_chain_node* next_node = node->next;                     
    b8f4:	e59c6000 	ldr	r6, [ip]                                      
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    b8f8:	e59c4004 	ldr	r4, [ip, #4]                                  
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    b8fc:	e3a03009 	mov	r3, #9                                        
    b900:	e58c3020 	str	r3, [ip, #32]                                 
  next->previous = previous;                                          
    b904:	e5864004 	str	r4, [r6, #4]                                  
                                                                      
        rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_TRANSFER);       
                                                                      
        rtems_chain_extract_unprotected (node);                       
                                                                      
        tnode = tnode->previous;                                      
    b908:	e5923008 	ldr	r3, [r2, #8]                                  
                                                                      
        while (node && !rtems_chain_is_head (transfer, tnode))        
    b90c:	e1530002 	cmp	r3, r2                                        
  previous->next = next;                                              
    b910:	e5846000 	str	r6, [r4]                                      
    b914:	0a000011 	beq	b960 <rtems_bdbuf_swapout_modified_processing+0x134>
    b918:	e59c5018 	ldr	r5, [ip, #24]                                 
        {                                                             
          rtems_bdbuf_buffer* tbd = (rtems_bdbuf_buffer*) tnode;      
                                                                      
          if (bd->block > tbd->block)                                 
    b91c:	e5934018 	ldr	r4, [r3, #24]                                 
    b920:	e1550004 	cmp	r5, r4                                        
    b924:	9a00000a 	bls	b954 <rtems_bdbuf_swapout_modified_processing+0x128>
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    b928:	e5934000 	ldr	r4, [r3]                                      
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    b92c:	e58c3004 	str	r3, [ip, #4]                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    b930:	e583c000 	str	ip, [r3]                                      
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    b934:	e584c004 	str	ip, [r4, #4]                                  
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
    b938:	e58c4000 	str	r4, [ip]                                      
  before_node->previous = the_node;                                   
    b93c:	e1a0c006 	mov	ip, r6                                        
    b940:	eaffffe7 	b	b8e4 <rtems_bdbuf_swapout_modified_processing+0xb8>
       *                                                              
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
          || rtems_bdbuf_has_buffer_waiters ())                       
    b944:	e5903000 	ldr	r3, [r0]                                      
    b948:	e59c4014 	ldr	r4, [ip, #20]                                 
        bd->hold_timer = 0;                                           
    b94c:	e58ca02c 	str	sl, [ip, #44]	; 0x2c                          
    b950:	eaffffdc 	b	b8c8 <rtems_bdbuf_swapout_modified_processing+0x9c>
          {                                                           
            rtems_chain_insert_unprotected (tnode, node);             
            node = NULL;                                              
          }                                                           
          else                                                        
            tnode = tnode->previous;                                  
    b954:	e5933004 	ldr	r3, [r3, #4]                                  
                                                                      
        rtems_chain_extract_unprotected (node);                       
                                                                      
        tnode = tnode->previous;                                      
                                                                      
        while (node && !rtems_chain_is_head (transfer, tnode))        
    b958:	e1530002 	cmp	r3, r2                                        
    b95c:	1affffee 	bne	b91c <rtems_bdbuf_swapout_modified_processing+0xf0>
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    b960:	e5923000 	ldr	r3, [r2]                                      
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    b964:	e58c2004 	str	r2, [ip, #4]                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    b968:	e582c000 	str	ip, [r2]                                      
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    b96c:	e583c004 	str	ip, [r3, #4]                                  
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
    b970:	e58c3000 	str	r3, [ip]                                      
  before_node->previous = the_node;                                   
    b974:	e1a0c006 	mov	ip, r6                                        
    b978:	eaffffd9 	b	b8e4 <rtems_bdbuf_swapout_modified_processing+0xb8>
        if (update_timers)                                            
        {                                                             
          if (bd->hold_timer > timer_delta)                           
            bd->hold_timer -= timer_delta;                            
          else                                                        
            bd->hold_timer = 0;                                       
    b97c:	e58cb02c 	str	fp, [ip, #44]	; 0x2c                          
    b980:	e5903000 	ldr	r3, [r0]                                      
    b984:	e59c4014 	ldr	r4, [ip, #20]                                 
    b988:	eaffffce 	b	b8c8 <rtems_bdbuf_swapout_modified_processing+0x9c>
       * or someone waits for a buffer written force all the timers to 0.
       *                                                              
       * @note Lots of sync requests will skew this timer. It should be based
       *       on TOD to be accurate. Does it matter ?                
       */                                                             
      if (sync_all || (sync_active && (*dd_ptr == bd->dd))            
    b98c:	e1a04003 	mov	r4, r3                                        
          || rtems_bdbuf_has_buffer_waiters ())                       
        bd->hold_timer = 0;                                           
    b990:	e58ca02c 	str	sl, [ip, #44]	; 0x2c                          
    b994:	eaffffcb 	b	b8c8 <rtems_bdbuf_swapout_modified_processing+0x9c>
                                                                      

0000cc4c <rtems_bdbuf_swapout_task>: * not this. * @return rtems_task Not used. */ static rtems_task rtems_bdbuf_swapout_task (rtems_task_argument arg) {
    cc4c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_bdbuf_swapout_transfer transfer;                              
  uint32_t                     period_in_ticks;                       
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
    cc50:	e59f7330 	ldr	r7, [pc, #816]	; cf88 <rtems_bdbuf_swapout_task+0x33c>
 *            not this.                                               
 * @return rtems_task Not used.                                       
 */                                                                   
static rtems_task                                                     
rtems_bdbuf_swapout_task (rtems_task_argument arg)                    
{                                                                     
    cc54:	e24dd02c 	sub	sp, sp, #44	; 0x2c                            
  rtems_bdbuf_swapout_transfer transfer;                              
  uint32_t                     period_in_ticks;                       
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
    cc58:	e597900c 	ldr	r9, [r7, #12]                                 
  uint32_t                     timer_delta;                           
                                                                      
  transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();         
    cc5c:	ebfffbf6 	bl	bc3c <rtems_bdbuf_swapout_writereq_alloc>      
  transfer.syncing = false;                                           
                                                                      
  /*                                                                  
   * Localise the period.                                             
   */                                                                 
  period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
    cc60:	e0692289 	rsb	r2, r9, r9, lsl #5                            
    cc64:	e59f1320 	ldr	r1, [pc, #800]	; cf8c <rtems_bdbuf_swapout_task+0x340>
    cc68:	e0892102 	add	r2, r9, r2, lsl #2                            
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    cc6c:	e3a03000 	mov	r3, #0                                        
  tail->previous = head;                                              
    cc70:	e28dc010 	add	ip, sp, #16                                   
  rtems_bdbuf_swapout_transfer transfer;                              
  uint32_t                     period_in_ticks;                       
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
  uint32_t                     timer_delta;                           
                                                                      
  transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();         
    cc74:	e58d0024 	str	r0, [sp, #36]	; 0x24                          
  transfer.syncing = false;                                           
                                                                      
  /*                                                                  
   * Localise the period.                                             
   */                                                                 
  period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
    cc78:	e591100c 	ldr	r1, [r1, #12]                                 
    cc7c:	e1a00182 	lsl	r0, r2, #3                                    
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    cc80:	e28d2014 	add	r2, sp, #20                                   
    cc84:	e58d2010 	str	r2, [sp, #16]                                 
  head->previous = NULL;                                              
    cc88:	e58d3014 	str	r3, [sp, #20]                                 
  tail->previous = head;                                              
    cc8c:	e58dc018 	str	ip, [sp, #24]                                 
  const uint32_t               period_in_msecs = bdbuf_config.swapout_period;
  uint32_t                     timer_delta;                           
                                                                      
  transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();         
  rtems_chain_initialize_empty (&transfer.bds);                       
  transfer.dd = BDBUF_INVALID_DEV;                                    
    cc90:	e58d301c 	str	r3, [sp, #28]                                 
  transfer.syncing = false;                                           
    cc94:	e5cd3020 	strb	r3, [sp, #32]                                
                                                                      
  /*                                                                  
   * Localise the period.                                             
   */                                                                 
  period_in_ticks = RTEMS_MICROSECONDS_TO_TICKS (period_in_msecs * 1000);
    cc98:	eb0037d9 	bl	1ac04 <__aeabi_uidiv>                          
    cc9c:	e58d000c 	str	r0, [sp, #12]                                 
rtems_bdbuf_swapout_workers_open (void)                               
{                                                                     
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    cca0:	ebfffb41 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
    cca4:	e5978014 	ldr	r8, [r7, #20]                                 
    cca8:	e3580000 	cmp	r8, #0                                        
    ccac:	059f62dc 	ldreq	r6, [pc, #732]	; cf90 <rtems_bdbuf_swapout_task+0x344>
    ccb0:	0a00002a 	beq	cd60 <rtems_bdbuf_swapout_task+0x114>         
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    ccb4:	e59f52d4 	ldr	r5, [pc, #724]	; cf90 <rtems_bdbuf_swapout_task+0x344><== NOT EXECUTED
 * @param arg A pointer to the global cache data. Use the global variable and
 *            not this.                                               
 * @return rtems_task Not used.                                       
 */                                                                   
static rtems_task                                                     
rtems_bdbuf_swapout_task (rtems_task_argument arg)                    
    ccb8:	e2888061 	add	r8, r8, #97	; 0x61                            <== NOT EXECUTED
    ccbc:	e3a04061 	mov	r4, #97	; 0x61                                <== NOT EXECUTED
    worker = malloc (sizeof (rtems_bdbuf_swapout_worker));            
    if (!worker)                                                      
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
    ccc0:	e1a06009 	mov	r6, r9                                        <== NOT EXECUTED
                                                                      
  the_node->next = tail;                                              
    ccc4:	e285a00c 	add	sl, r5, #12                                   <== NOT EXECUTED
    ccc8:	e1a09008 	mov	r9, r8                                        <== NOT EXECUTED
    cccc:	e3a0b001 	mov	fp, #1                                        <== NOT EXECUTED
    ccd0:	e1a08004 	mov	r8, r4                                        <== NOT EXECUTED
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
  {                                                                   
    rtems_bdbuf_swapout_worker* worker;                               
                                                                      
    worker = malloc (sizeof (rtems_bdbuf_swapout_worker));            
    ccd4:	e3a00028 	mov	r0, #40	; 0x28                                <== NOT EXECUTED
    ccd8:	ebffdc0d 	bl	3d14 <malloc>                                  <== NOT EXECUTED
    if (!worker)                                                      
    ccdc:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
    cce0:	0a0000a6 	beq	cf80 <rtems_bdbuf_swapout_task+0x334>         <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    cce4:	e5953010 	ldr	r3, [r5, #16]                                 <== NOT EXECUTED
                                                                      
  the_node->next = tail;                                              
    cce8:	e584a000 	str	sl, [r4]                                      <== NOT EXECUTED
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
  the_node->previous = old_last;                                      
    ccec:	e5843004 	str	r3, [r4, #4]                                  <== NOT EXECUTED
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
  old_last->next = the_node;                                          
    ccf0:	e5834000 	str	r4, [r3]                                      <== NOT EXECUTED
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
  tail->previous = the_node;                                          
    ccf4:	e5854010 	str	r4, [r5, #16]                                 <== NOT EXECUTED
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
    ccf8:	e5c4b00c 	strb	fp, [r4, #12]                                <== NOT EXECUTED
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
    ccfc:	ebfffbce 	bl	bc3c <rtems_bdbuf_swapout_writereq_alloc>      <== NOT EXECUTED
    cd00:	e5840024 	str	r0, [r4, #36]	; 0x24                          <== NOT EXECUTED
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
    cd04:	e59f0288 	ldr	r0, [pc, #648]	; cf94 <rtems_bdbuf_swapout_task+0x348><== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    cd08:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    cd0c:	e2842010 	add	r2, r4, #16                                   <== NOT EXECUTED
    cd10:	e284c014 	add	ip, r4, #20                                   <== NOT EXECUTED
                                                                      
  head->next = tail;                                                  
    cd14:	e584c010 	str	ip, [r4, #16]                                 <== NOT EXECUTED
  head->previous = NULL;                                              
    cd18:	e5843014 	str	r3, [r4, #20]                                 <== NOT EXECUTED
  tail->previous = head;                                              
    cd1c:	e5842018 	str	r2, [r4, #24]                                 <== NOT EXECUTED
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
    worker->enabled = true;                                           
    worker->transfer.write_req = rtems_bdbuf_swapout_writereq_alloc ();
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
    cd20:	e584301c 	str	r3, [r4, #28]                                 <== NOT EXECUTED
                                                                      
    sc = rtems_bdbuf_create_task (rtems_build_name('B', 'D', 'o', 'a' + w),
    cd24:	e284c008 	add	ip, r4, #8                                    <== NOT EXECUTED
    cd28:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
    cd2c:	e5971018 	ldr	r1, [r7, #24]                                 <== NOT EXECUTED
    cd30:	e1880000 	orr	r0, r8, r0                                    <== NOT EXECUTED
    cd34:	e59f225c 	ldr	r2, [pc, #604]	; cf98 <rtems_bdbuf_swapout_task+0x34c><== NOT EXECUTED
    cd38:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    cd3c:	ebfffc1f 	bl	bdc0 <rtems_bdbuf_create_task.constprop.10>    <== NOT EXECUTED
                                  bdbuf_config.swapout_worker_priority,
                                  RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT,
                                  rtems_bdbuf_swapout_worker_task,    
                                  (rtems_task_argument) worker,       
                                  &worker->id);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
    cd40:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    cd44:	e59f3244 	ldr	r3, [pc, #580]	; cf90 <rtems_bdbuf_swapout_task+0x344><== NOT EXECUTED
    cd48:	1a00008a 	bne	cf78 <rtems_bdbuf_swapout_task+0x32c>         <== NOT EXECUTED
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);             
    cd4c:	e2888001 	add	r8, r8, #1                                    <== NOT EXECUTED
  rtems_status_code sc;                                               
  size_t            w;                                                
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  for (w = 0; w < bdbuf_config.swapout_workers; w++)                  
    cd50:	e1580009 	cmp	r8, r9                                        <== NOT EXECUTED
    cd54:	1affffde 	bne	ccd4 <rtems_bdbuf_swapout_task+0x88>          <== NOT EXECUTED
    cd58:	e1a09006 	mov	r9, r6                                        <== NOT EXECUTED
    cd5c:	e1a06003 	mov	r6, r3                                        <== NOT EXECUTED
                                  &worker->id);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);             
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    cd60:	ebfffb2a 	bl	ba10 <rtems_bdbuf_unlock_cache>                
  /*                                                                  
   * Create the worker threads.                                       
   */                                                                 
  rtems_bdbuf_swapout_workers_open ();                                
                                                                      
  while (bdbuf_cache.swapout_enabled)                                 
    cd64:	e59fb224 	ldr	fp, [pc, #548]	; cf90 <rtems_bdbuf_swapout_task+0x344>
    cd68:	e1a07006 	mov	r7, r6                                        
    cd6c:	e5d74004 	ldrb	r4, [r7, #4]                                 
    cd70:	e3540000 	cmp	r4, #0                                        
    cd74:	e59f5214 	ldr	r5, [pc, #532]	; cf90 <rtems_bdbuf_swapout_task+0x344>
    cd78:	0a000069 	beq	cf24 <rtems_bdbuf_swapout_task+0x2d8>         
    cd7c:	e3a0c001 	mov	ip, #1                                        
    cd80:	e58dc008 	str	ip, [sp, #8]                                  
                                rtems_bdbuf_swapout_transfer* transfer)
{                                                                     
  rtems_bdbuf_swapout_worker* worker;                                 
  bool                        transfered_buffers = false;             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    cd84:	ebfffb08 	bl	b9ac <rtems_bdbuf_lock_cache>                  
   * here. We do not know the worker is the last in a sequence of sync writes
   * until after we have it running so we do not know to tell it to release the
   * lock. The simplest solution is to get the main swap out task perform all
   * sync operations.                                                 
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    cd88:	e5d73030 	ldrb	r3, [r7, #48]	; 0x30                         
    cd8c:	e3530000 	cmp	r3, #0                                        
    cd90:	1a000038 	bne	ce78 <rtems_bdbuf_swapout_task+0x22c>         
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    cd94:	e59b6008 	ldr	r6, [fp, #8]                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    cd98:	e59f21fc 	ldr	r2, [pc, #508]	; cf9c <rtems_bdbuf_swapout_task+0x350>
    cd9c:	e1560002 	cmp	r6, r2                                        
    cda0:	01a06003 	moveq	r6, r3                                      
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
    cda4:	028d4010 	addeq	r4, sp, #16                                 
    cda8:	0a000004 	beq	cdc0 <rtems_bdbuf_swapout_task+0x174>         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
    cdac:	e1a04006 	mov	r4, r6                                        <== NOT EXECUTED
    cdb0:	e4943010 	ldr	r3, [r4], #16                                 <== NOT EXECUTED
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
    cdb4:	e242c004 	sub	ip, r2, #4                                    <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
    cdb8:	e58b3008 	str	r3, [fp, #8]                                  <== NOT EXECUTED
  new_first->previous = head;                                         
    cdbc:	e583c004 	str	ip, [r3, #4]                                  <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    cdc0:	e3a03000 	mov	r3, #0                                        
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    cdc4:	e2848004 	add	r8, r4, #4                                    
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
    cdc8:	e9840018 	stmib	r4, {r3, r4}                                
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    cdcc:	e5848000 	str	r8, [r4]                                      
    if (worker)                                                       
      transfer = &worker->transfer;                                   
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&transfer->bds);                      
  transfer->dd = BDBUF_INVALID_DEV;                                   
    cdd0:	e584300c 	str	r3, [r4, #12]                                 
  transfer->syncing = bdbuf_cache.sync_active;                        
    cdd4:	e5c43010 	strb	r3, [r4, #16]                                
                                                                      
  /*                                                                  
   * If we have any buffers in the sync queue move them to the modified
   * list. The first sync buffer will select the device we use.       
   */                                                                 
  rtems_bdbuf_swapout_modified_processing (&transfer->dd,             
    cdd8:	e284500c 	add	r5, r4, #12                                   
    cddc:	e1a00005 	mov	r0, r5                                        
    cde0:	e59f11b8 	ldr	r1, [pc, #440]	; cfa0 <rtems_bdbuf_swapout_task+0x354>
    cde4:	e1a02004 	mov	r2, r4                                        
    cde8:	e3a03001 	mov	r3, #1                                        
    cdec:	e3a0a000 	mov	sl, #0                                        
    cdf0:	e58da000 	str	sl, [sp]                                      
    cdf4:	e58d9004 	str	r9, [sp, #4]                                  
    cdf8:	ebfffa8b 	bl	b82c <rtems_bdbuf_swapout_modified_processing> 
                                           timer_delta);              
                                                                      
  /*                                                                  
   * Process the cache's modified list.                               
   */                                                                 
  rtems_bdbuf_swapout_modified_processing (&transfer->dd,             
    cdfc:	e59dc008 	ldr	ip, [sp, #8]                                  
    ce00:	e5d73030 	ldrb	r3, [r7, #48]	; 0x30                         
    ce04:	e1a00005 	mov	r0, r5                                        
    ce08:	e59f1194 	ldr	r1, [pc, #404]	; cfa4 <rtems_bdbuf_swapout_task+0x358>
    ce0c:	e1a02004 	mov	r2, r4                                        
    ce10:	e58dc000 	str	ip, [sp]                                      
    ce14:	e58d9004 	str	r9, [sp, #4]                                  
    ce18:	ebfffa83 	bl	b82c <rtems_bdbuf_swapout_modified_processing> 
  /*                                                                  
   * We have all the buffers that have been modified for this device so the
   * cache can be unlocked because the state of each buffer has been set to
   * TRANSFER.                                                        
   */                                                                 
  rtems_bdbuf_unlock_cache ();                                        
    ce1c:	ebfffafb 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  /*                                                                  
   * If there are buffers to transfer to the media transfer them.     
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
    ce20:	e5943000 	ldr	r3, [r4]                                      
    ce24:	e1530008 	cmp	r3, r8                                        
    ce28:	0a000007 	beq	ce4c <rtems_bdbuf_swapout_task+0x200>         
  {                                                                   
    if (worker)                                                       
    ce2c:	e156000a 	cmp	r6, sl                                        
    ce30:	0a000037 	beq	cf14 <rtems_bdbuf_swapout_task+0x2c8>         
    {                                                                 
      rtems_status_code sc = rtems_event_send (worker->id,            
    ce34:	e5960008 	ldr	r0, [r6, #8]                                  <== NOT EXECUTED
    ce38:	e3a01004 	mov	r1, #4                                        <== NOT EXECUTED
    ce3c:	ebffea0d 	bl	7678 <rtems_event_send>                        <== NOT EXECUTED
                                               RTEMS_BDBUF_SWAPOUT_SYNC);
      if (sc != RTEMS_SUCCESSFUL)                                     
    ce40:	e150000a 	cmp	r0, sl                                        <== NOT EXECUTED
    ce44:	1a000049 	bne	cf70 <rtems_bdbuf_swapout_task+0x324>         <== NOT EXECUTED
    else                                                              
    {                                                                 
      rtems_bdbuf_swapout_write (transfer);                           
    }                                                                 
                                                                      
    transfered_buffers = true;                                        
    ce48:	e3a0a001 	mov	sl, #1                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  if (bdbuf_cache.sync_active && !transfered_buffers)                 
    ce4c:	e5d73030 	ldrb	r3, [r7, #48]	; 0x30                         
    ce50:	e3530000 	cmp	r3, #0                                        
    ce54:	0a000014 	beq	ceac <rtems_bdbuf_swapout_task+0x260>         
    ce58:	e35a0000 	cmp	sl, #0                                        
    ce5c:	0a00001e 	beq	cedc <rtems_bdbuf_swapout_task+0x290>         
    ce60:	e3a0c000 	mov	ip, #0                                        
    ce64:	e58dc008 	str	ip, [sp, #8]                                  
                                rtems_bdbuf_swapout_transfer* transfer)
{                                                                     
  rtems_bdbuf_swapout_worker* worker;                                 
  bool                        transfered_buffers = false;             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    ce68:	ebfffacf 	bl	b9ac <rtems_bdbuf_lock_cache>                  
   * here. We do not know the worker is the last in a sequence of sync writes
   * until after we have it running so we do not know to tell it to release the
   * lock. The simplest solution is to get the main swap out task perform all
   * sync operations.                                                 
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    ce6c:	e5d73030 	ldrb	r3, [r7, #48]	; 0x30                         
    ce70:	e3530000 	cmp	r3, #0                                        
    ce74:	0affffc6 	beq	cd94 <rtems_bdbuf_swapout_task+0x148>         
    ce78:	e28d2014 	add	r2, sp, #20                                   
   * When the sync is for a device limit the sync to that device. If the sync
   * is for a buffer handle process the devices in the order on the sync
   * list. This means the dev is BDBUF_INVALID_DEV.                   
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    transfer->dd = bdbuf_cache.sync_device;                           
    ce7c:	e59b3038 	ldr	r3, [fp, #56]	; 0x38                          
  head->previous = NULL;                                              
  tail->previous = head;                                              
    ce80:	e28dc010 	add	ip, sp, #16                                   
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    ce84:	e3a06000 	mov	r6, #0                                        
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    ce88:	e58d2010 	str	r2, [sp, #16]                                 
      transfer = &worker->transfer;                                   
  }                                                                   
                                                                      
  rtems_chain_initialize_empty (&transfer->bds);                      
  transfer->dd = BDBUF_INVALID_DEV;                                   
  transfer->syncing = bdbuf_cache.sync_active;                        
    ce8c:	e3a02001 	mov	r2, #1                                        
  head->previous = NULL;                                              
    ce90:	e58d6014 	str	r6, [sp, #20]                                 
  tail->previous = head;                                              
    ce94:	e58dc018 	str	ip, [sp, #24]                                 
    ce98:	e5cd2020 	strb	r2, [sp, #32]                                
   * When the sync is for a device limit the sync to that device. If the sync
   * is for a buffer handle process the devices in the order on the sync
   * list. This means the dev is BDBUF_INVALID_DEV.                   
   */                                                                 
  if (bdbuf_cache.sync_active)                                        
    transfer->dd = bdbuf_cache.sync_device;                           
    ce9c:	e58d301c 	str	r3, [sp, #28]                                 
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
    cea0:	e1a0400c 	mov	r4, ip                                        
    cea4:	e28d8014 	add	r8, sp, #20                                   
    cea8:	eaffffca 	b	cdd8 <rtems_bdbuf_swapout_task+0x18c>           
    ceac:	e35a0000 	cmp	sl, #0                                        
    ceb0:	1a000015 	bne	cf0c <rtems_bdbuf_swapout_task+0x2c0>         
       */                                                             
      update_timers = false;                                          
    }                                                                 
    while (transfered_buffers);                                       
                                                                      
    sc = rtems_event_receive (RTEMS_BDBUF_SWAPOUT_SYNC,               
    ceb4:	e3a00004 	mov	r0, #4                                        
    ceb8:	e3a01000 	mov	r1, #0                                        
    cebc:	e59d200c 	ldr	r2, [sp, #12]                                 
    cec0:	e28d3028 	add	r3, sp, #40	; 0x28                            
    cec4:	ebffe988 	bl	74ec <rtems_event_receive>                     
                              RTEMS_EVENT_ALL | RTEMS_WAIT,           
                              period_in_ticks,                        
                              &out);                                  
                                                                      
    if ((sc != RTEMS_SUCCESSFUL) && (sc != RTEMS_TIMEOUT))            
    cec8:	e3500006 	cmp	r0, #6                                        
    cecc:	13500000 	cmpne	r0, #0                                      
    ced0:	0affffa5 	beq	cd6c <rtems_bdbuf_swapout_task+0x120>         
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SWAPOUT_RE);               
    ced4:	e3a00018 	mov	r0, #24                                       <== NOT EXECUTED
    ced8:	ebfffaaf 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
  }                                                                   
                                                                      
  if (bdbuf_cache.sync_active && !transfered_buffers)                 
  {                                                                   
    rtems_id sync_requester;                                          
    rtems_bdbuf_lock_cache ();                                        
    cedc:	ebfffab2 	bl	b9ac <rtems_bdbuf_lock_cache>                  
    sync_requester = bdbuf_cache.sync_requester;                      
    cee0:	e59f20a8 	ldr	r2, [pc, #168]	; cf90 <rtems_bdbuf_swapout_task+0x344>
    cee4:	e5924034 	ldr	r4, [r2, #52]	; 0x34                          
    bdbuf_cache.sync_active = false;                                  
    cee8:	e5c2a030 	strb	sl, [r2, #48]	; 0x30                         
    bdbuf_cache.sync_requester = 0;                                   
    ceec:	e582a034 	str	sl, [r2, #52]	; 0x34                          
    rtems_bdbuf_unlock_cache ();                                      
    cef0:	ebfffac6 	bl	ba10 <rtems_bdbuf_unlock_cache>                
    if (sync_requester)                                               
    cef4:	e3540000 	cmp	r4, #0                                        
    cef8:	0affffed 	beq	ceb4 <rtems_bdbuf_swapout_task+0x268>         
    cefc:	e1a00004 	mov	r0, r4                                        
    cf00:	e3a01102 	mov	r1, #-2147483648	; 0x80000000                 
    cf04:	ebffeb67 	bl	7ca8 <rtems_event_system_send>                 
    cf08:	eaffffe9 	b	ceb4 <rtems_bdbuf_swapout_task+0x268>           
      /*                                                              
       * Extact all the buffers we find for a specific device. The device is
       * the first one we find on a modified list. Process the sync queue of
       * buffers first.                                               
       */                                                             
      if (rtems_bdbuf_swapout_processing (timer_delta,                
    cf0c:	e58d3008 	str	r3, [sp, #8]                                  
    cf10:	eaffff9b 	b	cd84 <rtems_bdbuf_swapout_task+0x138>           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_2);              
    }                                                                 
    else                                                              
    {                                                                 
      rtems_bdbuf_swapout_write (transfer);                           
    cf14:	e1a00004 	mov	r0, r4                                        
    cf18:	ebfffeef 	bl	cadc <rtems_bdbuf_swapout_write>               
    }                                                                 
                                                                      
    transfered_buffers = true;                                        
    cf1c:	e3a0a001 	mov	sl, #1                                        
    cf20:	eaffffc9 	b	ce4c <rtems_bdbuf_swapout_task+0x200>           
static void                                                           
rtems_bdbuf_swapout_workers_close (void)                              
{                                                                     
  rtems_chain_node* node;                                             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
    cf24:	ebfffaa0 	bl	b9ac <rtems_bdbuf_lock_cache>                  <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
    cf28:	e5956008 	ldr	r6, [r5, #8]                                  <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_tail(         
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return &the_chain->Tail.Node;                                       
    cf2c:	e285500c 	add	r5, r5, #12                                   <== NOT EXECUTED
                                                                      
  node = rtems_chain_first (&bdbuf_cache.swapout_workers);            
  while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))   
    cf30:	e1560005 	cmp	r6, r5                                        <== NOT EXECUTED
    cf34:	0a000006 	beq	cf54 <rtems_bdbuf_swapout_task+0x308>         <== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) node;
    worker->enabled = false;                                          
    cf38:	e5c6400c 	strb	r4, [r6, #12]                                <== NOT EXECUTED
    rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);          
    cf3c:	e5960008 	ldr	r0, [r6, #8]                                  <== NOT EXECUTED
    cf40:	e3a01004 	mov	r1, #4                                        <== NOT EXECUTED
    cf44:	ebffe9cb 	bl	7678 <rtems_event_send>                        <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next(                         
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  return the_node->next;                                              
    cf48:	e5966000 	ldr	r6, [r6]                                      <== NOT EXECUTED
  rtems_chain_node* node;                                             
                                                                      
  rtems_bdbuf_lock_cache ();                                          
                                                                      
  node = rtems_chain_first (&bdbuf_cache.swapout_workers);            
  while (!rtems_chain_is_tail (&bdbuf_cache.swapout_workers, node))   
    cf4c:	e1560005 	cmp	r6, r5                                        <== NOT EXECUTED
    cf50:	1afffff8 	bne	cf38 <rtems_bdbuf_swapout_task+0x2ec>         <== NOT EXECUTED
    worker->enabled = false;                                          
    rtems_event_send (worker->id, RTEMS_BDBUF_SWAPOUT_SYNC);          
    node = rtems_chain_next (node);                                   
  }                                                                   
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    cf54:	ebfffaad 	bl	ba10 <rtems_bdbuf_unlock_cache>                <== NOT EXECUTED
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SWAPOUT_RE);               
  }                                                                   
                                                                      
  rtems_bdbuf_swapout_workers_close ();                               
                                                                      
  free (transfer.write_req);                                          
    cf58:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          <== NOT EXECUTED
    cf5c:	ebffda31 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
    cf60:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    cf64:	ebffebb7 	bl	7e48 <rtems_task_delete>                       <== NOT EXECUTED
}                                                                     
    cf68:	e28dd02c 	add	sp, sp, #44	; 0x2c                            <== NOT EXECUTED
    cf6c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
    if (worker)                                                       
    {                                                                 
      rtems_status_code sc = rtems_event_send (worker->id,            
                                               RTEMS_BDBUF_SWAPOUT_SYNC);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_2);              
    cf70:	e3a0000c 	mov	r0, #12                                       <== NOT EXECUTED
    cf74:	ebfffa88 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                  RTEMS_BDBUF_SWAPOUT_WORKER_TASK_PRIORITY_DEFAULT,
                                  rtems_bdbuf_swapout_worker_task,    
                                  (rtems_task_argument) worker,       
                                  &worker->id);                       
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_CREATE);             
    cf78:	e3a0000d 	mov	r0, #13                                       <== NOT EXECUTED
    cf7c:	ebfffa86 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_swapout_worker* worker;                               
                                                                      
    worker = malloc (sizeof (rtems_bdbuf_swapout_worker));            
    if (!worker)                                                      
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WK_NOMEM);              
    cf80:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
    cf84:	ebfffa84 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000cfa8 <rtems_bdbuf_swapout_worker_task>: static rtems_task rtems_bdbuf_swapout_worker_task (rtems_task_argument arg) { rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg; while (worker->enabled)
    cfa8:	e5d0300c 	ldrb	r3, [r0, #12]                                <== NOT EXECUTED
    cfac:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
 * @param arg A pointer to the worker thread's private data.          
 * @return rtems_task Not used.                                       
 */                                                                   
static rtems_task                                                     
rtems_bdbuf_swapout_worker_task (rtems_task_argument arg)             
{                                                                     
    cfb0:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 <== NOT EXECUTED
    cfb4:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
  rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg;
                                                                      
  while (worker->enabled)                                             
    cfb8:	0a000016 	beq	d018 <rtems_bdbuf_swapout_worker_task+0x70>   <== NOT EXECUTED
    cfbc:	e59f5070 	ldr	r5, [pc, #112]	; d034 <rtems_bdbuf_swapout_worker_task+0x8c><== NOT EXECUTED
    cfc0:	e2807010 	add	r7, r0, #16                                   <== NOT EXECUTED
    cfc4:	e280a014 	add	sl, r0, #20                                   <== NOT EXECUTED
    cfc8:	e285800c 	add	r8, r5, #12                                   <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    cfcc:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
  {                                                                   
    rtems_bdbuf_wait_for_event (RTEMS_BDBUF_SWAPOUT_SYNC);            
    cfd0:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
    cfd4:	ebfffb06 	bl	bbf4 <rtems_bdbuf_wait_for_event>              <== NOT EXECUTED
                                                                      
    rtems_bdbuf_swapout_write (&worker->transfer);                    
    cfd8:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    cfdc:	ebfffebe 	bl	cadc <rtems_bdbuf_swapout_write>               <== NOT EXECUTED
                                                                      
    rtems_bdbuf_lock_cache ();                                        
    cfe0:	ebfffa71 	bl	b9ac <rtems_bdbuf_lock_cache>                  <== NOT EXECUTED
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    cfe4:	e5953010 	ldr	r3, [r5, #16]                                 <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    cfe8:	e584a010 	str	sl, [r4, #16]                                 <== NOT EXECUTED
                                                                      
    rtems_chain_initialize_empty (&worker->transfer.bds);             
    worker->transfer.dd = BDBUF_INVALID_DEV;                          
    cfec:	e584601c 	str	r6, [r4, #28]                                 <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
                                                                      
  the_node->next = tail;                                              
    cff0:	e5848000 	str	r8, [r4]                                      <== NOT EXECUTED
  tail->previous = the_node;                                          
    cff4:	e5854010 	str	r4, [r5, #16]                                 <== NOT EXECUTED
  old_last->next = the_node;                                          
    cff8:	e5834000 	str	r4, [r3]                                      <== NOT EXECUTED
  the_node->previous = old_last;                                      
    cffc:	e5843004 	str	r3, [r4, #4]                                  <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    d000:	e5846014 	str	r6, [r4, #20]                                 <== NOT EXECUTED
  tail->previous = head;                                              
    d004:	e5847018 	str	r7, [r4, #24]                                 <== NOT EXECUTED
                                                                      
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
    d008:	ebfffa80 	bl	ba10 <rtems_bdbuf_unlock_cache>                <== NOT EXECUTED
static rtems_task                                                     
rtems_bdbuf_swapout_worker_task (rtems_task_argument arg)             
{                                                                     
  rtems_bdbuf_swapout_worker* worker = (rtems_bdbuf_swapout_worker*) arg;
                                                                      
  while (worker->enabled)                                             
    d00c:	e5d4300c 	ldrb	r3, [r4, #12]                                <== NOT EXECUTED
    d010:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    d014:	1affffed 	bne	cfd0 <rtems_bdbuf_swapout_worker_task+0x28>   <== NOT EXECUTED
    rtems_chain_append_unprotected (&bdbuf_cache.swapout_workers, &worker->link);
                                                                      
    rtems_bdbuf_unlock_cache ();                                      
  }                                                                   
                                                                      
  free (worker->transfer.write_req);                                  
    d018:	e5940024 	ldr	r0, [r4, #36]	; 0x24                          <== NOT EXECUTED
    d01c:	ebffda01 	bl	3828 <free>                                    <== NOT EXECUTED
  free (worker);                                                      
    d020:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    d024:	ebffd9ff 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
    d028:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
    d02c:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  <== NOT EXECUTED
  }                                                                   
                                                                      
  free (worker->transfer.write_req);                                  
  free (worker);                                                      
                                                                      
  rtems_task_delete (RTEMS_SELF);                                     
    d030:	eaffeb84 	b	7e48 <rtems_task_delete>                        <== NOT EXECUTED
                                                                      

0000cadc <rtems_bdbuf_swapout_write>: * * @param transfer The transfer transaction. */ static void rtems_bdbuf_swapout_write (rtems_bdbuf_swapout_transfer* transfer) {
    cadc:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    cae0:	e1a05000 	mov	r5, r0                                        
    cae4:	e4953004 	ldr	r3, [r5], #4                                  
    printf ("bdbuf:swapout transfer: %08x\n", (unsigned) transfer->dd->dev);
                                                                      
  /*                                                                  
   * If there are buffers to transfer to the media transfer them.     
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
    cae8:	e1530005 	cmp	r3, r5                                        
 *                                                                    
 * @param transfer The transfer transaction.                          
 */                                                                   
static void                                                           
rtems_bdbuf_swapout_write (rtems_bdbuf_swapout_transfer* transfer)    
{                                                                     
    caec:	e24dd004 	sub	sp, sp, #4                                    
    caf0:	e1a04000 	mov	r4, r0                                        
    printf ("bdbuf:swapout transfer: %08x\n", (unsigned) transfer->dd->dev);
                                                                      
  /*                                                                  
   * If there are buffers to transfer to the media transfer them.     
   */                                                                 
  if (!rtems_chain_is_empty (&transfer->bds))                         
    caf4:	0a00004c 	beq	cc2c <rtems_bdbuf_swapout_write+0x150>        
     * The last block number used when the driver only supports       
     * continuous blocks in a single request.                         
     */                                                               
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    caf8:	e590700c 	ldr	r7, [r0, #12]                                 
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    bool need_continuous_blocks =                                     
      (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
    cafc:	e5972008 	ldr	r2, [r7, #8]                                  
     * should be possible to make this change with little effect in this
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
    cb00:	e5901014 	ldr	r1, [r0, #20]                                 
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    bool need_continuous_blocks =                                     
      (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
    cb04:	e592b00c 	ldr	fp, [r2, #12]                                 
     * continuous blocks in a single request.                         
     */                                                               
    uint32_t last_block = 0;                                          
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    cb08:	e597c02c 	ldr	ip, [r7, #44]	; 0x2c                          
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
    transfer->write_req->bufnum = 0;                                  
    cb0c:	e3a02000 	mov	r2, #0                                        
     * should be possible to make this change with little effect in this
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
    cb10:	e3a0000c 	mov	r0, #12                                       
  {                                                                   
    /*                                                                
     * The last block number used when the driver only supports       
     * continuous blocks in a single request.                         
     */                                                               
    uint32_t last_block = 0;                                          
    cb14:	e1a06002 	mov	r6, r2                                        
                                                                      
    rtems_disk_device *dd = transfer->dd;                             
    uint32_t media_blocks_per_block = dd->media_blocks_per_block;     
    cb18:	e58dc000 	str	ip, [sp]                                      
    bool need_continuous_blocks =                                     
      (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_MULTISECTOR_CONT) != 0;
    cb1c:	e20bb001 	and	fp, fp, #1                                    
     * should be possible to make this change with little effect in this
     * code. The array that is passed is broken in design and should be
     * removed. Merging members of a struct into the first member is  
     * trouble waiting to happen.                                     
     */                                                               
    transfer->write_req->status = RTEMS_RESOURCE_IN_USE;              
    cb20:	e581000c 	str	r0, [r1, #12]                                 
    transfer->write_req->bufnum = 0;                                  
    cb24:	e5812010 	str	r2, [r1, #16]                                 
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
    cb28:	e59f8118 	ldr	r8, [pc, #280]	; cc48 <rtems_bdbuf_swapout_write+0x16c>
    cb2c:	ea00001d 	b	cba8 <rtems_bdbuf_swapout_write+0xcc>           
      if (rtems_bdbuf_tracer)                                         
        printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
                bd->block, transfer->write_req->bufnum,               
                need_continuous_blocks ? "MULTI" : "SCAT");           
                                                                      
      if (need_continuous_blocks && transfer->write_req->bufnum &&    
    cb30:	e5910010 	ldr	r0, [r1, #16]                                 
    cb34:	e3500000 	cmp	r0, #0                                        
    cb38:	e593a018 	ldr	sl, [r3, #24]                                 
    cb3c:	0a00001f 	beq	cbc0 <rtems_bdbuf_swapout_write+0xe4>         
          bd->block != last_block + media_blocks_per_block)           
    cb40:	e59dc000 	ldr	ip, [sp]                                      
    cb44:	e086000c 	add	r0, r6, ip                                    
      if (rtems_bdbuf_tracer)                                         
        printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
                bd->block, transfer->write_req->bufnum,               
                need_continuous_blocks ? "MULTI" : "SCAT");           
                                                                      
      if (need_continuous_blocks && transfer->write_req->bufnum &&    
    cb48:	e15a0000 	cmp	sl, r0                                        
    cb4c:	0a00001b 	beq	cbc0 <rtems_bdbuf_swapout_write+0xe4>         
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    cb50:	e5843000 	str	r3, [r4]                                      
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    cb54:	e8830014 	stm	r3, {r2, r4}                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    cb58:	e5823004 	str	r3, [r2, #4]                                  
    cb5c:	e5943000 	ldr	r3, [r4]                                      
          bd->block != last_block + media_blocks_per_block)           
      {                                                               
        rtems_chain_prepend_unprotected (&transfer->bds, &bd->link);  
        write = true;                                                 
    cb60:	e3a00001 	mov	r0, #1                                        
      /*                                                              
       * Perform the transfer if there are no more buffers, or the transfer
       * size has reached the configured max. value.                  
       */                                                             
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
    cb64:	e1550003 	cmp	r5, r3                                        
    cb68:	0a000003 	beq	cb7c <rtems_bdbuf_swapout_write+0xa0>         
    cb6c:	e591c010 	ldr	ip, [r1, #16]                                 
    cb70:	e5982004 	ldr	r2, [r8, #4]                                  
    cb74:	e15c0002 	cmp	ip, r2                                        
    cb78:	3a000020 	bcc	cc00 <rtems_bdbuf_swapout_write+0x124>        
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
        write = true;                                                 
                                                                      
      if (write)                                                      
      {                                                               
        rtems_bdbuf_execute_transfer_request (dd, transfer->write_req, false);
    cb7c:	e1a00007 	mov	r0, r7                                        
    cb80:	e3a02000 	mov	r2, #0                                        
    cb84:	ebffff54 	bl	c8dc <rtems_bdbuf_execute_transfer_request>    
                                                                      
        transfer->write_req->status = RTEMS_RESOURCE_IN_USE;          
    cb88:	e5941014 	ldr	r1, [r4, #20]                                 
    cb8c:	e3a0300c 	mov	r3, #12                                       
    cb90:	e581300c 	str	r3, [r1, #12]                                 
        transfer->write_req->bufnum = 0;                              
    cb94:	e5943000 	ldr	r3, [r4]                                      
    cb98:	e3a00000 	mov	r0, #0                                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    cb9c:	e1550003 	cmp	r5, r3                                        
    cba0:	e5810010 	str	r0, [r1, #16]                                 
    cba4:	0a000019 	beq	cc10 <rtems_bdbuf_swapout_write+0x134>        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
    cba8:	e5932000 	ldr	r2, [r3]                                      
      if (rtems_bdbuf_tracer)                                         
        printf ("bdbuf:swapout write: bd:%" PRIu32 ", bufnum:%" PRIu32 " mode:%s\n",
                bd->block, transfer->write_req->bufnum,               
                need_continuous_blocks ? "MULTI" : "SCAT");           
                                                                      
      if (need_continuous_blocks && transfer->write_req->bufnum &&    
    cbac:	e35b0000 	cmp	fp, #0                                        
                                                                      
  head->next = new_first;                                             
    cbb0:	e5842000 	str	r2, [r4]                                      
  new_first->previous = head;                                         
    cbb4:	e5824004 	str	r4, [r2, #4]                                  
    cbb8:	1affffdc 	bne	cb30 <rtems_bdbuf_swapout_write+0x54>         
    cbbc:	e593a018 	ldr	sl, [r3, #24]                                 
        write = true;                                                 
      }                                                               
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
    cbc0:	e5919010 	ldr	r9, [r1, #16]                                 
    cbc4:	e1a0c209 	lsl	ip, r9, #4                                    
    cbc8:	e28cc018 	add	ip, ip, #24                                   
        transfer->write_req->bufnum++;                                
    cbcc:	e2899001 	add	r9, r9, #1                                    
        write = true;                                                 
      }                                                               
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
    cbd0:	e081000c 	add	r0, r1, ip                                    
        transfer->write_req->bufnum++;                                
    cbd4:	e5819010 	str	r9, [r1, #16]                                 
        buf->user   = bd;                                             
        buf->block  = bd->block;                                      
    cbd8:	e781a00c 	str	sl, [r1, ip]                                  
        buf->length = dd->block_size;                                 
    cbdc:	e597c024 	ldr	ip, [r7, #36]	; 0x24                          
    cbe0:	e580c004 	str	ip, [r0, #4]                                  
        buf->buffer = bd->buffer;                                     
    cbe4:	e593c01c 	ldr	ip, [r3, #28]                                 
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
        buf->block  = bd->block;                                      
    cbe8:	e1a0600a 	mov	r6, sl                                        
      else                                                            
      {                                                               
        rtems_blkdev_sg_buffer* buf;                                  
        buf = &transfer->write_req->bufs[transfer->write_req->bufnum];
        transfer->write_req->bufnum++;                                
        buf->user   = bd;                                             
    cbec:	e580300c 	str	r3, [r0, #12]                                 
        buf->block  = bd->block;                                      
        buf->length = dd->block_size;                                 
        buf->buffer = bd->buffer;                                     
    cbf0:	e580c008 	str	ip, [r0, #8]                                  
    cbf4:	e1a03002 	mov	r3, r2                                        
    transfer->write_req->bufnum = 0;                                  
                                                                      
    while ((node = rtems_chain_get_unprotected(&transfer->bds)) != NULL)
    {                                                                 
      rtems_bdbuf_buffer* bd = (rtems_bdbuf_buffer*) node;            
      bool                write = false;                              
    cbf8:	e3a00000 	mov	r0, #0                                        
    cbfc:	eaffffd8 	b	cb64 <rtems_bdbuf_swapout_write+0x88>           
                                                                      
      if (rtems_chain_is_empty (&transfer->bds) ||                    
          (transfer->write_req->bufnum >= bdbuf_config.max_write_blocks))
        write = true;                                                 
                                                                      
      if (write)                                                      
    cc00:	e3500000 	cmp	r0, #0                                        
    cc04:	1affffdc 	bne	cb7c <rtems_bdbuf_swapout_write+0xa0>         
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    cc08:	e1550003 	cmp	r5, r3                                        
    cc0c:	1affffe5 	bne	cba8 <rtems_bdbuf_swapout_write+0xcc>         
                                                                      
    /*                                                                
     * If sync'ing and the deivce is capability of handling a sync IO control
     * call perform the call.                                         
     */                                                               
    if (transfer->syncing &&                                          
    cc10:	e5d43010 	ldrb	r3, [r4, #16]                                
    cc14:	e3530000 	cmp	r3, #0                                        
    cc18:	0a000003 	beq	cc2c <rtems_bdbuf_swapout_write+0x150>        
        (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_SYNC))         
    cc1c:	e5970008 	ldr	r0, [r7, #8]                                  
    cc20:	e590300c 	ldr	r3, [r0, #12]                                 
                                                                      
    /*                                                                
     * If sync'ing and the deivce is capability of handling a sync IO control
     * call perform the call.                                         
     */                                                               
    if (transfer->syncing &&                                          
    cc24:	e3130002 	tst	r3, #2                                        
    cc28:	1a000001 	bne	cc34 <rtems_bdbuf_swapout_write+0x158>        
    {                                                                 
      /* int result = */ dd->ioctl (dd->phys_dev, RTEMS_BLKDEV_REQ_SYNC, NULL);
      /* How should the error be handled ? */                         
    }                                                                 
  }                                                                   
}                                                                     
    cc2c:	e28dd004 	add	sp, sp, #4                                    
    cc30:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     * call perform the call.                                         
     */                                                               
    if (transfer->syncing &&                                          
        (dd->phys_dev->capabilities & RTEMS_BLKDEV_CAP_SYNC))         
    {                                                                 
      /* int result = */ dd->ioctl (dd->phys_dev, RTEMS_BLKDEV_REQ_SYNC, NULL);
    cc34:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
    cc38:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
    cc3c:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    cc40:	e597f038 	ldr	pc, [r7, #56]	; 0x38                          <== NOT EXECUTED
    cc44:	eafffff8 	b	cc2c <rtems_bdbuf_swapout_write+0x150>          <== NOT EXECUTED
                                                                      

0000bc3c <rtems_bdbuf_swapout_writereq_alloc>: * have been a rtems_chain_control. Simple, fast and less storage as the node * is already part of the buffer structure. */ rtems_blkdev_request* write_req = malloc (sizeof (rtems_blkdev_request) + (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
    bc3c:	e59f3040 	ldr	r3, [pc, #64]	; bc84 <rtems_bdbuf_swapout_writereq_alloc+0x48>
    bc40:	e5930004 	ldr	r0, [r3, #4]                                  
    bc44:	e1a00200 	lsl	r0, r0, #4                                    
 *                                                                    
 * @return rtems_blkdev_request* The write reference memory.          
 */                                                                   
static rtems_blkdev_request*                                          
rtems_bdbuf_swapout_writereq_alloc (void)                             
{                                                                     
    bc48:	e92d4010 	push	{r4, lr}                                     
   * @note chrisj The rtems_blkdev_request and the array at the end is a hack.
   * I am disappointment at finding code like this in RTEMS. The request should
   * have been a rtems_chain_control. Simple, fast and less storage as the node
   * is already part of the buffer structure.                         
   */                                                                 
  rtems_blkdev_request* write_req =                                   
    bc4c:	e2800018 	add	r0, r0, #24                                   
    bc50:	ebffe02f 	bl	3d14 <malloc>                                  
    malloc (sizeof (rtems_blkdev_request) +                           
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
                                                                      
  if (!write_req)                                                     
    bc54:	e2504000 	subs	r4, r0, #0                                   
    bc58:	0a000007 	beq	bc7c <rtems_bdbuf_swapout_writereq_alloc+0x40>
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);               
                                                                      
  write_req->req = RTEMS_BLKDEV_REQ_WRITE;                            
    bc5c:	e3a03001 	mov	r3, #1                                        
    bc60:	e5843000 	str	r3, [r4]                                      
  write_req->done = rtems_bdbuf_transfer_done;                        
    bc64:	e59f301c 	ldr	r3, [pc, #28]	; bc88 <rtems_bdbuf_swapout_writereq_alloc+0x4c>
    bc68:	e5843004 	str	r3, [r4, #4]                                  
  write_req->io_task = rtems_task_self ();                            
    bc6c:	eb000fb1 	bl	fb38 <rtems_task_self>                         
    bc70:	e5840014 	str	r0, [r4, #20]                                 
                                                                      
  return write_req;                                                   
}                                                                     
    bc74:	e1a00004 	mov	r0, r4                                        
    bc78:	e8bd8010 	pop	{r4, pc}                                      
  rtems_blkdev_request* write_req =                                   
    malloc (sizeof (rtems_blkdev_request) +                           
            (bdbuf_config.max_write_blocks * sizeof (rtems_blkdev_sg_buffer)));
                                                                      
  if (!write_req)                                                     
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_REQ_NOMEM);               
    bc7c:	e3a00009 	mov	r0, #9                                        <== NOT EXECUTED
    bc80:	ebffff45 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000daac <rtems_bdbuf_sync>: } rtems_status_code rtems_bdbuf_sync (rtems_bdbuf_buffer *bd) {
    daac:	e92d4070 	push	{r4, r5, r6, lr}                             
}                                                                     
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    dab0:	e2504000 	subs	r4, r0, #0                                   
    dab4:	0a00002a 	beq	db64 <rtems_bdbuf_sync+0xb8>                  
  if (rtems_bdbuf_tracer)                                             
  {                                                                   
    printf ("bdbuf:%s: %" PRIu32 "\n", kind, bd->block);              
    rtems_bdbuf_show_users (kind, bd);                                
  }                                                                   
  rtems_bdbuf_lock_cache();                                           
    dab8:	ebfff7bb 	bl	b9ac <rtems_bdbuf_lock_cache>                  
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "sync");              
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
    dabc:	e5940020 	ldr	r0, [r4, #32]                                 
    dac0:	e3500003 	cmp	r0, #3                                        
    dac4:	2a000001 	bcs	dad0 <rtems_bdbuf_sync+0x24>                  
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
      break;                                                          
    default:                                                          
      rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_5);
    dac8:	e3a01011 	mov	r1, #17                                       <== NOT EXECUTED
    dacc:	ebfff7cc 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
                                                                      
  sc = rtems_bdbuf_check_bd_and_lock_cache (bd, "sync");              
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  switch (bd->state)                                                  
    dad0:	e3500005 	cmp	r0, #5                                        
    dad4:	9a000006 	bls	daf4 <rtems_bdbuf_sync+0x48>                  
    dad8:	e3500006 	cmp	r0, #6                                        
    dadc:	1afffff9 	bne	dac8 <rtems_bdbuf_sync+0x1c>                  
    case RTEMS_BDBUF_STATE_ACCESS_EMPTY:                              
    case RTEMS_BDBUF_STATE_ACCESS_MODIFIED:                           
      rtems_bdbuf_sync_after_access (bd);                             
      break;                                                          
    case RTEMS_BDBUF_STATE_ACCESS_PURGED:                             
      rtems_bdbuf_discard_buffer_after_access (bd);                   
    dae0:	e1a00004 	mov	r0, r4                                        
    dae4:	ebfffb5d 	bl	c860 <rtems_bdbuf_discard_buffer_after_access> 
  }                                                                   
                                                                      
  if (rtems_bdbuf_tracer)                                             
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
    dae8:	ebfff7c8 	bl	ba10 <rtems_bdbuf_unlock_cache>                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    daec:	e3a00000 	mov	r0, #0                                        
    daf0:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  Chain_Node *tail = _Chain_Tail( the_chain );                        
  Chain_Node *old_last = tail->previous;                              
    daf4:	e59f50e4 	ldr	r5, [pc, #228]	; dbe0 <rtems_bdbuf_sync+0x134>
{                                                                     
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
                                                                      
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
                                                                      
  if (bd->waiters)                                                    
    daf8:	e5941024 	ldr	r1, [r4, #36]	; 0x24                          
    dafc:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          
                                                                      
  the_node->next = tail;                                              
    db00:	e285205c 	add	r2, r5, #92	; 0x5c                            
    db04:	e3510000 	cmp	r1, #0                                        
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    db08:	e3a01008 	mov	r1, #8                                        
    db0c:	e5841020 	str	r1, [r4, #32]                                 
    db10:	e5842000 	str	r2, [r4]                                      
  tail->previous = the_node;                                          
    db14:	e5854060 	str	r4, [r5, #96]	; 0x60                          
  old_last->next = the_node;                                          
    db18:	e5834000 	str	r4, [r3]                                      
  the_node->previous = old_last;                                      
    db1c:	e5843004 	str	r3, [r4, #4]                                  
{                                                                     
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
                                                                      
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
                                                                      
  if (bd->waiters)                                                    
    db20:	1a000021 	bne	dbac <rtems_bdbuf_sync+0x100>                 
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
                                                                      
  rtems_bdbuf_wake_swapper ();                                        
    db24:	ebfff7cb 	bl	ba58 <rtems_bdbuf_wake_swapper>                
static void                                                           
rtems_bdbuf_wait_for_sync_done (rtems_bdbuf_buffer *bd)               
{                                                                     
  while (true)                                                        
  {                                                                   
    switch (bd->state)                                                
    db28:	e5940020 	ldr	r0, [r4, #32]                                 
    db2c:	e2403001 	sub	r3, r0, #1                                    
    db30:	e3530009 	cmp	r3, #9                                        
    db34:	979ff103 	ldrls	pc, [pc, r3, lsl #2]                        
    db38:	ea000015 	b	db94 <rtems_bdbuf_sync+0xe8>                    <== NOT EXECUTED
    db3c:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db40:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db44:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db48:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db4c:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db50:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db54:	0000db6c 	.word	0x0000db6c                                  <== NOT EXECUTED
    db58:	0000db9c 	.word	0x0000db9c                                  <== NOT EXECUTED
    db5c:	0000db9c 	.word	0x0000db9c                                  <== NOT EXECUTED
    db60:	0000db9c 	.word	0x0000db9c                                  <== NOT EXECUTED
                                                                      
static rtems_status_code                                              
rtems_bdbuf_check_bd_and_lock_cache (rtems_bdbuf_buffer *bd, const char *kind)
{                                                                     
  if (bd == NULL)                                                     
    return RTEMS_INVALID_ADDRESS;                                     
    db64:	e3a00009 	mov	r0, #9                                        <== NOT EXECUTED
    rtems_bdbuf_show_usage ();                                        
                                                                      
  rtems_bdbuf_unlock_cache ();                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    db68:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
  rtems_bdbuf_wait_for_sync_done (bd);                                
                                                                      
  /*                                                                  
   * We may have created a cached or empty buffer which may be recycled.
   */                                                                 
  if (bd->waiters == 0                                                
    db6c:	e5946024 	ldr	r6, [r4, #36]	; 0x24                          
    db70:	e3560000 	cmp	r6, #0                                        
    db74:	1affffdb 	bne	dae8 <rtems_bdbuf_sync+0x3c>                  
        && (bd->state == RTEMS_BDBUF_STATE_CACHED                     
    db78:	e3530001 	cmp	r3, #1                                        
    db7c:	8affffd9 	bhi	dae8 <rtems_bdbuf_sync+0x3c>                  
          || bd->state == RTEMS_BDBUF_STATE_EMPTY))                   
  {                                                                   
    if (bd->state == RTEMS_BDBUF_STATE_EMPTY)                         
    db80:	e3500001 	cmp	r0, #1                                        
    db84:	0a00000b 	beq	dbb8 <rtems_bdbuf_sync+0x10c>                 
    {                                                                 
      rtems_bdbuf_remove_from_tree (bd);                              
      rtems_bdbuf_make_free_and_add_to_lru_list (bd);                 
    }                                                                 
    rtems_bdbuf_wake (&bdbuf_cache.buffer_waiters);                   
    db88:	e59f0054 	ldr	r0, [pc, #84]	; dbe4 <rtems_bdbuf_sync+0x138> 
    db8c:	ebfff850 	bl	bcd4 <rtems_bdbuf_wake>                        
    db90:	eaffffd4 	b	dae8 <rtems_bdbuf_sync+0x3c>                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
        break;                                                        
      default:                                                        
        rtems_bdbuf_fatal_with_state (bd->state, RTEMS_BDBUF_FATAL_STATE_9);
    db94:	e3a01015 	mov	r1, #21                                       <== NOT EXECUTED
    db98:	ebfff799 	bl	ba04 <rtems_bdbuf_fatal_with_state>            <== NOT EXECUTED
      case RTEMS_BDBUF_STATE_ACCESS_PURGED:                           
        return;                                                       
      case RTEMS_BDBUF_STATE_SYNC:                                    
      case RTEMS_BDBUF_STATE_TRANSFER:                                
      case RTEMS_BDBUF_STATE_TRANSFER_PURGED:                         
        rtems_bdbuf_wait (bd, &bdbuf_cache.transfer_waiters);         
    db9c:	e1a00004 	mov	r0, r4                                        
    dba0:	e59f1040 	ldr	r1, [pc, #64]	; dbe8 <rtems_bdbuf_sync+0x13c> 
    dba4:	ebfff7fb 	bl	bb98 <rtems_bdbuf_wait>                        
    dba8:	eaffffde 	b	db28 <rtems_bdbuf_sync+0x7c>                    
  rtems_bdbuf_set_state (bd, RTEMS_BDBUF_STATE_SYNC);                 
                                                                      
  rtems_chain_append_unprotected (&bdbuf_cache.sync, &bd->link);      
                                                                      
  if (bd->waiters)                                                    
    rtems_bdbuf_wake (&bdbuf_cache.access_waiters);                   
    dbac:	e2850064 	add	r0, r5, #100	; 0x64                           
    dbb0:	ebfff847 	bl	bcd4 <rtems_bdbuf_wake>                        
    dbb4:	eaffffda 	b	db24 <rtems_bdbuf_sync+0x78>                    
        && (bd->state == RTEMS_BDBUF_STATE_CACHED                     
          || bd->state == RTEMS_BDBUF_STATE_EMPTY))                   
  {                                                                   
    if (bd->state == RTEMS_BDBUF_STATE_EMPTY)                         
    {                                                                 
      rtems_bdbuf_remove_from_tree (bd);                              
    dbb8:	e1a00004 	mov	r0, r4                                        
    dbbc:	ebfff89b 	bl	be30 <rtems_bdbuf_remove_from_tree>            
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    dbc0:	e5953040 	ldr	r3, [r5, #64]	; 0x40                          
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    dbc4:	e59f2020 	ldr	r2, [pc, #32]	; dbec <rtems_bdbuf_sync+0x140> 
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_set_state (rtems_bdbuf_buffer *bd, rtems_bdbuf_buf_state state)
{                                                                     
  bd->state = state;                                                  
    dbc8:	e5846020 	str	r6, [r4, #32]                                 
    dbcc:	e5842004 	str	r2, [r4, #4]                                  
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    dbd0:	e5854040 	str	r4, [r5, #64]	; 0x40                          
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    dbd4:	e5834004 	str	r4, [r3, #4]                                  
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
    dbd8:	e5843000 	str	r3, [r4]                                      
    dbdc:	eaffffe9 	b	db88 <rtems_bdbuf_sync+0xdc>                    
                                                                      

0000ba10 <rtems_bdbuf_unlock_cache>: * Unlock the cache. */ static void rtems_bdbuf_unlock_cache (void) { rtems_bdbuf_unlock (bdbuf_cache.lock, RTEMS_BDBUF_FATAL_CACHE_UNLOCK);
    ba10:	e59f3018 	ldr	r3, [pc, #24]	; ba30 <rtems_bdbuf_unlock_cache+0x20>
/**                                                                   
 * Unlock the cache.                                                  
 */                                                                   
static void                                                           
rtems_bdbuf_unlock_cache (void)                                       
{                                                                     
    ba14:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
 * @param fatal_error_code The error code if the call fails.          
 */                                                                   
static void                                                           
rtems_bdbuf_unlock (rtems_id lock, uint32_t fatal_error_code)         
{                                                                     
  rtems_status_code sc = rtems_semaphore_release (lock);              
    ba18:	e5930028 	ldr	r0, [r3, #40]	; 0x28                          
    ba1c:	ebfff078 	bl	7c04 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
    ba20:	e3500000 	cmp	r0, #0                                        
    ba24:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_bdbuf_fatal (fatal_error_code);                             
    ba28:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
    ba2c:	ebffffda 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000ba34 <rtems_bdbuf_unlock_sync>: * Unlock the cache's sync lock. Any blocked writers are woken. */ static void rtems_bdbuf_unlock_sync (void) { rtems_bdbuf_unlock (bdbuf_cache.sync_lock,
    ba34:	e59f3018 	ldr	r3, [pc, #24]	; ba54 <rtems_bdbuf_unlock_sync+0x20>
/**                                                                   
 * Unlock the cache's sync lock. Any blocked writers are woken.       
 */                                                                   
static void                                                           
rtems_bdbuf_unlock_sync (void)                                        
{                                                                     
    ba38:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
 * @param fatal_error_code The error code if the call fails.          
 */                                                                   
static void                                                           
rtems_bdbuf_unlock (rtems_id lock, uint32_t fatal_error_code)         
{                                                                     
  rtems_status_code sc = rtems_semaphore_release (lock);              
    ba3c:	e593002c 	ldr	r0, [r3, #44]	; 0x2c                          
    ba40:	ebfff06f 	bl	7c04 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
    ba44:	e3500000 	cmp	r0, #0                                        
    ba48:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_bdbuf_fatal (fatal_error_code);                             
    ba4c:	e3a0001a 	mov	r0, #26                                       <== NOT EXECUTED
    ba50:	ebffffd1 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000bbf4 <rtems_bdbuf_wait_for_event>: return RTEMS_UNSATISFIED; } static void rtems_bdbuf_wait_for_event (rtems_event_set event) {
    bbf4:	e92d4010 	push	{r4, lr}                                     
    bbf8:	e24dd004 	sub	sp, sp, #4                                    
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_event_set   out = 0;                                          
    bbfc:	e3a01000 	mov	r1, #0                                        
    bc00:	e28d3004 	add	r3, sp, #4                                    
    bc04:	e5231004 	str	r1, [r3, #-4]!                                
                                                                      
  sc = rtems_event_receive (event,                                    
    bc08:	e1a02001 	mov	r2, r1                                        
    bc0c:	e1a0300d 	mov	r3, sp                                        
  return RTEMS_UNSATISFIED;                                           
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wait_for_event (rtems_event_set event)                    
{                                                                     
    bc10:	e1a04000 	mov	r4, r0                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_event_set   out = 0;                                          
                                                                      
  sc = rtems_event_receive (event,                                    
    bc14:	ebffee34 	bl	74ec <rtems_event_receive>                     
                            RTEMS_EVENT_ALL | RTEMS_WAIT,             
                            RTEMS_NO_TIMEOUT,                         
                            &out);                                    
                                                                      
  if (sc != RTEMS_SUCCESSFUL || out != event)                         
    bc18:	e3500000 	cmp	r0, #0                                        
    bc1c:	1a000004 	bne	bc34 <rtems_bdbuf_wait_for_event+0x40>        
    bc20:	e59d3000 	ldr	r3, [sp]                                      
    bc24:	e1530004 	cmp	r3, r4                                        
    bc28:	1a000001 	bne	bc34 <rtems_bdbuf_wait_for_event+0x40>        
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT);                  
}                                                                     
    bc2c:	e28dd004 	add	sp, sp, #4                                    
    bc30:	e8bd8010 	pop	{r4, pc}                                      
                            RTEMS_EVENT_ALL | RTEMS_WAIT,             
                            RTEMS_NO_TIMEOUT,                         
                            &out);                                    
                                                                      
  if (sc != RTEMS_SUCCESSFUL || out != event)                         
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT);                  
    bc34:	e3a0001c 	mov	r0, #28                                       <== NOT EXECUTED
    bc38:	ebffff57 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000ba80 <rtems_bdbuf_wait_for_transient_event>: rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_EVNT); } static void rtems_bdbuf_wait_for_transient_event (void) {
    ba80:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  rtems_interval ticks                                                
)                                                                     
{                                                                     
  rtems_event_set event_out;                                          
                                                                      
  return rtems_event_system_receive(                                  
    ba84:	e3a01000 	mov	r1, #0                                        
    ba88:	e24dd004 	sub	sp, sp, #4                                    
    ba8c:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 
    ba90:	e1a02001 	mov	r2, r1                                        
    ba94:	e1a0300d 	mov	r3, sp                                        
    ba98:	eb000fa8 	bl	f940 <rtems_event_system_receive>              
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_event_transient_receive (RTEMS_WAIT, RTEMS_NO_TIMEOUT);  
  if (sc != RTEMS_SUCCESSFUL)                                         
    ba9c:	e3500000 	cmp	r0, #0                                        
    baa0:	1a000001 	bne	baac <rtems_bdbuf_wait_for_transient_event+0x2c>
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_TRANS_EVNT);            
}                                                                     
    baa4:	e28dd004 	add	sp, sp, #4                                    
    baa8:	e8bd8000 	pop	{pc}                                          
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  sc = rtems_event_transient_receive (RTEMS_WAIT, RTEMS_NO_TIMEOUT);  
  if (sc != RTEMS_SUCCESSFUL)                                         
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_WAIT_TRANS_EVNT);            
    baac:	e3a0001d 	mov	r0, #29                                       <== NOT EXECUTED
    bab0:	ebffffb9 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000bcd4 <rtems_bdbuf_wake>: static void rtems_bdbuf_wake (const rtems_bdbuf_waiters *waiters) { rtems_status_code sc = RTEMS_SUCCESSFUL; if (waiters->count > 0)
    bcd4:	e5903000 	ldr	r3, [r0]                                      
    bcd8:	e3530000 	cmp	r3, #0                                        
 * Wake a blocked resource. The resource has a counter that lets us know if
 * there are any waiters.                                             
 */                                                                   
static void                                                           
rtems_bdbuf_wake (const rtems_bdbuf_waiters *waiters)                 
{                                                                     
    bcdc:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  if (waiters->count > 0)                                             
    bce0:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
  {                                                                   
    sc = rtems_semaphore_flush (waiters->sema);                       
    bce4:	e5900004 	ldr	r0, [r0, #4]                                  
    bce8:	eb000ee9 	bl	f894 <rtems_semaphore_flush>                   
    if (sc != RTEMS_SUCCESSFUL)                                       
    bcec:	e3500000 	cmp	r0, #0                                        
    bcf0:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
      rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_CACHE_WAKE);               
    bcf4:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
    bcf8:	ebffff27 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

0000ba58 <rtems_bdbuf_wake_swapper>: } static void rtems_bdbuf_wake_swapper (void) { rtems_status_code sc = rtems_event_send (bdbuf_cache.swapout,
    ba58:	e59f301c 	ldr	r3, [pc, #28]	; ba7c <rtems_bdbuf_wake_swapper+0x24>
  }                                                                   
}                                                                     
                                                                      
static void                                                           
rtems_bdbuf_wake_swapper (void)                                       
{                                                                     
    ba5c:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  rtems_status_code sc = rtems_event_send (bdbuf_cache.swapout,       
    ba60:	e3a01004 	mov	r1, #4                                        
    ba64:	e5930000 	ldr	r0, [r3]                                      
    ba68:	ebffef02 	bl	7678 <rtems_event_send>                        
                                           RTEMS_BDBUF_SWAPOUT_SYNC); 
  if (sc != RTEMS_SUCCESSFUL)                                         
    ba6c:	e3500000 	cmp	r0, #0                                        
    ba70:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    rtems_bdbuf_fatal (RTEMS_BDBUF_FATAL_SO_WAKE_1);                  
    ba74:	e3a0000b 	mov	r0, #11                                       <== NOT EXECUTED
    ba78:	ebffffc7 	bl	b99c <rtems_bdbuf_fatal>                       <== NOT EXECUTED
                                                                      

00001e44 <rtems_bdpart_create>: const rtems_bdpart_format *format, rtems_bdpart_partition *pt, const unsigned *dist, size_t count ) {
    1e44:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
    1e48:	e2514000 	subs	r4, r1, #0                                   
  const rtems_bdpart_format *format,                                  
  rtems_bdpart_partition *pt,                                         
  const unsigned *dist,                                               
  size_t count                                                        
)                                                                     
{                                                                     
    1e4c:	e24dd020 	sub	sp, sp, #32                                   
    1e50:	e1a06002 	mov	r6, r2                                        
    1e54:	e1a07003 	mov	r7, r3                                        
    1e58:	e59d5044 	ldr	r5, [sp, #68]	; 0x44                          
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
    1e5c:	0a000002 	beq	1e6c <rtems_bdpart_create+0x28>               
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    1e60:	e5943000 	ldr	r3, [r4]                                      
    1e64:	e3530000 	cmp	r3, #0                                        
    1e68:	0a00000e 	beq	1ea8 <rtems_bdpart_create+0x64>               
    && format->mbr.dos_compatibility;                                 
  rtems_blkdev_bnum disk_end = 0;                                     
    1e6c:	e3a0a000 	mov	sl, #0                                        <== NOT EXECUTED
    1e70:	e58da01c 	str	sl, [sp, #28]                                 <== NOT EXECUTED
  rtems_blkdev_bnum pos = 0;                                          
  rtems_blkdev_bnum dist_sum = 0;                                     
  rtems_blkdev_bnum record_space =                                    
    1e74:	e3a08001 	mov	r8, #1                                        <== NOT EXECUTED
  rtems_blkdev_bnum overhead = 0;                                     
  rtems_blkdev_bnum free_space = 0;                                   
  size_t i = 0;                                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    1e78:	e3550000 	cmp	r5, #0                                        
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
    1e7c:	01a09005 	moveq	r9, r5                                      
  rtems_blkdev_bnum overhead = 0;                                     
  rtems_blkdev_bnum free_space = 0;                                   
  size_t i = 0;                                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    1e80:	0a000005 	beq	1e9c <rtems_bdpart_create+0x58>               
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || dist == NULL) {                 
    1e84:	e3540000 	cmp	r4, #0                                        
    1e88:	13560000 	cmpne	r6, #0                                      
    1e8c:	13a01000 	movne	r1, #0                                      
    1e90:	03a01001 	moveq	r1, #1                                      
    1e94:	1a00000a 	bne	1ec4 <rtems_bdpart_create+0x80>               
    return RTEMS_INVALID_ADDRESS;                                     
    1e98:	e3a09009 	mov	r9, #9                                        <== NOT EXECUTED
                                                                      
  /* Expand the last partition to the disk end */                     
  pt [count - 1].end = disk_end;                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    1e9c:	e1a00009 	mov	r0, r9                                        
    1ea0:	e28dd020 	add	sp, sp, #32                                   
    1ea4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
    1ea8:	e5d42008 	ldrb	r2, [r4, #8]                                 
    1eac:	e3520000 	cmp	r2, #0                                        
    1eb0:	0affffed 	beq	1e6c <rtems_bdpart_create+0x28>               
  rtems_blkdev_bnum disk_end = 0;                                     
    1eb4:	e58d301c 	str	r3, [sp, #28]                                 
  const unsigned *dist,                                               
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool dos_compatibility = format != NULL                             
    1eb8:	e3a0a001 	mov	sl, #1                                        
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_blkdev_bnum disk_end = 0;                                     
  rtems_blkdev_bnum pos = 0;                                          
  rtems_blkdev_bnum dist_sum = 0;                                     
  rtems_blkdev_bnum record_space =                                    
    1ebc:	e3a0803f 	mov	r8, #63	; 0x3f                                
    1ec0:	eaffffec 	b	1e78 <rtems_bdpart_create+0x34>                 
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || dist == NULL) {                 
    1ec4:	e3570000 	cmp	r7, #0                                        
    1ec8:	0afffff2 	beq	1e98 <rtems_bdpart_create+0x54>               
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, NULL, NULL, &disk_end); 
    1ecc:	e1a02001 	mov	r2, r1                                        
    1ed0:	e28d301c 	add	r3, sp, #28                                   
    1ed4:	eb000120 	bl	235c <rtems_bdpart_get_disk_data>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
    1ed8:	e2509000 	subs	r9, r0, #0                                   
    1edc:	1affffee 	bne	1e9c <rtems_bdpart_create+0x58>               
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    unsigned prev_sum = dist_sum;                                     
                                                                      
    dist_sum += dist [i];                                             
    1ee0:	e597b000 	ldr	fp, [r7]                                      
                                                                      
    if (dist_sum < prev_sum) {                                        
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
                                                                      
    if (dist [i] == 0) {                                              
    1ee4:	e35b0000 	cmp	fp, #0                                        
    1ee8:	0a00005b 	beq	205c <rtems_bdpart_create+0x218>              
    1eec:	e1a03007 	mov	r3, r7                                        
    1ef0:	e1a00007 	mov	r0, r7                                        
    1ef4:	e1a01009 	mov	r1, r9                                        
    1ef8:	e1a0700b 	mov	r7, fp                                        
    1efc:	ea000004 	b	1f14 <rtems_bdpart_create+0xd0>                 
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    unsigned prev_sum = dist_sum;                                     
                                                                      
    dist_sum += dist [i];                                             
    1f00:	e5b02004 	ldr	r2, [r0, #4]!                                 
                                                                      
    if (dist_sum < prev_sum) {                                        
    1f04:	e0927007 	adds	r7, r2, r7                                   
    1f08:	2a000053 	bcs	205c <rtems_bdpart_create+0x218>              
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
                                                                      
    if (dist [i] == 0) {                                              
    1f0c:	e3520000 	cmp	r2, #0                                        
    1f10:	0a000051 	beq	205c <rtems_bdpart_create+0x218>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  /* Get distribution sum and check for overflow */                   
  for (i = 0; i < count; ++i) {                                       
    1f14:	e2811001 	add	r1, r1, #1                                    
    1f18:	e1510005 	cmp	r1, r5                                        
    1f1c:	1afffff7 	bne	1f00 <rtems_bdpart_create+0xbc>               
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
    1f20:	e5942000 	ldr	r2, [r4]                                      
    1f24:	e3520000 	cmp	r2, #0                                        
    return RTEMS_NOT_IMPLEMENTED;                                     
    1f28:	13a09018 	movne	r9, #24                                     
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
    1f2c:	1affffda 	bne	1e9c <rtems_bdpart_create+0x58>               
    return RTEMS_NOT_IMPLEMENTED;                                     
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
    1f30:	e35a0000 	cmp	sl, #0                                        
    1f34:	1a00004a 	bne	2064 <rtems_bdpart_create+0x220>              
    1f38:	e59d201c 	ldr	r2, [sp, #28]                                 <== NOT EXECUTED
    1f3c:	e58d2010 	str	r2, [sp, #16]                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * In case we need an extended partition and logical partitions we have to
   * account for the space of each EBR.                               
   */                                                                 
  if (count > 4) {                                                    
    1f40:	e3550004 	cmp	r5, #4                                        
    overhead += (count - 3) * record_space;                           
    1f44:	82452003 	subhi	r2, r5, #3                                  
    1f48:	80228298 	mlahi	r2, r8, r2, r8                              
                                                                      
  /*                                                                  
   * We need at least space for the MBR and the compatibility space for the
   * first primary partition.                                         
   */                                                                 
  overhead += record_space;                                           
    1f4c:	91a02008 	movls	r2, r8                                      
                                                                      
  /*                                                                  
   * Account space to align every partition on cylinder boundaries if 
   * necessary.                                                       
   */                                                                 
  if (dos_compatibility) {                                            
    1f50:	e35a0000 	cmp	sl, #0                                        
    overhead += (count - 1) * record_space;                           
    1f54:	12451001 	subne	r1, r5, #1                                  
    1f58:	10222891 	mlane	r2, r1, r8, r2                              
  }                                                                   
                                                                      
  /* Check disk space */                                              
  if ((overhead + count) > disk_end) {                                
    1f5c:	e59d0010 	ldr	r0, [sp, #16]                                 
    1f60:	e0821005 	add	r1, r2, r5                                    
    1f64:	e1510000 	cmp	r1, r0                                        
    return RTEMS_IO_ERROR;                                            
    1f68:	83a0901b 	movhi	r9, #27                                     
  if (dos_compatibility) {                                            
    overhead += (count - 1) * record_space;                           
  }                                                                   
                                                                      
  /* Check disk space */                                              
  if ((overhead + count) > disk_end) {                                
    1f6c:	8affffca 	bhi	1e9c <rtems_bdpart_create+0x58>               
                                                                      
  /* Begin of first primary partition */                              
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
    1f70:	e062a000 	rsb	sl, r2, r0                                    
                                                                      
  for (i = 0; i < count; ++i) {                                       
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
    1f74:	e0000a9b 	mul	r0, fp, sl                                    
    if (s < free_space || s < dist [i]) {                             
    1f78:	e15a0000 	cmp	sl, r0                                        
    1f7c:	8a000036 	bhi	205c <rtems_bdpart_create+0x218>              
    1f80:	e15b0000 	cmp	fp, r0                                        
    1f84:	8a000034 	bhi	205c <rtems_bdpart_create+0x218>              
    1f88:	e3550004 	cmp	r5, #4                                        
    1f8c:	93a02000 	movls	r2, #0                                      
    1f90:	83a02001 	movhi	r2, #1                                      
#endif                                                                
                                                                      
#include <rtems.h>                                                    
#include <rtems/bdpart.h>                                             
                                                                      
rtems_status_code rtems_bdpart_create(                                
    1f94:	e286c030 	add	ip, r6, #48	; 0x30                            
    1f98:	e58d9014 	str	r9, [sp, #20]                                 
    1f9c:	e58d700c 	str	r7, [sp, #12]                                 
  for (i = 0; i < count; ++i) {                                       
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
    if (s < free_space || s < dist [i]) {                             
    1fa0:	e58d2008 	str	r2, [sp, #8]                                  
  if ((overhead + count) > disk_end) {                                
    return RTEMS_IO_ERROR;                                            
  }                                                                   
                                                                      
  /* Begin of first primary partition */                              
  pos = record_space;                                                 
    1fa4:	e1a04008 	mov	r4, r8                                        
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
    1fa8:	e3a0b000 	mov	fp, #0                                        
    1fac:	e1a09003 	mov	r9, r3                                        
    1fb0:	e1a0700c 	mov	r7, ip                                        
    1fb4:	e58d6018 	str	r6, [sp, #24]                                 
    1fb8:	e58d5004 	str	r5, [sp, #4]                                  
    1fbc:	ea000007 	b	1fe0 <rtems_bdpart_create+0x19c>                
    rtems_bdpart_partition *p = pt + i;                               
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
    1fc0:	e5b93004 	ldr	r3, [r9, #4]!                                 
    1fc4:	e000039a 	mul	r0, sl, r3                                    
    if (s < free_space || s < dist [i]) {                             
    1fc8:	e15a0000 	cmp	sl, r0                                        
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
    rtems_bdpart_partition *p = pt + i;                               
    1fcc:	e1a06007 	mov	r6, r7                                        
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
    if (s < free_space || s < dist [i]) {                             
    1fd0:	8a000021 	bhi	205c <rtems_bdpart_create+0x218>              
    1fd4:	e1530000 	cmp	r3, r0                                        
    1fd8:	e2877030 	add	r7, r7, #48	; 0x30                            
    1fdc:	8a00001e 	bhi	205c <rtems_bdpart_create+0x218>              
      /* TODO: Calculate without overflow */                          
      return RTEMS_INVALID_NUMBER;                                    
    }                                                                 
    s /= dist_sum;                                                    
    1fe0:	e59d100c 	ldr	r1, [sp, #12]                                 
    1fe4:	eb007775 	bl	1fdc0 <__aeabi_uidiv>                          
                                                                      
    /* Ensure that the partition is not empty */                      
    if (s == 0) {                                                     
      s = 1;                                                          
    1fe8:	e3500000 	cmp	r0, #0                                        
    1fec:	11a05000 	movne	r5, r0                                      
    1ff0:	03a05001 	moveq	r5, #1                                      
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
    1ff4:	e1a00005 	mov	r0, r5                                        
    1ff8:	e1a01008 	mov	r1, r8                                        
    1ffc:	eb0077b5 	bl	1fed8 <__umodsi3>                              
                                                                      
    /* Reserve space for the EBR if necessary */                      
    if (count > 4 && i > 2) {                                         
    2000:	e59d3008 	ldr	r3, [sp, #8]                                  
    2004:	e35b0002 	cmp	fp, #2                                        
    2008:	93a03000 	movls	r3, #0                                      
    200c:	82033001 	andhi	r3, r3, #1                                  
    2010:	e3530000 	cmp	r3, #0                                        
    if (s == 0) {                                                     
      s = 1;                                                          
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
    2014:	e0855008 	add	r5, r5, r8                                    
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
    2018:	e59d3004 	ldr	r3, [sp, #4]                                  
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
                                                                      
    /* Reserve space for the EBR if necessary */                      
    if (count > 4 && i > 2) {                                         
      pos += record_space;                                            
    201c:	10844008 	addne	r4, r4, r8                                  
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
    2020:	e28bb001 	add	fp, fp, #1                                    
    if (s == 0) {                                                     
      s = 1;                                                          
    }                                                                 
                                                                      
    /* Align partition upwards */                                     
    s += record_space - (s % record_space);                           
    2024:	e0605005 	rsb	r5, r0, r5                                    
    if (count > 4 && i > 2) {                                         
      pos += record_space;                                            
    }                                                                 
                                                                      
    /* Partition begin and end */                                     
    p->begin = pos;                                                   
    2028:	e5864000 	str	r4, [r6]                                      
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
    202c:	e153000b 	cmp	r3, fp                                        
      pos += record_space;                                            
    }                                                                 
                                                                      
    /* Partition begin and end */                                     
    p->begin = pos;                                                   
    pos += s;                                                         
    2030:	e0844005 	add	r4, r4, r5                                    
    p->end = pos;                                                     
    2034:	e5864004 	str	r4, [r6, #4]                                  
  pos = record_space;                                                 
                                                                      
  /* Space for partitions */                                          
  free_space = disk_end - overhead;                                   
                                                                      
  for (i = 0; i < count; ++i) {                                       
    2038:	8affffe0 	bhi	1fc0 <rtems_bdpart_create+0x17c>              
    203c:	e59d6018 	ldr	r6, [sp, #24]                                 
    pos += s;                                                         
    p->end = pos;                                                     
  }                                                                   
                                                                      
  /* Expand the last partition to the disk end */                     
  pt [count - 1].end = disk_end;                                      
    2040:	e2435001 	sub	r5, r3, #1                                    
    2044:	e3a03030 	mov	r3, #48	; 0x30                                
    2048:	e0266593 	mla	r6, r3, r5, r6                                
    204c:	e59d2010 	ldr	r2, [sp, #16]                                 
    2050:	e59d9014 	ldr	r9, [sp, #20]                                 
    2054:	e5862004 	str	r2, [r6, #4]                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    2058:	eaffff8f 	b	1e9c <rtems_bdpart_create+0x58>                 
                                                                      
    /* Partition size */                                              
    rtems_blkdev_bnum s = free_space * dist [i];                      
    if (s < free_space || s < dist [i]) {                             
      /* TODO: Calculate without overflow */                          
      return RTEMS_INVALID_NUMBER;                                    
    205c:	e3a0900a 	mov	r9, #10                                       <== NOT EXECUTED
    2060:	eaffff8d 	b	1e9c <rtems_bdpart_create+0x58>                 <== NOT EXECUTED
    return RTEMS_NOT_IMPLEMENTED;                                     
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
    disk_end -= (disk_end % record_space);                            
    2064:	e59d401c 	ldr	r4, [sp, #28]                                 
    2068:	e1a01008 	mov	r1, r8                                        
    206c:	e1a00004 	mov	r0, r4                                        
    2070:	e58d3000 	str	r3, [sp]                                      
    2074:	eb007797 	bl	1fed8 <__umodsi3>                              
    2078:	e0604004 	rsb	r4, r0, r4                                    
    207c:	e58d4010 	str	r4, [sp, #16]                                 
    2080:	e58d401c 	str	r4, [sp, #28]                                 
    2084:	e59d3000 	ldr	r3, [sp]                                      
    2088:	eaffffac 	b	1f40 <rtems_bdpart_create+0xfc>                 
                                                                      

0000208c <rtems_bdpart_dump>: { uuid_unparse_lower( type, str); } void rtems_bdpart_dump( const rtems_bdpart_partition *pt, size_t count) {
    208c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
    2090:	e1a06001 	mov	r6, r1                                        
    2094:	e24dd038 	sub	sp, sp, #56	; 0x38                            
    2098:	e1a04000 	mov	r4, r0                                        
  size_t i = 0;                                                       
                                                                      
  printf(                                                             
    209c:	e59f00f4 	ldr	r0, [pc, #244]	; 2198 <rtems_bdpart_dump+0x10c>
    20a0:	eb0046e5 	bl	13c3c <puts>                                   
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
    20a4:	e3560000 	cmp	r6, #0                                        
    20a8:	0a00002a 	beq	2158 <rtems_bdpart_dump+0xcc>                 
    20ac:	e3a05000 	mov	r5, #0                                        
    20b0:	ea000015 	b	210c <rtems_bdpart_dump+0x80>                   
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
    20b4:	e5dd3037 	ldrb	r3, [sp, #55]	; 0x37                         
    20b8:	e353000b 	cmp	r3, #11                                       
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
    20bc:	059f30d8 	ldreq	r3, [pc, #216]	; 219c <rtems_bdpart_dump+0x110>
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
    20c0:	0a00000a 	beq	20f0 <rtems_bdpart_dump+0x64>                 
    20c4:	8a000027 	bhi	2168 <rtems_bdpart_dump+0xdc>                 <== NOT EXECUTED
    20c8:	e3530001 	cmp	r3, #1                                        <== NOT EXECUTED
        case RTEMS_BDPART_MBR_FAT_12:                                 
          type = "FAT 12";                                            
    20cc:	059f30cc 	ldreq	r3, [pc, #204]	; 21a0 <rtems_bdpart_dump+0x114><== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
    20d0:	0a000006 	beq	20f0 <rtems_bdpart_dump+0x64>                 <== NOT EXECUTED
    20d4:	e3530004 	cmp	r3, #4                                        <== NOT EXECUTED
    20d8:	0a00002c 	beq	2190 <rtems_bdpart_dump+0x104>                <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
          break;                                                      
        default:                                                      
          snprintf( type_buffer, sizeof( type_buffer), "0x%02" PRIx8, type_mbr);
    20dc:	e1a0000d 	mov	r0, sp                                        <== NOT EXECUTED
    20e0:	e3a01034 	mov	r1, #52	; 0x34                                <== NOT EXECUTED
    20e4:	e59f20b8 	ldr	r2, [pc, #184]	; 21a4 <rtems_bdpart_dump+0x118><== NOT EXECUTED
    20e8:	eb004771 	bl	13eb4 <snprintf>                               <== NOT EXECUTED
          type = type_buffer;                                         
    20ec:	e1a0300d 	mov	r3, sp                                        <== NOT EXECUTED
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
    }                                                                 
                                                                      
    printf(                                                           
    20f0:	e8940006 	ldm	r4, {r1, r2}                                  
    20f4:	e59f00ac 	ldr	r0, [pc, #172]	; 21a8 <rtems_bdpart_dump+0x11c>
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
    20f8:	e2855001 	add	r5, r5, #1                                    
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
    }                                                                 
                                                                      
    printf(                                                           
    20fc:	eb004697 	bl	13b60 <printf>                                 
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
    2100:	e1550006 	cmp	r5, r6                                        
    2104:	e2844030 	add	r4, r4, #48	; 0x30                            
    2108:	0a000012 	beq	2158 <rtems_bdpart_dump+0xcc>                 
    const rtems_bdpart_partition *p = pt + i;                         
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
    210c:	e2847008 	add	r7, r4, #8                                    
                                                                      
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
    2110:	e3a03000 	mov	r3, #0                                        
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
    2114:	e1a00007 	mov	r0, r7                                        
    2118:	e28d1037 	add	r1, sp, #55	; 0x37                            
                                                                      
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
    211c:	e5cd3037 	strb	r3, [sp, #55]	; 0x37                         
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
    2120:	eb000083 	bl	2334 <rtems_bdpart_to_mbr_partition_type>      
    2124:	e3500000 	cmp	r0, #0                                        
    2128:	1affffe1 	bne	20b4 <rtems_bdpart_dump+0x28>                 
static void rtems_bdpart_type_to_string(                              
  const uuid_t type,                                                  
  char str [37]                                                       
)                                                                     
{                                                                     
  uuid_unparse_lower( type, str);                                     
    212c:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    2130:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
    2134:	eb002b02 	bl	cd44 <uuid_unparse_lower>                      <== NOT EXECUTED
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
    2138:	e2855001 	add	r5, r5, #1                                    <== NOT EXECUTED
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
    }                                                                 
                                                                      
    printf(                                                           
    213c:	e8940006 	ldm	r4, {r1, r2}                                  <== NOT EXECUTED
          type = type_buffer;                                         
          break;                                                      
      }                                                               
    } else {                                                          
      rtems_bdpart_type_to_string( p->type, type_buffer);             
      type = type_buffer;                                             
    2140:	e1a0300d 	mov	r3, sp                                        <== NOT EXECUTED
    }                                                                 
                                                                      
    printf(                                                           
    2144:	e59f005c 	ldr	r0, [pc, #92]	; 21a8 <rtems_bdpart_dump+0x11c><== NOT EXECUTED
    2148:	eb004684 	bl	13b60 <printf>                                 <== NOT EXECUTED
    "------------+------------+-----------------------------------------------------\n"
    " BEGIN      | END        | TYPE\n"                               
    "------------+------------+-----------------------------------------------------\n"
  );                                                                  
                                                                      
  for (i = 0; i < count; ++i) {                                       
    214c:	e1550006 	cmp	r5, r6                                        <== NOT EXECUTED
    2150:	e2844030 	add	r4, r4, #48	; 0x30                            <== NOT EXECUTED
    2154:	1affffec 	bne	210c <rtems_bdpart_dump+0x80>                 <== NOT EXECUTED
      p->end,                                                         
      type                                                            
    );                                                                
  }                                                                   
                                                                      
  puts( "------------+------------+-----------------------------------------------------");
    2158:	e59f004c 	ldr	r0, [pc, #76]	; 21ac <rtems_bdpart_dump+0x120>
    215c:	eb0046b6 	bl	13c3c <puts>                                   
}                                                                     
    2160:	e28dd038 	add	sp, sp, #56	; 0x38                            
    2164:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
    2168:	e353000e 	cmp	r3, #14                                       <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16_LBA:                             
          type = "FAT 16 LBA";                                        
    216c:	059f303c 	ldreq	r3, [pc, #60]	; 21b0 <rtems_bdpart_dump+0x124><== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
    2170:	0affffde 	beq	20f0 <rtems_bdpart_dump+0x64>                 <== NOT EXECUTED
    2174:	e35300da 	cmp	r3, #218	; 0xda                               <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
          break;                                                      
        case RTEMS_BDPART_MBR_DATA:                                   
          type = "DATA";                                              
    2178:	059f3034 	ldreq	r3, [pc, #52]	; 21b4 <rtems_bdpart_dump+0x128><== NOT EXECUTED
    const char *type = NULL;                                          
    char type_buffer [52];                                            
    uint8_t type_mbr = 0;                                             
                                                                      
    if (rtems_bdpart_to_mbr_partition_type( p->type, &type_mbr)) {    
      switch (type_mbr) {                                             
    217c:	0affffdb 	beq	20f0 <rtems_bdpart_dump+0x64>                 <== NOT EXECUTED
    2180:	e353000c 	cmp	r3, #12                                       <== NOT EXECUTED
    2184:	1affffd4 	bne	20dc <rtems_bdpart_dump+0x50>                 <== NOT EXECUTED
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32:                                 
          type = "FAT 32";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_32_LBA:                             
          type = "FAT 32 LBA";                                        
    2188:	e59f3028 	ldr	r3, [pc, #40]	; 21b8 <rtems_bdpart_dump+0x12c><== NOT EXECUTED
          break;                                                      
    218c:	eaffffd7 	b	20f0 <rtems_bdpart_dump+0x64>                   <== NOT EXECUTED
      switch (type_mbr) {                                             
        case RTEMS_BDPART_MBR_FAT_12:                                 
          type = "FAT 12";                                            
          break;                                                      
        case RTEMS_BDPART_MBR_FAT_16:                                 
          type = "FAT 16";                                            
    2190:	e59f3024 	ldr	r3, [pc, #36]	; 21bc <rtems_bdpart_dump+0x130><== NOT EXECUTED
    2194:	eaffffd5 	b	20f0 <rtems_bdpart_dump+0x64>                   <== NOT EXECUTED
                                                                      

0000235c <rtems_bdpart_get_disk_data>: const char *disk_name, int *fd_ptr, rtems_disk_device **dd_ptr, rtems_blkdev_bnum *disk_end ) {
    235c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
    2360:	e1a05001 	mov	r5, r1                                        
    2364:	e24dd004 	sub	sp, sp, #4                                    
  rtems_disk_device *dd = NULL;                                       
  rtems_blkdev_bnum disk_begin = 0;                                   
  rtems_blkdev_bnum block_size = 0;                                   
                                                                      
  /* Open device file */                                              
  fd = open( disk_name, O_RDWR);                                      
    2368:	e3a01002 	mov	r1, #2                                        
  const char *disk_name,                                              
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
    236c:	e1a07003 	mov	r7, r3                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  int rv = 0;                                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    2370:	e3a03000 	mov	r3, #0                                        
  const char *disk_name,                                              
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
    2374:	e1a04002 	mov	r4, r2                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  int rv = 0;                                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    2378:	e58d3000 	str	r3, [sp]                                      
  rtems_blkdev_bnum disk_begin = 0;                                   
  rtems_blkdev_bnum block_size = 0;                                   
                                                                      
  /* Open device file */                                              
  fd = open( disk_name, O_RDWR);                                      
    237c:	eb000d02 	bl	578c <open>                                    
  if (fd < 0) {                                                       
    2380:	e2506000 	subs	r6, r0, #0                                   
    2384:	aa000005 	bge	23a0 <rtems_bdpart_get_disk_data+0x44>        
  }                                                                   
                                                                      
  /* Get disk handle */                                               
  rv = rtems_disk_fd_get_disk_device( fd, &dd);                       
  if (rv != 0) {                                                      
    sc = RTEMS_INVALID_NAME;                                          
    2388:	e3a05003 	mov	r5, #3                                        <== NOT EXECUTED
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
    *fd_ptr = fd;                                                     
    *dd_ptr = dd;                                                     
  } else {                                                            
    close( fd);                                                       
    238c:	e1a00006 	mov	r0, r6                                        
    2390:	eb0008ba 	bl	4680 <close>                                   
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
    2394:	e1a00005 	mov	r0, r5                                        
    2398:	e28dd004 	add	sp, sp, #4                                    
    239c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
    23a0:	e59f105c 	ldr	r1, [pc, #92]	; 2404 <rtems_bdpart_get_disk_data+0xa8>
    23a4:	e1a0200d 	mov	r2, sp                                        
    23a8:	eb0009d2 	bl	4af8 <ioctl>                                   
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk handle */                                               
  rv = rtems_disk_fd_get_disk_device( fd, &dd);                       
  if (rv != 0) {                                                      
    23ac:	e3500000 	cmp	r0, #0                                        
    23b0:	1afffff4 	bne	2388 <rtems_bdpart_get_disk_data+0x2c>        
    sc = RTEMS_INVALID_NAME;                                          
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk begin, end and block size */                            
  disk_begin = dd->start;                                             
    23b4:	e59d3000 	ldr	r3, [sp]                                      
  *disk_end = dd->size;                                               
    23b8:	e593101c 	ldr	r1, [r3, #28]                                 
    sc = RTEMS_INVALID_NAME;                                          
    goto error;                                                       
  }                                                                   
                                                                      
  /* Get disk begin, end and block size */                            
  disk_begin = dd->start;                                             
    23bc:	e5932018 	ldr	r2, [r3, #24]                                 
  *disk_end = dd->size;                                               
    23c0:	e5871000 	str	r1, [r7]                                      
  block_size = dd->block_size;                                        
                                                                      
  /* Check block size */                                              
  if (block_size < RTEMS_BDPART_BLOCK_SIZE) {                         
    23c4:	e5931024 	ldr	r1, [r3, #36]	; 0x24                          
    23c8:	e3510c02 	cmp	r1, #512	; 0x200                              
    23cc:	2a000001 	bcs	23d8 <rtems_bdpart_get_disk_data+0x7c>        
    goto error;                                                       
  }                                                                   
                                                                      
  /* Check that we have do not have a logical disk */                 
  if (disk_begin != 0) {                                              
    sc = RTEMS_IO_ERROR;                                              
    23d0:	e3a0501b 	mov	r5, #27                                       <== NOT EXECUTED
    23d4:	eaffffec 	b	238c <rtems_bdpart_get_disk_data+0x30>          <== NOT EXECUTED
    sc = RTEMS_IO_ERROR;                                              
    goto error;                                                       
  }                                                                   
                                                                      
  /* Check that we have do not have a logical disk */                 
  if (disk_begin != 0) {                                              
    23d8:	e3520000 	cmp	r2, #0                                        
    23dc:	1afffffb 	bne	23d0 <rtems_bdpart_get_disk_data+0x74>        
    goto error;                                                       
  }                                                                   
                                                                      
error:                                                                
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
    23e0:	e3550000 	cmp	r5, #0                                        
    23e4:	0affffe8 	beq	238c <rtems_bdpart_get_disk_data+0x30>        
    23e8:	e3540000 	cmp	r4, #0                                        
    *fd_ptr = fd;                                                     
    23ec:	15856000 	strne	r6, [r5]                                    
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
    23f0:	11a05002 	movne	r5, r2                                      
                                                                      
error:                                                                
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
    *fd_ptr = fd;                                                     
    *dd_ptr = dd;                                                     
    23f4:	15843000 	strne	r3, [r4]                                    
    goto error;                                                       
  }                                                                   
                                                                      
error:                                                                
                                                                      
  if (sc == RTEMS_SUCCESSFUL && fd_ptr != NULL && dd_ptr != NULL) {   
    23f8:	1affffe5 	bne	2394 <rtems_bdpart_get_disk_data+0x38>        
  int *fd_ptr,                                                        
  rtems_disk_device **dd_ptr,                                         
  rtems_blkdev_bnum *disk_end                                         
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
    23fc:	e1a05004 	mov	r5, r4                                        <== NOT EXECUTED
    2400:	eaffffe1 	b	238c <rtems_bdpart_get_disk_data+0x30>          <== NOT EXECUTED
                                                                      

000209b4 <rtems_bdpart_mount>: const char *disk_name, const rtems_bdpart_partition *pt __attribute__((unused)), size_t count, const char *mount_base ) {
   209b4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
   209b8:	e3a0102f 	mov	r1, #47	; 0x2f                                <== NOT EXECUTED
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
   209bc:	e24dd008 	sub	sp, sp, #8                                    <== NOT EXECUTED
   209c0:	e1a08002 	mov	r8, r2                                        <== NOT EXECUTED
   209c4:	e1a09003 	mov	r9, r3                                        <== NOT EXECUTED
   209c8:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
   209cc:	eb007419 	bl	3da38 <strrchr>                                <== NOT EXECUTED
   209d0:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  char *mount_point = NULL;                                           
  char *mount_marker = NULL;                                          
  size_t disk_file_name_size = 0;                                     
  size_t disk_name_size = strlen( disk_name);                         
   209d4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   209d8:	eb006ff8 	bl	3c9c0 <strlen>                                 <== NOT EXECUTED
   209dc:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
  size_t mount_base_size = strlen( mount_base);                       
   209e0:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   209e4:	eb006ff5 	bl	3c9c0 <strlen>                                 <== NOT EXECUTED
   209e8:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
  size_t i = 0;                                                       
                                                                      
  /* Create logical disk name base */                                 
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
   209ec:	e2860004 	add	r0, r6, #4                                    <== NOT EXECUTED
   209f0:	ebff89bb 	bl	30e4 <malloc>                                  <== NOT EXECUTED
  if (logical_disk_name == NULL) {                                    
   209f4:	e2507000 	subs	r7, r0, #0                                   <== NOT EXECUTED
    return RTEMS_NO_MEMORY;                                           
   209f8:	03a0801a 	moveq	r8, #26                                     <== NOT EXECUTED
  size_t mount_base_size = strlen( mount_base);                       
  size_t i = 0;                                                       
                                                                      
  /* Create logical disk name base */                                 
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (logical_disk_name == NULL) {                                    
   209fc:	0a000046 	beq	20b1c <rtems_bdpart_mount+0x168>              <== NOT EXECUTED
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
   20a00:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   20a04:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   20a08:	eb00708e 	bl	3cc48 <strncpy>                                <== NOT EXECUTED
                                                                      
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
   20a0c:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
    disk_file_name += 1;                                              
    disk_file_name_size = strlen( disk_file_name);                    
  } else {                                                            
    disk_file_name = disk_name;                                       
    disk_file_name_size = disk_name_size;                             
   20a10:	058d6004 	streq	r6, [sp, #4]                                <== NOT EXECUTED
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
    disk_file_name += 1;                                              
    disk_file_name_size = strlen( disk_file_name);                    
  } else {                                                            
    disk_file_name = disk_name;                                       
   20a14:	01a0b004 	moveq	fp, r4                                      <== NOT EXECUTED
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
                                                                      
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
   20a18:	0a000003 	beq	20a2c <rtems_bdpart_mount+0x78>               <== NOT EXECUTED
    disk_file_name += 1;                                              
   20a1c:	e285b001 	add	fp, r5, #1                                    <== NOT EXECUTED
    disk_file_name_size = strlen( disk_file_name);                    
   20a20:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
   20a24:	eb006fe5 	bl	3c9c0 <strlen>                                 <== NOT EXECUTED
   20a28:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
    disk_file_name = disk_name;                                       
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
   20a2c:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
   20a30:	e083400a 	add	r4, r3, sl                                    <== NOT EXECUTED
   20a34:	e2840005 	add	r0, r4, #5                                    <== NOT EXECUTED
   20a38:	ebff89a9 	bl	30e4 <malloc>                                  <== NOT EXECUTED
  if (mount_point == NULL) {                                          
   20a3c:	e2505000 	subs	r5, r0, #0                                   <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
   20a40:	03a0801a 	moveq	r8, #26                                     <== NOT EXECUTED
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (mount_point == NULL) {                                          
   20a44:	0a000030 	beq	20b0c <rtems_bdpart_mount+0x158>              <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
   20a48:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
   20a4c:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   20a50:	eb00707c 	bl	3cc48 <strncpy>                                <== NOT EXECUTED
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
   20a54:	e28a0001 	add	r0, sl, #1                                    <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
   20a58:	e3a0302f 	mov	r3, #47	; 0x2f                                <== NOT EXECUTED
   20a5c:	e7c5300a 	strb	r3, [r5, sl]                                 <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
   20a60:	e0850000 	add	r0, r5, r0                                    <== NOT EXECUTED
   20a64:	e1a0100b 	mov	r1, fp                                        <== NOT EXECUTED
   20a68:	e59d2004 	ldr	r2, [sp, #4]                                  <== NOT EXECUTED
   20a6c:	eb007075 	bl	3cc48 <strncpy>                                <== NOT EXECUTED
                                                                      
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
   20a70:	e284a001 	add	sl, r4, #1                                    <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
   20a74:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
                                                                      
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
   20a78:	e0876006 	add	r6, r7, r6                                    <== NOT EXECUTED
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
   20a7c:	e085a00a 	add	sl, r5, sl                                    <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
   20a80:	0a000021 	beq	20b0c <rtems_bdpart_mount+0x158>              <== NOT EXECUTED
   20a84:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
   20a88:	ea000001 	b	20a94 <rtems_bdpart_mount+0xe0>                 <== NOT EXECUTED
   20a8c:	e1540008 	cmp	r4, r8                                        <== NOT EXECUTED
   20a90:	0a00001c 	beq	20b08 <rtems_bdpart_mount+0x154>              <== NOT EXECUTED
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
   20a94:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
   20a98:	e3a01004 	mov	r1, #4                                        <== NOT EXECUTED
   20a9c:	e59f2094 	ldr	r2, [pc, #148]	; 20b38 <rtems_bdpart_mount+0x184><== NOT EXECUTED
   20aa0:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   20aa4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   20aa8:	eb006bdf 	bl	3ba2c <snprintf>                               <== NOT EXECUTED
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
   20aac:	e3500003 	cmp	r0, #3                                        <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
   20ab0:	e3a02004 	mov	r2, #4                                        <== NOT EXECUTED
   20ab4:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   20ab8:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
   20abc:	ca000019 	bgt	20b28 <rtems_bdpart_mount+0x174>              <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
   20ac0:	eb007060 	bl	3cc48 <strncpy>                                <== NOT EXECUTED
    rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);      
   20ac4:	e59f1070 	ldr	r1, [pc, #112]	; 20b3c <rtems_bdpart_mount+0x188><== NOT EXECUTED
   20ac8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   20acc:	eb000ebb 	bl	245c0 <rtems_mkdir>                            <== NOT EXECUTED
    if (rv != 0) {                                                    
   20ad0:	e250c000 	subs	ip, r0, #0                                   <== NOT EXECUTED
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Mount */                                                       
    rv = mount(                                                       
   20ad4:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   20ad8:	e59f2060 	ldr	r2, [pc, #96]	; 20b40 <rtems_bdpart_mount+0x18c><== NOT EXECUTED
   20adc:	e1a0300c 	mov	r3, ip                                        <== NOT EXECUTED
   20ae0:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    }                                                                 
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
    rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);      
    if (rv != 0) {                                                    
   20ae4:	1a000011 	bne	20b30 <rtems_bdpart_mount+0x17c>              <== NOT EXECUTED
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Mount */                                                       
    rv = mount(                                                       
   20ae8:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   20aec:	ebff89f3 	bl	32c0 <mount>                                   <== NOT EXECUTED
      mount_point,                                                    
      "msdos",                                                        
      0,                                                              
      NULL                                                            
    );                                                                
    if (rv != 0) {                                                    
   20af0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   20af4:	0affffe4 	beq	20a8c <rtems_bdpart_mount+0xd8>               <== NOT EXECUTED
      rmdir( mount_point);                                            
   20af8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   20afc:	eb000e82 	bl	2450c <rmdir>                                  <== NOT EXECUTED
  /* Markers */                                                       
  logical_disk_marker = logical_disk_name + disk_name_size;           
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
   20b00:	e1540008 	cmp	r4, r8                                        <== NOT EXECUTED
   20b04:	1affffe2 	bne	20a94 <rtems_bdpart_mount+0xe0>               <== NOT EXECUTED
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
   20b08:	e3a08000 	mov	r8, #0                                        <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
   20b0c:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   20b10:	ebff88a5 	bl	2dac <free>                                    <== NOT EXECUTED
  free( mount_point);                                                 
   20b14:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   20b18:	ebff88a3 	bl	2dac <free>                                    <== NOT EXECUTED
                                                                      
  return esc;                                                         
}                                                                     
   20b1c:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   20b20:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
   20b24:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create logical disk name */                                    
    int rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
      esc = RTEMS_INVALID_NAME;                                       
   20b28:	e3a08003 	mov	r8, #3                                        <== NOT EXECUTED
   20b2c:	eafffff6 	b	20b0c <rtems_bdpart_mount+0x158>                <== NOT EXECUTED
                                                                      
    /* Create mount point */                                          
    strncpy( mount_marker, logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE);
    rv = rtems_mkdir( mount_point, S_IRWXU | S_IRWXG | S_IRWXO);      
    if (rv != 0) {                                                    
      esc = RTEMS_IO_ERROR;                                           
   20b30:	e3a0801b 	mov	r8, #27                                       <== NOT EXECUTED
   20b34:	eafffff4 	b	20b0c <rtems_bdpart_mount+0x158>                <== NOT EXECUTED
                                                                      

00002408 <rtems_bdpart_read>: const char *disk_name, rtems_bdpart_format *format, rtems_bdpart_partition *pt, size_t *count ) {
    2408:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
    240c:	e2536000 	subs	r6, r3, #0                                   
    2410:	15967000 	ldrne	r7, [r6]                                    
  const char *disk_name,                                              
  rtems_bdpart_format *format,                                        
  rtems_bdpart_partition *pt,                                         
  size_t *count                                                       
)                                                                     
{                                                                     
    2414:	e24dd018 	sub	sp, sp, #24                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
    2418:	e3a03000 	mov	r3, #0                                        
  const char *disk_name,                                              
  rtems_bdpart_format *format,                                        
  rtems_bdpart_partition *pt,                                         
  size_t *count                                                       
)                                                                     
{                                                                     
    241c:	e1a04002 	mov	r4, r2                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
    2420:	10877087 	addne	r7, r7, r7, lsl #1                          
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
    2424:	e2422030 	sub	r2, r2, #48	; 0x30                            
  size_t *count                                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
    2428:	e58d3000 	str	r3, [sp]                                      
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
  rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */      
    242c:	e3a03000 	mov	r3, #0                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
    2430:	e58d2004 	str	r2, [sp, #4]                                  
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
    2434:	11a07207 	lslne	r7, r7, #4                                  
    2438:	01a07006 	moveq	r7, r6                                      
  rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */      
  rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */   
  rtems_blkdev_bnum disk_end = 0;                                     
  size_t i = 0;                                                       
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
    243c:	e3e02000 	mvn	r2, #0                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
    2440:	e1510003 	cmp	r1, r3                                        
    2444:	11540003 	cmpne	r4, r3                                      
  const char *disk_name,                                              
  rtems_bdpart_format *format,                                        
  rtems_bdpart_partition *pt,                                         
  size_t *count                                                       
)                                                                     
{                                                                     
    2448:	e1a05001 	mov	r5, r1                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
  rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */      
    244c:	e58d3008 	str	r3, [sp, #8]                                  
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
    2450:	13a01000 	movne	r1, #0                                      
    2454:	03a01001 	moveq	r1, #1                                      
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
  rtems_blkdev_bnum ep_begin = 0; /* Extended partition begin */      
  rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */   
  rtems_blkdev_bnum disk_end = 0;                                     
    2458:	e58d300c 	str	r3, [sp, #12]                                 
  size_t i = 0;                                                       
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
    245c:	e58d2010 	str	r2, [sp, #16]                                 
  rtems_disk_device *dd = NULL;                                       
    2460:	e58d3014 	str	r3, [sp, #20]                                 
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
    2464:	1a000003 	bne	2478 <rtems_bdpart_read+0x70>                 
    return RTEMS_INVALID_ADDRESS;                                     
    2468:	e3a01009 	mov	r1, #9                                        <== NOT EXECUTED
  if (block != NULL) {                                                
    rtems_bdbuf_release( block);                                      
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
    246c:	e1a00001 	mov	r0, r1                                        
    2470:	e28dd018 	add	sp, sp, #24                                   
    2474:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  const uint8_t *data = NULL;                                         
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL || count == NULL) {                
    2478:	e1560003 	cmp	r6, r3                                        
    247c:	0afffff9 	beq	2468 <rtems_bdpart_read+0x60>                 
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Set count to a save value */                                     
  *count = 0;                                                         
    2480:	e5861000 	str	r1, [r6]                                      
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
    2484:	e28d2014 	add	r2, sp, #20                                   
    2488:	e28d1010 	add	r1, sp, #16                                   
    248c:	e28d300c 	add	r3, sp, #12                                   
    2490:	ebffffb1 	bl	235c <rtems_bdpart_get_disk_data>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2494:	e2501000 	subs	r1, r0, #0                                   
    2498:	1afffff3 	bne	246c <rtems_bdpart_read+0x64>                 
    return sc;                                                        
  }                                                                   
                                                                      
  /* Read MBR */                                                      
  sc = rtems_bdpart_read_record( dd, 0, &block);                      
    249c:	e59d0014 	ldr	r0, [sp, #20]                                 
    24a0:	e1a0200d 	mov	r2, sp                                        
    24a4:	ebffff45 	bl	21c0 <rtems_bdpart_read_record>                
  if (sc != RTEMS_SUCCESSFUL) {                                       
    24a8:	e2503000 	subs	r3, r0, #0                                   
    24ac:	0a00000a 	beq	24dc <rtems_bdpart_read+0xd4>                 
  ebr = ep_begin;                                                     
  while (ebr != 0) {                                                  
    rtems_blkdev_bnum tmp = 0;                                        
                                                                      
    /* Read EBR */                                                    
    sc = rtems_bdpart_read_record( dd, ebr, &block);                  
    24b0:	e1a04003 	mov	r4, r3                                        <== NOT EXECUTED
  /* Return partition count */                                        
  *count = (size_t) (p - pt + 1);                                     
                                                                      
cleanup:                                                              
                                                                      
  if (fd >= 0) {                                                      
    24b4:	e59d0010 	ldr	r0, [sp, #16]                                 
    24b8:	e3500000 	cmp	r0, #0                                        
    close( fd);                                                       
    24bc:	ab00086f 	blge	4680 <close>                                 
  }                                                                   
                                                                      
  if (block != NULL) {                                                
    24c0:	e59d0000 	ldr	r0, [sp]                                      
    24c4:	e3500000 	cmp	r0, #0                                        
    rtems_bdbuf_release( block);                                      
  }                                                                   
                                                                      
  return esc;                                                         
    24c8:	01a01004 	moveq	r1, r4                                      
                                                                      
  if (fd >= 0) {                                                      
    close( fd);                                                       
  }                                                                   
                                                                      
  if (block != NULL) {                                                
    24cc:	0affffe6 	beq	246c <rtems_bdpart_read+0x64>                 
    rtems_bdbuf_release( block);                                      
    24d0:	eb00327a 	bl	eec0 <rtems_bdbuf_release>                     
  }                                                                   
                                                                      
  return esc;                                                         
    24d4:	e1a01004 	mov	r1, r4                                        
    24d8:	eaffffe3 	b	246c <rtems_bdpart_read+0x64>                   
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Read the first partition entry */                                
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
    24dc:	e59d3000 	ldr	r3, [sp]                                      
    24e0:	e593a01c 	ldr	sl, [r3, #28]                                 
    24e4:	e28a8f6f 	add	r8, sl, #444	; 0x1bc                          
    24e8:	e2888002 	add	r8, r8, #2                                    
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_bdpart_partition *p = pt - 1;                                 
  const rtems_bdpart_partition *p_end = pt + (count != NULL ? *count : 0);
    24ec:	e0847007 	add	r7, r4, r7                                    
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Read the first partition entry */                                
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);  
    24f0:	e28d3008 	add	r3, sp, #8                                    
    24f4:	e1a00008 	mov	r0, r8                                        
    24f8:	e28d1004 	add	r1, sp, #4                                    
    24fc:	e1a02007 	mov	r2, r7                                        
    2500:	ebffff55 	bl	225c <rtems_bdpart_read_mbr_partition>         
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2504:	e2503000 	subs	r3, r0, #0                                   
    2508:	1affffe8 	bne	24b0 <rtems_bdpart_read+0xa8>                 
  if (block != NULL) {                                                
    rtems_bdbuf_release( block);                                      
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
    250c:	e59d2004 	ldr	r2, [sp, #4]                                  
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Determine if we have a MBR or GPT format */                      
  if (rtems_bdpart_mbr_partition_type( p->type) == RTEMS_BDPART_MBR_GPT) {
    2510:	e5d22008 	ldrb	r2, [r2, #8]                                 
    2514:	e35200ee 	cmp	r2, #238	; 0xee                               
    esc = RTEMS_NOT_IMPLEMENTED;                                      
    2518:	03a04018 	moveq	r4, #24                                     
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Determine if we have a MBR or GPT format */                      
  if (rtems_bdpart_mbr_partition_type( p->type) == RTEMS_BDPART_MBR_GPT) {
    251c:	0affffe4 	beq	24b4 <rtems_bdpart_read+0xac>                 
  }                                                                   
                                                                      
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
  format->mbr.disk_id = rtems_uint32_from_little_endian(              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
    2520:	e59d2000 	ldr	r2, [sp]                                      
    esc = RTEMS_NOT_IMPLEMENTED;                                      
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
    2524:	e5853000 	str	r3, [r5]                                      
  format->mbr.disk_id = rtems_uint32_from_little_endian(              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
    2528:	e592001c 	ldr	r0, [r2, #28]                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_read(                                  
    252c:	e2802f6f 	add	r2, r0, #444	; 0x1bc                          
    2530:	e2800f6e 	add	r0, r0, #440	; 0x1b8                          
    value = (value << 8) + data [i];                                  
    2534:	e5721001 	ldrb	r1, [r2, #-1]!                               
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    2538:	e1520000 	cmp	r2, r0                                        
    value = (value << 8) + data [i];                                  
    253c:	e0813403 	add	r3, r1, r3, lsl #8                            
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    2540:	1afffffb 	bne	2534 <rtems_bdpart_read+0x12c>                
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
  format->mbr.disk_id = rtems_uint32_from_little_endian(              
    2544:	e5853004 	str	r3, [r5, #4]                                  
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_read(                                  
    2548:	e28aaf7b 	add	sl, sl, #492	; 0x1ec                          
  /* Set format */                                                    
  format->type = RTEMS_BDPART_FORMAT_MBR;                             
  format->mbr.disk_id = rtems_uint32_from_little_endian(              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
  format->mbr.dos_compatibility = true;                               
    254c:	e3a03001 	mov	r3, #1                                        
    2550:	e5c53008 	strb	r3, [r5, #8]                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_read(                                  
    2554:	e28a5002 	add	r5, sl, #2                                    
  );                                                                  
  format->mbr.dos_compatibility = true;                               
                                                                      
  /* Iterate through the rest of the primary partition table */       
  for (i = 1; i < 4; ++i) {                                           
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
    2558:	e2888010 	add	r8, r8, #16                                   
                                                                      
    sc = rtems_bdpart_read_mbr_partition( data, &p, p_end, &ep_begin);
    255c:	e1a00008 	mov	r0, r8                                        
    2560:	e28d1004 	add	r1, sp, #4                                    
    2564:	e1a02007 	mov	r2, r7                                        
    2568:	e28d3008 	add	r3, sp, #8                                    
    256c:	ebffff3a 	bl	225c <rtems_bdpart_read_mbr_partition>         
    if (sc != RTEMS_SUCCESSFUL) {                                     
    2570:	e3500000 	cmp	r0, #0                                        
    2574:	1a00003f 	bne	2678 <rtems_bdpart_read+0x270>                
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
  format->mbr.dos_compatibility = true;                               
                                                                      
  /* Iterate through the rest of the primary partition table */       
  for (i = 1; i < 4; ++i) {                                           
    2578:	e1580005 	cmp	r8, r5                                        
    257c:	1afffff5 	bne	2558 <rtems_bdpart_read+0x150>                
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Iterate through the logical partitions within the extended partition */
  ebr = ep_begin;                                                     
    2580:	e59d5008 	ldr	r5, [sp, #8]                                  
  while (ebr != 0) {                                                  
    2584:	e3550000 	cmp	r5, #0                                        
    2588:	059d1004 	ldreq	r1, [sp, #4]                                
    258c:	0a000026 	beq	262c <rtems_bdpart_read+0x224>                
    rtems_blkdev_bnum tmp = 0;                                        
                                                                      
    /* Read EBR */                                                    
    sc = rtems_bdpart_read_record( dd, ebr, &block);                  
    2590:	e59d0014 	ldr	r0, [sp, #20]                                 
    2594:	e1a01005 	mov	r1, r5                                        
    2598:	e1a0200d 	mov	r2, sp                                        
    259c:	ebffff07 	bl	21c0 <rtems_bdpart_read_record>                
    if (sc != RTEMS_SUCCESSFUL) {                                     
    25a0:	e2503000 	subs	r3, r0, #0                                   
    25a4:	1affffc1 	bne	24b0 <rtems_bdpart_read+0xa8>                 
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read first partition entry */                                  
    sc = rtems_bdpart_read_mbr_partition(                             
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,                
    25a8:	e59d2000 	ldr	r2, [sp]                                      
      esc = sc;                                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read first partition entry */                                  
    sc = rtems_bdpart_read_mbr_partition(                             
    25ac:	e592001c 	ldr	r0, [r2, #28]                                 
    25b0:	e2800f6f 	add	r0, r0, #444	; 0x1bc                          
    25b4:	e2800002 	add	r0, r0, #2                                    
    25b8:	e28d1004 	add	r1, sp, #4                                    
    25bc:	e1a02007 	mov	r2, r7                                        
    25c0:	ebffff25 	bl	225c <rtems_bdpart_read_mbr_partition>         
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,                
      &p,                                                             
      p_end,                                                          
      NULL                                                            
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
    25c4:	e3500000 	cmp	r0, #0                                        
    25c8:	1a00002a 	bne	2678 <rtems_bdpart_read+0x270>                
      esc = sc;                                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Adjust partition begin */                                      
    tmp = p->begin + ebr;                                             
    25cc:	e59d1004 	ldr	r1, [sp, #4]                                  
    25d0:	e5913000 	ldr	r3, [r1]                                      
    25d4:	e0852003 	add	r2, r5, r3                                    
    if (tmp > p->begin) {                                             
    25d8:	e1530002 	cmp	r3, r2                                        
    25dc:	2a000023 	bcs	2670 <rtems_bdpart_read+0x268>                
      esc = RTEMS_IO_ERROR;                                           
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
    25e0:	e5913004 	ldr	r3, [r1, #4]                                  
    25e4:	e0855003 	add	r5, r5, r3                                    
    if (tmp > p->end) {                                               
    25e8:	e1530005 	cmp	r3, r5                                        
    }                                                                 
                                                                      
    /* Adjust partition begin */                                      
    tmp = p->begin + ebr;                                             
    if (tmp > p->begin) {                                             
      p->begin = tmp;                                                 
    25ec:	e5812000 	str	r2, [r1]                                      
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
    if (tmp > p->end) {                                               
    25f0:	2a00001e 	bcs	2670 <rtems_bdpart_read+0x268>                
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1                 
    25f4:	e59d3000 	ldr	r3, [sp]                                      
    25f8:	e593801c 	ldr	r8, [r3, #28]                                 
    }                                                                 
                                                                      
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
    if (tmp > p->end) {                                               
      p->end = tmp;                                                   
    25fc:	e5815004 	str	r5, [r1, #4]                                  
}                                                                     
                                                                      
static rtems_blkdev_bnum rtems_bdpart_next_ebr( const uint8_t *data)  
{                                                                     
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
    2600:	e288cf75 	add	ip, r8, #468	; 0x1d4                          
    2604:	e28cc002 	add	ip, ip, #2                                    
    2608:	e3a03003 	mov	r3, #3                                        
    value = (value << 8) + data [i];                                  
    260c:	e7dc2003 	ldrb	r2, [ip, r3]                                 
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    2610:	e2433001 	sub	r3, r3, #1                                    
    2614:	e3730001 	cmn	r3, #1                                        
    value = (value << 8) + data [i];                                  
    2618:	e0820400 	add	r0, r2, r0, lsl #8                            
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    261c:	1afffffa 	bne	260c <rtems_bdpart_read+0x204>                
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EXTENDED) {                            
    2620:	e5d831d2 	ldrb	r3, [r8, #466]	; 0x1d2                       
    2624:	e3530005 	cmp	r3, #5                                        
    2628:	0a00000a 	beq	2658 <rtems_bdpart_read+0x250>                
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  /* Return partition count */                                        
  *count = (size_t) (p - pt + 1);                                     
    262c:	e0643001 	rsb	r3, r4, r1                                    
    2630:	e1a03243 	asr	r3, r3, #4                                    
    2634:	e0832103 	add	r2, r3, r3, lsl #2                            
    2638:	e0822202 	add	r2, r2, r2, lsl #4                            
    263c:	e0822402 	add	r2, r2, r2, lsl #8                            
    2640:	e0822802 	add	r2, r2, r2, lsl #16                           
    2644:	e0833082 	add	r3, r3, r2, lsl #1                            
    2648:	e2833001 	add	r3, r3, #1                                    
    264c:	e5863000 	str	r3, [r6]                                      
  rtems_bdpart_partition *pt,                                         
  size_t *count                                                       
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
    2650:	e3a04000 	mov	r4, #0                                        
    2654:	eaffff96 	b	24b4 <rtems_bdpart_read+0xac>                   
                                                                      
    /* Read second partition entry for next EBR block */              
    ebr = rtems_bdpart_next_ebr(                                      
      block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1                 
    );                                                                
    if (ebr != 0) {                                                   
    2658:	e3500000 	cmp	r0, #0                                        
    265c:	0afffff2 	beq	262c <rtems_bdpart_read+0x224>                
      /* Adjust partition EBR block index */                          
      tmp = ebr + ep_begin;                                           
    2660:	e59d5008 	ldr	r5, [sp, #8]                                  
    2664:	e0805005 	add	r5, r0, r5                                    
      if (tmp > ebr) {                                                
    2668:	e1550000 	cmp	r5, r0                                        
    266c:	8affffc7 	bhi	2590 <rtems_bdpart_read+0x188>                
    /* Adjust partition end */                                        
    tmp = p->end + ebr;                                               
    if (tmp > p->end) {                                               
      p->end = tmp;                                                   
    } else {                                                          
      esc = RTEMS_IO_ERROR;                                           
    2670:	e3a0401b 	mov	r4, #27                                       <== NOT EXECUTED
    2674:	eaffff8e 	b	24b4 <rtems_bdpart_read+0xac>                   <== NOT EXECUTED
      esc = sc;                                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Read first partition entry */                                  
    sc = rtems_bdpart_read_mbr_partition(                             
    2678:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    267c:	eaffff8c 	b	24b4 <rtems_bdpart_read+0xac>                   <== NOT EXECUTED
                                                                      

0000225c <rtems_bdpart_read_mbr_partition>: } else { return 0; } } static rtems_status_code rtems_bdpart_read_mbr_partition(
    225c:	e280c00c 	add	ip, r0, #12                                   
  const uint8_t *data,                                                
  rtems_bdpart_partition **p,                                         
  const rtems_bdpart_partition *p_end,                                
  rtems_blkdev_bnum *ep_begin                                         
)                                                                     
{                                                                     
    2260:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
    2264:	e1a05001 	mov	r5, r1                                        
    2268:	e1a04000 	mov	r4, r0                                        
  } else {                                                            
    return 0;                                                         
  }                                                                   
}                                                                     
                                                                      
static rtems_status_code rtems_bdpart_read_mbr_partition(             
    226c:	e1a0100c 	mov	r1, ip                                        
    2270:	e2807008 	add	r7, r0, #8                                    
  return value;                                                       
}                                                                     
                                                                      
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
    2274:	e3a06000 	mov	r6, #0                                        
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    value = (value << 8) + data [i];                                  
    2278:	e5710001 	ldrb	r0, [r1, #-1]!                               
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    227c:	e1510007 	cmp	r1, r7                                        
    value = (value << 8) + data [i];                                  
    2280:	e0806406 	add	r6, r0, r6, lsl #8                            
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    2284:	1afffffb 	bne	2278 <rtems_bdpart_read_mbr_partition+0x1c>   
    2288:	e2841010 	add	r1, r4, #16                                   
  return value;                                                       
}                                                                     
                                                                      
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
    228c:	e3a08000 	mov	r8, #0                                        
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    value = (value << 8) + data [i];                                  
    2290:	e571a001 	ldrb	sl, [r1, #-1]!                               
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    2294:	e151000c 	cmp	r1, ip                                        
    value = (value << 8) + data [i];                                  
    2298:	e08a8408 	add	r8, sl, r8, lsl #8                            
static inline uint32_t rtems_uint32_from_little_endian( const uint8_t *data)
{                                                                     
  uint32_t value = 0;                                                 
  ssize_t i = 0;                                                      
                                                                      
  for (i = 3; i >= 0; --i) {                                          
    229c:	1afffffb 	bne	2290 <rtems_bdpart_read_mbr_partition+0x34>   
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_blkdev_bnum size =                                            
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  rtems_blkdev_bnum end = begin + size;                               
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
    22a0:	e5d47004 	ldrb	r7, [r4, #4]                                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    22a4:	e3570000 	cmp	r7, #0                                        
    return RTEMS_SUCCESSFUL;                                          
    22a8:	01a00007 	moveq	r0, r7                                      
  rtems_blkdev_bnum size =                                            
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  rtems_blkdev_bnum end = begin + size;                               
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    22ac:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
    22b0:	e5950000 	ldr	r0, [r5]                                      
    22b4:	e1500002 	cmp	r0, r2                                        
    return RTEMS_TOO_MANY;                                            
    22b8:	03a00005 	moveq	r0, #5                                      
  rtems_blkdev_bnum end = begin + size;                               
  uint8_t type = data [RTEMS_BDPART_MBR_OFFSET_TYPE];                 
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
    22bc:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
{                                                                     
  rtems_blkdev_bnum begin =                                           
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_blkdev_bnum size =                                            
    rtems_uint32_from_little_endian( data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  rtems_blkdev_bnum end = begin + size;                               
    22c0:	e0888006 	add	r8, r8, r6                                    
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
    return RTEMS_TOO_MANY;                                            
  } else if (begin >= end) {                                          
    22c4:	e1580006 	cmp	r8, r6                                        
    return RTEMS_IO_ERROR;                                            
    22c8:	93a0001b 	movls	r0, #27                                     
                                                                      
  if (type == RTEMS_BDPART_MBR_EMPTY) {                               
    return RTEMS_SUCCESSFUL;                                          
  } else if (*p == p_end) {                                           
    return RTEMS_TOO_MANY;                                            
  } else if (begin >= end) {                                          
    22cc:	98bd85f0 	popls	{r4, r5, r6, r7, r8, sl, pc}                
    return RTEMS_IO_ERROR;                                            
  } else if (type == RTEMS_BDPART_MBR_EXTENDED) {                     
    22d0:	e3570005 	cmp	r7, #5                                        
    22d4:	1a000005 	bne	22f0 <rtems_bdpart_read_mbr_partition+0x94>   
    if (ep_begin != NULL) {                                           
    22d8:	e3530000 	cmp	r3, #0                                        
      *ep_begin = begin;                                              
    22dc:	15836000 	strne	r6, [r3]                                    
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    22e0:	13a00000 	movne	r0, #0                                      
  } else if (*p == p_end) {                                           
    return RTEMS_TOO_MANY;                                            
  } else if (begin >= end) {                                          
    return RTEMS_IO_ERROR;                                            
  } else if (type == RTEMS_BDPART_MBR_EXTENDED) {                     
    if (ep_begin != NULL) {                                           
    22e4:	18bd85f0 	popne	{r4, r5, r6, r7, r8, sl, pc}                
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    22e8:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
}                                                                     
    22ec:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
    if (ep_begin != NULL) {                                           
      *ep_begin = begin;                                              
    }                                                                 
  } else {                                                            
    /* Increment partition index */                                   
    ++(*p);                                                           
    22f0:	e2800030 	add	r0, r0, #48	; 0x30                            
                                                                      
    /* Clear partition */                                             
    memset( *p, 0, sizeof( rtems_bdpart_partition));                  
    22f4:	e3a02030 	mov	r2, #48	; 0x30                                
    22f8:	e3a01000 	mov	r1, #0                                        
    if (ep_begin != NULL) {                                           
      *ep_begin = begin;                                              
    }                                                                 
  } else {                                                            
    /* Increment partition index */                                   
    ++(*p);                                                           
    22fc:	e5850000 	str	r0, [r5]                                      
                                                                      
    /* Clear partition */                                             
    memset( *p, 0, sizeof( rtems_bdpart_partition));                  
    2300:	eb0045cd 	bl	13a3c <memset>                                 
                                                                      
    /* Set values */                                                  
    (*p)->begin = begin;                                              
    2304:	e5951000 	ldr	r1, [r5]                                      
    (*p)->end = end;                                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    2308:	e1a00007 	mov	r0, r7                                        
    /* Clear partition */                                             
    memset( *p, 0, sizeof( rtems_bdpart_partition));                  
                                                                      
    /* Set values */                                                  
    (*p)->begin = begin;                                              
    (*p)->end = end;                                                  
    230c:	e8810140 	stm	r1, {r6, r8}                                  
    rtems_bdpart_to_partition_type( type, (*p)->type);                
    2310:	e2811008 	add	r1, r1, #8                                    
    2314:	ebffffc9 	bl	2240 <rtems_bdpart_to_partition_type>          
    (*p)->flags = data [RTEMS_BDPART_MBR_OFFSET_FLAGS];               
    2318:	e5d42000 	ldrb	r2, [r4]                                     
    231c:	e5953000 	ldr	r3, [r5]                                      
    2320:	e5832028 	str	r2, [r3, #40]	; 0x28                          
    2324:	e3a02000 	mov	r2, #0                                        
    2328:	e583202c 	str	r2, [r3, #44]	; 0x2c                          
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    232c:	e1a00002 	mov	r0, r2                                        
    2330:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
                                                                      

000021c0 <rtems_bdpart_read_record>: ) { rtems_status_code sc = RTEMS_SUCCESSFUL; /* Release previous block if necessary */ if (*block != NULL) {
    21c0:	e5923000 	ldr	r3, [r2]                                      
    21c4:	e3530000 	cmp	r3, #0                                        
static rtems_status_code rtems_bdpart_read_record(                    
  rtems_disk_device *dd,                                              
  rtems_blkdev_bnum index,                                            
  rtems_bdbuf_buffer **block                                          
)                                                                     
{                                                                     
    21c8:	e92d4070 	push	{r4, r5, r6, lr}                             
    21cc:	e1a04002 	mov	r4, r2                                        
    21d0:	e1a05000 	mov	r5, r0                                        
    21d4:	e1a06001 	mov	r6, r1                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
                                                                      
  /* Release previous block if necessary */                           
  if (*block != NULL) {                                               
    21d8:	0a000003 	beq	21ec <rtems_bdpart_read_record+0x2c>          
    sc = rtems_bdbuf_release( *block);                                
    21dc:	e1a00003 	mov	r0, r3                                        
    21e0:	eb003336 	bl	eec0 <rtems_bdbuf_release>                     
    if (sc != RTEMS_SUCCESSFUL) {                                     
    21e4:	e3500000 	cmp	r0, #0                                        
    21e8:	18bd8070 	popne	{r4, r5, r6, pc}                            
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  /* Read the record block */                                         
  sc = rtems_bdbuf_read( dd, index, block);                           
    21ec:	e1a00005 	mov	r0, r5                                        
    21f0:	e1a01006 	mov	r1, r6                                        
    21f4:	e1a02004 	mov	r2, r4                                        
    21f8:	eb0032b7 	bl	ecdc <rtems_bdbuf_read>                        
  if (sc != RTEMS_SUCCESSFUL) {                                       
    21fc:	e3500000 	cmp	r0, #0                                        
    2200:	18bd8070 	popne	{r4, r5, r6, pc}                            
    return sc;                                                        
  }                                                                   
                                                                      
  /* just in case block did not get filled in */                      
  if ( *block == NULL ) {                                             
    2204:	e5943000 	ldr	r3, [r4]                                      
    2208:	e3530000 	cmp	r3, #0                                        
    220c:	0a000009 	beq	2238 <rtems_bdpart_read_record+0x78>          
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Check MBR signature */                                           
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
    2210:	e593301c 	ldr	r3, [r3, #28]                                 
                                                                      
static bool rtems_bdpart_is_valid_record( const uint8_t *data)        
{                                                                     
  return data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0]                   
      == RTEMS_BDPART_MBR_SIGNATURE_0                                 
    && data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1]                     
    2214:	e5d321fe 	ldrb	r2, [r3, #510]	; 0x1fe                       
    2218:	e3520055 	cmp	r2, #85	; 0x55                                
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Check MBR signature */                                           
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
    return RTEMS_IO_ERROR;                                            
    221c:	13a0001b 	movne	r0, #27                                     
                                                                      
static bool rtems_bdpart_is_valid_record( const uint8_t *data)        
{                                                                     
  return data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_0]                   
      == RTEMS_BDPART_MBR_SIGNATURE_0                                 
    && data [RTEMS_BDPART_MBR_OFFSET_SIGNATURE_1]                     
    2220:	18bd8070 	popne	{r4, r5, r6, pc}                            
    2224:	e5d301ff 	ldrb	r0, [r3, #511]	; 0x1ff                       
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Check MBR signature */                                           
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
    return RTEMS_IO_ERROR;                                            
    2228:	e35000aa 	cmp	r0, #170	; 0xaa                               
    222c:	13a0001b 	movne	r0, #27                                     
    2230:	03a00000 	moveq	r0, #0                                      
    2234:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    return sc;                                                        
  }                                                                   
                                                                      
  /* just in case block did not get filled in */                      
  if ( *block == NULL ) {                                             
    return RTEMS_INVALID_ADDRESS;                                     
    2238:	e3a00009 	mov	r0, #9                                        <== NOT EXECUTED
  if (!rtems_bdpart_is_valid_record( (*block)->buffer)) {             
    return RTEMS_IO_ERROR;                                            
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    223c:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

00002680 <rtems_bdpart_register>: rtems_status_code rtems_bdpart_register( const char *disk_name, const rtems_bdpart_partition *pt, size_t count ) {
    2680:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
    2684:	e3a04000 	mov	r4, #0                                        
rtems_status_code rtems_bdpart_register(                              
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
    2688:	e24dd01c 	sub	sp, sp, #28                                   
    268c:	e1a05000 	mov	r5, r0                                        
    2690:	e58d100c 	str	r1, [sp, #12]                                 
    2694:	e1a08002 	mov	r8, r2                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
    2698:	e58d4010 	str	r4, [sp, #16]                                 
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
    269c:	eb0048fe 	bl	14a9c <strlen>                                 
  size_t i = 0;                                                       
  int fd = -1;                                                        
    26a0:	e3e0c000 	mvn	ip, #0                                        
  rtems_blkdev_bnum disk_end = 0;                                     
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
    26a4:	e1a0b000 	mov	fp, r0                                        
  size_t i = 0;                                                       
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
    26a8:	e28d1014 	add	r1, sp, #20                                   
    26ac:	e1a00005 	mov	r0, r5                                        
    26b0:	e28d2018 	add	r2, sp, #24                                   
    26b4:	e28d3010 	add	r3, sp, #16                                   
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
  size_t i = 0;                                                       
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    26b8:	e58d4018 	str	r4, [sp, #24]                                 
  dev_t logical_disk = 0;                                             
  char *logical_disk_name = NULL;                                     
  char *logical_disk_marker = NULL;                                   
  size_t disk_name_size = strlen( disk_name);                         
  size_t i = 0;                                                       
  int fd = -1;                                                        
    26bc:	e58dc014 	str	ip, [sp, #20]                                 
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
    26c0:	ebffff25 	bl	235c <rtems_bdpart_get_disk_data>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
    26c4:	e2504000 	subs	r4, r0, #0                                   
    26c8:	0a000002 	beq	26d8 <rtems_bdpart_register+0x58>             
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
                                                                      
  return esc;                                                         
}                                                                     
    26cc:	e1a00004 	mov	r0, r4                                        
    26d0:	e28dd01c 	add	sp, sp, #28                                   
    26d4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  disk = rtems_disk_get_device_identifier( dd);                       
  close( fd);                                                         
    26d8:	e28d0014 	add	r0, sp, #20                                   
    26dc:	e8900009 	ldm	r0, {r0, r3}                                  
                                                                      
static inline dev_t rtems_disk_get_device_identifier(                 
  const rtems_disk_device *dd                                         
)                                                                     
{                                                                     
  return dd->dev;                                                     
    26e0:	e8930480 	ldm	r3, {r7, sl}                                  
    26e4:	eb0007e5 	bl	4680 <close>                                   
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create logical disk name */                                      
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
    26e8:	e28b0004 	add	r0, fp, #4                                    
    26ec:	eb000a0b 	bl	4f20 <malloc>                                  
  if (logical_disk_name == NULL) {                                    
    26f0:	e2509000 	subs	r9, r0, #0                                   
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
  return temp.__overlay.minor;                                        
    26f4:	e1a0600a 	mov	r6, sl                                        
    return RTEMS_NO_MEMORY;                                           
    26f8:	03a0401a 	moveq	r4, #26                                     
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create logical disk name */                                      
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (logical_disk_name == NULL) {                                    
    26fc:	0afffff2 	beq	26cc <rtems_bdpart_register+0x4c>             
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
    2700:	e1a0200b 	mov	r2, fp                                        
    2704:	e1a01005 	mov	r1, r5                                        
    2708:	eb00494b 	bl	14c3c <strncpy>                                
  logical_disk_marker = logical_disk_name + disk_name_size;           
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
    270c:	e3580000 	cmp	r8, #0                                        
  logical_disk_name = malloc( disk_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (logical_disk_name == NULL) {                                    
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
  logical_disk_marker = logical_disk_name + disk_name_size;           
    2710:	e089b00b 	add	fp, r9, fp                                    
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
    2714:	01a04008 	moveq	r4, r8                                      
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
  logical_disk_marker = logical_disk_name + disk_name_size;           
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
    2718:	0a00001b 	beq	278c <rtems_bdpart_register+0x10c>            
    271c:	e59d500c 	ldr	r5, [sp, #12]                                 
    2720:	ea00000b 	b	2754 <rtems_bdpart_register+0xd4>               
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
      logical_disk,                                                   
      disk,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
    2724:	e595c000 	ldr	ip, [r5]                                      
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
    2728:	e58dc000 	str	ip, [sp]                                      
    272c:	e595e004 	ldr	lr, [r5, #4]                                  
    2730:	e06cc00e 	rsb	ip, ip, lr                                    
    2734:	e58dc004 	str	ip, [sp, #4]                                  
    2738:	e58d9008 	str	r9, [sp, #8]                                  
    273c:	eb00035c 	bl	34b4 <rtems_disk_create_log>                   
      disk,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
      logical_disk_name                                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
    2740:	e3500000 	cmp	r0, #0                                        
    2744:	1a000013 	bne	2798 <rtems_bdpart_register+0x118>            
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
  logical_disk_marker = logical_disk_name + disk_name_size;           
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
    2748:	e1540008 	cmp	r4, r8                                        
      disk,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
      logical_disk_name                                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
    274c:	e2855030 	add	r5, r5, #48	; 0x30                            
  }                                                                   
  strncpy( logical_disk_name, disk_name, disk_name_size);             
  logical_disk_marker = logical_disk_name + disk_name_size;           
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
    2750:	0a000010 	beq	2798 <rtems_bdpart_register+0x118>            
                                                                      
    /* Create a new device identifier */                              
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    2754:	e2844001 	add	r4, r4, #1                                    
    2758:	e3a01004 	mov	r1, #4                                        
    275c:	e59f2044 	ldr	r2, [pc, #68]	; 27a8 <rtems_bdpart_register+0x128>
    2760:	e1a03004 	mov	r3, r4                                        
    2764:	e1a0000b 	mov	r0, fp                                        
    2768:	eb0045d1 	bl	13eb4 <snprintf>                               
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
    int rv = 0;                                                       
                                                                      
    /* New minor number */                                            
    ++minor;                                                          
    276c:	e2866001 	add	r6, r6, #1                                    
    /* Create a new device identifier */                              
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
    2770:	e3500003 	cmp	r0, #3                                        
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
    2774:	e1a02007 	mov	r2, r7                                        
    2778:	e1a0300a 	mov	r3, sl                                        
    277c:	e1a00007 	mov	r0, r7                                        
    2780:	e1a01006 	mov	r1, r6                                        
    /* Create a new device identifier */                              
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Set partition number for logical disk name */                  
    rv = snprintf( logical_disk_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
    2784:	daffffe6 	ble	2724 <rtems_bdpart_register+0xa4>             
      esc = RTEMS_INVALID_NAME;                                       
    2788:	e3a04003 	mov	r4, #3                                        <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
    278c:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
    2790:	eb000863 	bl	4924 <free>                                    <== NOT EXECUTED
                                                                      
  return esc;                                                         
    2794:	eaffffcc 	b	26cc <rtems_bdpart_register+0x4c>               <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Create logical disk */                                         
    sc = rtems_disk_create_log(                                       
    2798:	e1a04000 	mov	r4, r0                                        
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( logical_disk_name);                                           
    279c:	e1a00009 	mov	r0, r9                                        
    27a0:	eb00085f 	bl	4924 <free>                                    
    27a4:	eaffffc8 	b	26cc <rtems_bdpart_register+0x4c>               
                                                                      

00020b44 <rtems_bdpart_unmount>: const char *disk_name, const rtems_bdpart_partition *pt __attribute__((unused)), size_t count, const char *mount_base ) {
   20b44:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
   20b48:	e3a0102f 	mov	r1, #47	; 0x2f                                <== NOT EXECUTED
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
   20b4c:	e1a09003 	mov	r9, r3                                        <== NOT EXECUTED
   20b50:	e1a06002 	mov	r6, r2                                        <== NOT EXECUTED
   20b54:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  const char *disk_file_name = strrchr( disk_name, '/');              
   20b58:	eb0073b6 	bl	3da38 <strrchr>                                <== NOT EXECUTED
   20b5c:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
  char *mount_point = NULL;                                           
  char *mount_marker = NULL;                                          
  size_t disk_file_name_size = 0;                                     
  size_t disk_name_size = strlen( disk_name);                         
   20b60:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   20b64:	eb006f95 	bl	3c9c0 <strlen>                                 <== NOT EXECUTED
   20b68:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
  size_t mount_base_size = strlen( mount_base);                       
   20b6c:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   20b70:	eb006f92 	bl	3c9c0 <strlen>                                 <== NOT EXECUTED
  size_t i = 0;                                                       
                                                                      
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
   20b74:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
  const char *disk_file_name = strrchr( disk_name, '/');              
  char *mount_point = NULL;                                           
  char *mount_marker = NULL;                                          
  size_t disk_file_name_size = 0;                                     
  size_t disk_name_size = strlen( disk_name);                         
  size_t mount_base_size = strlen( mount_base);                       
   20b78:	e1a08000 	mov	r8, r0                                        <== NOT EXECUTED
  size_t i = 0;                                                       
                                                                      
  /* Get disk file name */                                            
  if (disk_file_name != NULL) {                                       
   20b7c:	0a000003 	beq	20b90 <rtems_bdpart_unmount+0x4c>             <== NOT EXECUTED
    disk_file_name += 1;                                              
   20b80:	e2854001 	add	r4, r5, #1                                    <== NOT EXECUTED
    disk_file_name_size = strlen( disk_file_name);                    
   20b84:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   20b88:	eb006f8c 	bl	3c9c0 <strlen>                                 <== NOT EXECUTED
   20b8c:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
    disk_file_name = disk_name;                                       
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
   20b90:	e08a7008 	add	r7, sl, r8                                    <== NOT EXECUTED
   20b94:	e2870005 	add	r0, r7, #5                                    <== NOT EXECUTED
   20b98:	ebff8951 	bl	30e4 <malloc>                                  <== NOT EXECUTED
  if (mount_point == NULL) {                                          
   20b9c:	e2505000 	subs	r5, r0, #0                                   <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
   20ba0:	03a0601a 	moveq	r6, #26                                     <== NOT EXECUTED
    disk_file_name_size = disk_name_size;                             
  }                                                                   
                                                                      
  /* Create mount point base */                                       
  mount_point = malloc( mount_base_size + 1 + disk_file_name_size + RTEMS_BDPART_NUMBER_SIZE);
  if (mount_point == NULL) {                                          
   20ba4:	0a000022 	beq	20c34 <rtems_bdpart_unmount+0xf0>             <== NOT EXECUTED
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
   20ba8:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   20bac:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
   20bb0:	eb007024 	bl	3cc48 <strncpy>                                <== NOT EXECUTED
  mount_point [mount_base_size] = '/';                                
   20bb4:	e3a0302f 	mov	r3, #47	; 0x2f                                <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
   20bb8:	e2880001 	add	r0, r8, #1                                    <== NOT EXECUTED
  if (mount_point == NULL) {                                          
    esc = RTEMS_NO_MEMORY;                                            
    goto cleanup;                                                     
  }                                                                   
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
   20bbc:	e7c53008 	strb	r3, [r5, r8]                                 <== NOT EXECUTED
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
   20bc0:	e0850000 	add	r0, r5, r0                                    <== NOT EXECUTED
   20bc4:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   20bc8:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
   20bcc:	eb00701d 	bl	3cc48 <strncpy>                                <== NOT EXECUTED
                                                                      
  /* Marker */                                                        
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
   20bd0:	e2877001 	add	r7, r7, #1                                    <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
   20bd4:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
  strncpy( mount_point, mount_base, mount_base_size);                 
  mount_point [mount_base_size] = '/';                                
  strncpy( mount_point + mount_base_size + 1, disk_file_name, disk_file_name_size);
                                                                      
  /* Marker */                                                        
  mount_marker = mount_point + mount_base_size + 1 + disk_file_name_size;
   20bd8:	e0857007 	add	r7, r5, r7                                    <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
   20bdc:	0a000014 	beq	20c34 <rtems_bdpart_unmount+0xf0>             <== NOT EXECUTED
   20be0:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
   20be4:	ea000001 	b	20bf0 <rtems_bdpart_unmount+0xac>               <== NOT EXECUTED
   20be8:	e1540006 	cmp	r4, r6                                        <== NOT EXECUTED
   20bec:	0a000019 	beq	20c58 <rtems_bdpart_unmount+0x114>            <== NOT EXECUTED
    /* Create mount point */                                          
    int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
   20bf0:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
   20bf4:	e3a01004 	mov	r1, #4                                        <== NOT EXECUTED
   20bf8:	e59f206c 	ldr	r2, [pc, #108]	; 20c6c <rtems_bdpart_unmount+0x128><== NOT EXECUTED
   20bfc:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   20c00:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   20c04:	eb006b88 	bl	3ba2c <snprintf>                               <== NOT EXECUTED
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
   20c08:	e3500003 	cmp	r0, #3                                        <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Unmount */                                                     
    rv = unmount( mount_point);                                       
   20c0c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
                                                                      
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create mount point */                                          
    int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
   20c10:	ca00000b 	bgt	20c44 <rtems_bdpart_unmount+0x100>            <== NOT EXECUTED
      esc = RTEMS_INVALID_NAME;                                       
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Unmount */                                                     
    rv = unmount( mount_point);                                       
   20c14:	eb000fe0 	bl	24b9c <unmount>                                <== NOT EXECUTED
    if (rv == 0) {                                                    
   20c18:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   20c1c:	1afffff1 	bne	20be8 <rtems_bdpart_unmount+0xa4>             <== NOT EXECUTED
      /* Remove mount point */                                        
      rv = rmdir( mount_point);                                       
   20c20:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   20c24:	eb000e38 	bl	2450c <rmdir>                                  <== NOT EXECUTED
      if (rv != 0) {                                                  
   20c28:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   20c2c:	0affffed 	beq	20be8 <rtems_bdpart_unmount+0xa4>             <== NOT EXECUTED
        esc = RTEMS_IO_ERROR;                                         
   20c30:	e3a0601b 	mov	r6, #27                                       <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( mount_point);                                                 
   20c34:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   20c38:	ebff885b 	bl	2dac <free>                                    <== NOT EXECUTED
                                                                      
  return esc;                                                         
}                                                                     
   20c3c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   20c40:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( mount_point);                                                 
   20c44:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
  /* Mount supported file systems for each partition */               
  for (i = 0; i < count; ++i) {                                       
    /* Create mount point */                                          
    int rv = snprintf( mount_marker, RTEMS_BDPART_NUMBER_SIZE, "%zu", i + 1);
    if (rv >= RTEMS_BDPART_NUMBER_SIZE) {                             
      esc = RTEMS_INVALID_NAME;                                       
   20c48:	e3a06003 	mov	r6, #3                                        <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( mount_point);                                                 
   20c4c:	ebff8856 	bl	2dac <free>                                    <== NOT EXECUTED
                                                                      
  return esc;                                                         
}                                                                     
   20c50:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   20c54:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( mount_point);                                                 
   20c58:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count,                                                       
  const char *mount_base                                              
)                                                                     
{                                                                     
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
   20c5c:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  free( mount_point);                                                 
   20c60:	ebff8851 	bl	2dac <free>                                    <== NOT EXECUTED
                                                                      
  return esc;                                                         
}                                                                     
   20c64:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   20c68:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              <== NOT EXECUTED
                                                                      

000027ec <rtems_bdpart_unregister>: rtems_status_code rtems_bdpart_unregister( const char *disk_name, const rtems_bdpart_partition *pt __attribute__((unused)), size_t count ) {
    27ec:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
    27f0:	e24dd00c 	sub	sp, sp, #12                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
    27f4:	e3a0c000 	mov	ip, #0                                        
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  size_t i = 0;                                                       
  int fd = -1;                                                        
    27f8:	e3e0e000 	mvn	lr, #0                                        
rtems_status_code rtems_bdpart_unregister(                            
  const char *disk_name,                                              
  const rtems_bdpart_partition *pt __attribute__((unused)),           
  size_t count                                                        
)                                                                     
{                                                                     
    27fc:	e1a04002 	mov	r4, r2                                        
  size_t i = 0;                                                       
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
    2800:	e28d1004 	add	r1, sp, #4                                    
    2804:	e28d2008 	add	r2, sp, #8                                    
    2808:	e1a0300d 	mov	r3, sp                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
  rtems_blkdev_bnum disk_end = 0;                                     
    280c:	e58dc000 	str	ip, [sp]                                      
  dev_t disk = 0;                                                     
  dev_t logical_disk = 0;                                             
  size_t i = 0;                                                       
  int fd = -1;                                                        
    2810:	e58de004 	str	lr, [sp, #4]                                  
  rtems_disk_device *dd = NULL;                                       
    2814:	e58dc008 	str	ip, [sp, #8]                                  
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
    2818:	ebfffecf 	bl	235c <rtems_bdpart_get_disk_data>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
    281c:	e2507000 	subs	r7, r0, #0                                   
    2820:	0a000002 	beq	2830 <rtems_bdpart_unregister+0x44>           
      return sc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    2824:	e1a00007 	mov	r0, r7                                        
    2828:	e28dd00c 	add	sp, sp, #12                                   
    282c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  disk = rtems_disk_get_device_identifier( dd);                       
  close( fd);                                                         
    2830:	e99d0009 	ldmib	sp, {r0, r3}                                
    2834:	e5935004 	ldr	r5, [r3, #4]                                  
    2838:	e5936000 	ldr	r6, [r3]                                      
    283c:	eb00078f 	bl	4680 <close>                                   
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
    2840:	e3540000 	cmp	r4, #0                                        
    2844:	0afffff6 	beq	2824 <rtems_bdpart_unregister+0x38>           
                                                                      
  /* Register partitions */                                           
  return rtems_bdpart_register( disk_name, pt, count);                
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_unregister(                            
    2848:	e0844005 	add	r4, r4, r5                                    
    284c:	ea000001 	b	2858 <rtems_bdpart_unregister+0x6c>             
                                                                      
  /* Get the disk device identifier */                                
  rtems_filesystem_split_dev_t( disk, major, minor);                  
                                                                      
  /* Create a logical disk for each partition */                      
  for (i = 0; i < count; ++i) {                                       
    2850:	e1550004 	cmp	r5, r4                                        
    2854:	0afffff2 	beq	2824 <rtems_bdpart_unregister+0x38>           
    /* New minor number */                                            
    ++minor;                                                          
    2858:	e2855001 	add	r5, r5, #1                                    
                                                                      
    /* Get the device identifier */                                   
    logical_disk = rtems_filesystem_make_dev_t( major, minor);        
                                                                      
    /* Delete logical disk */                                         
    sc = rtems_disk_delete( logical_disk);                            
    285c:	e1a00006 	mov	r0, r6                                        
    2860:	e1a01005 	mov	r1, r5                                        
    2864:	eb0002a4 	bl	32fc <rtems_disk_delete>                       
    if (sc != RTEMS_SUCCESSFUL) {                                     
    2868:	e2507000 	subs	r7, r0, #0                                   
    286c:	0afffff7 	beq	2850 <rtems_bdpart_unregister+0x64>           
    2870:	eaffffeb 	b	2824 <rtems_bdpart_unregister+0x38>             <== NOT EXECUTED
                                                                      

00002900 <rtems_bdpart_write>: const char *disk_name, const rtems_bdpart_format *format, const rtems_bdpart_partition *pt, size_t count ) {
    2900:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
    2904:	e2515000 	subs	r5, r1, #0                                   
  const char *disk_name,                                              
  const rtems_bdpart_format *format,                                  
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
    2908:	e24dd018 	sub	sp, sp, #24                                   
    290c:	e1a06002 	mov	r6, r2                                        
    2910:	e1a04003 	mov	r4, r3                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
    2914:	0a000002 	beq	2924 <rtems_bdpart_write+0x24>                
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    2918:	e5953000 	ldr	r3, [r5]                                      
    291c:	e3530000 	cmp	r3, #0                                        
    2920:	0a00000f 	beq	2964 <rtems_bdpart_write+0x64>                
  rtems_blkdev_bnum record_space =                                    
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
    2924:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_bdbuf_buffer *block = NULL;                                   
    2928:	e3a07000 	mov	r7, #0                                        <== NOT EXECUTED
  rtems_blkdev_bnum record_space =                                    
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
    292c:	e58d300c 	str	r3, [sp, #12]                                 <== NOT EXECUTED
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    2930:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    2934:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_bdbuf_buffer *block = NULL;                                   
    2938:	e58d7004 	str	r7, [sp, #4]                                  <== NOT EXECUTED
  rtems_blkdev_bnum disk_end = 0;                                     
    293c:	e58d7008 	str	r7, [sp, #8]                                  <== NOT EXECUTED
  rtems_blkdev_bnum record_space =                                    
    2940:	e3a08001 	mov	r8, #1                                        <== NOT EXECUTED
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    2944:	e58d3010 	str	r3, [sp, #16]                                 <== NOT EXECUTED
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    2948:	0a000012 	beq	2998 <rtems_bdpart_write+0x98>                <== NOT EXECUTED
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL) {                                 
    294c:	e1550003 	cmp	r5, r3                                        
    2950:	11560003 	cmpne	r6, r3                                      
    return RTEMS_INVALID_ADDRESS;                                     
    2954:	03a00009 	moveq	r0, #9                                      
    /* Nothing to do */                                               
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  /* Check parameter */                                               
  if (format == NULL || pt == NULL) {                                 
    2958:	1a000010 	bne	29a0 <rtems_bdpart_write+0xa0>                
  if (block != NULL) {                                                
    rtems_bdbuf_sync( block);                                         
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
    295c:	e28dd018 	add	sp, sp, #24                                   
    2960:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
    2964:	e5d52008 	ldrb	r2, [r5, #8]                                 
    2968:	e3520000 	cmp	r2, #0                                        
    296c:	0affffec 	beq	2924 <rtems_bdpart_write+0x24>                
  rtems_bdbuf_buffer *block = NULL;                                   
    2970:	e58d3004 	str	r3, [sp, #4]                                  
  rtems_blkdev_bnum disk_end = 0;                                     
    2974:	e58d3008 	str	r3, [sp, #8]                                  
  rtems_blkdev_bnum record_space =                                    
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
    2978:	e3e03000 	mvn	r3, #0                                        
    297c:	e58d300c 	str	r3, [sp, #12]                                 
  rtems_disk_device *dd = NULL;                                       
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    2980:	e3540000 	cmp	r4, #0                                        
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    2984:	e3a03000 	mov	r3, #0                                        
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
  bool dos_compatibility = format != NULL                             
    2988:	e3a07001 	mov	r7, #1                                        
    && format->type == RTEMS_BDPART_FORMAT_MBR                        
    && format->mbr.dos_compatibility;                                 
  rtems_bdbuf_buffer *block = NULL;                                   
  rtems_blkdev_bnum disk_end = 0;                                     
  rtems_blkdev_bnum record_space =                                    
    298c:	e3a0803f 	mov	r8, #63	; 0x3f                                
    dos_compatibility ? RTEMS_BDPART_MBR_CYLINDER_SIZE : 1;           
  size_t ppc = 0; /* Primary partition count */                       
  size_t i = 0;                                                       
  uint8_t *data = NULL;                                               
  int fd = -1;                                                        
  rtems_disk_device *dd = NULL;                                       
    2990:	e58d3010 	str	r3, [sp, #16]                                 
                                                                      
  /* Check if we have something to do */                              
  if (count == 0) {                                                   
    2994:	1affffec 	bne	294c <rtems_bdpart_write+0x4c>                
                                                                      
  if (block != NULL) {                                                
    rtems_bdbuf_sync( block);                                         
  }                                                                   
                                                                      
  return esc;                                                         
    2998:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    299c:	eaffffee 	b	295c <rtems_bdpart_write+0x5c>                  <== NOT EXECUTED
  if (format == NULL || pt == NULL) {                                 
    return RTEMS_INVALID_ADDRESS;                                     
  }                                                                   
                                                                      
  /* Get disk data */                                                 
  sc = rtems_bdpart_get_disk_data( disk_name, &fd, &dd, &disk_end);   
    29a0:	e28d100c 	add	r1, sp, #12                                   
    29a4:	e28d2010 	add	r2, sp, #16                                   
    29a8:	e28d3008 	add	r3, sp, #8                                    
    29ac:	ebfffe6a 	bl	235c <rtems_bdpart_get_disk_data>              
  if (sc != RTEMS_SUCCESSFUL) {                                       
    29b0:	e3500000 	cmp	r0, #0                                        
    29b4:	1affffe8 	bne	295c <rtems_bdpart_write+0x5c>                
    return sc;                                                        
  }                                                                   
                                                                      
  /* Align end of disk on cylinder boundary if necessary */           
  if (dos_compatibility) {                                            
    29b8:	e3570000 	cmp	r7, #0                                        
    29bc:	059d0008 	ldreq	r0, [sp, #8]                                
    29c0:	0a000005 	beq	29dc <rtems_bdpart_write+0xdc>                
    disk_end -= (disk_end % record_space);                            
    29c4:	e59da008 	ldr	sl, [sp, #8]                                  
    29c8:	e1a01008 	mov	r1, r8                                        
    29cc:	e1a0000a 	mov	r0, sl                                        
    29d0:	eb007540 	bl	1fed8 <__umodsi3>                              
    29d4:	e060000a 	rsb	r0, r0, sl                                    
    29d8:	e58d0008 	str	r0, [sp, #8]                                  
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check that begin and end are proper within the disk */         
    if (p->begin >= disk_end || p->end > disk_end) {                  
    29dc:	e596c000 	ldr	ip, [r6]                                      
    29e0:	e15c0000 	cmp	ip, r0                                        
    29e4:	2a000019 	bcs	2a50 <rtems_bdpart_write+0x150>               
    29e8:	e5963004 	ldr	r3, [r6, #4]                                  
    29ec:	e1500003 	cmp	r0, r3                                        
    29f0:	3a000016 	bcc	2a50 <rtems_bdpart_write+0x150>               
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that begin and end are valid */                          
    if (p->begin >= p->end) {                                         
    29f4:	e15c0003 	cmp	ip, r3                                        
    29f8:	31a09006 	movcc	r9, r6                                      
    29fc:	31a03006 	movcc	r3, r6                                      
  if (dos_compatibility) {                                            
    disk_end -= (disk_end % record_space);                            
  }                                                                   
                                                                      
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
    2a00:	33a0b000 	movcc	fp, #0                                      
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that begin and end are valid */                          
    if (p->begin >= p->end) {                                         
    2a04:	2a000011 	bcs	2a50 <rtems_bdpart_write+0x150>               
  if (dos_compatibility) {                                            
    disk_end -= (disk_end % record_space);                            
  }                                                                   
                                                                      
  /* Check that we have a consistent partition table */               
  for (i = 0; i < count; ++i) {                                       
    2a08:	e28bb001 	add	fp, fp, #1                                    
    2a0c:	e15b0004 	cmp	fp, r4                                        
    2a10:	0a000018 	beq	2a78 <rtems_bdpart_write+0x178>               
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check that begin and end are proper within the disk */         
    if (p->begin >= disk_end || p->end > disk_end) {                  
    2a14:	e5932030 	ldr	r2, [r3, #48]	; 0x30                          
    2a18:	e1520000 	cmp	r2, r0                                        
    2a1c:	2a00000b 	bcs	2a50 <rtems_bdpart_write+0x150>               
    2a20:	e5931034 	ldr	r1, [r3, #52]	; 0x34                          
    2a24:	e1510000 	cmp	r1, r0                                        
    2a28:	8a000008 	bhi	2a50 <rtems_bdpart_write+0x150>               
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that begin and end are valid */                          
    if (p->begin >= p->end) {                                         
    2a2c:	e1520001 	cmp	r2, r1                                        
    2a30:	2a000006 	bcs	2a50 <rtems_bdpart_write+0x150>               
      esc = RTEMS_INVALID_NUMBER;                                     
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check that partitions do not overlap */                        
    if (i > 0 && pt [i - 1].end > p->begin) {                         
    2a34:	e35b0000 	cmp	fp, #0                                        
    2a38:	0a000002 	beq	2a48 <rtems_bdpart_write+0x148>               
    2a3c:	e5931004 	ldr	r1, [r3, #4]                                  
    2a40:	e1520001 	cmp	r2, r1                                        
    2a44:	3a000001 	bcc	2a50 <rtems_bdpart_write+0x150>               
    2a48:	e2833030 	add	r3, r3, #48	; 0x30                            
    2a4c:	eaffffed 	b	2a08 <rtems_bdpart_write+0x108>                 
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
      esc = RTEMS_INVALID_NUMBER;                                     
    2a50:	e3a0400a 	mov	r4, #10                                       <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
cleanup:                                                              
                                                                      
  if (fd >= 0) {                                                      
    2a54:	e59d000c 	ldr	r0, [sp, #12]                                 
    2a58:	e3500000 	cmp	r0, #0                                        
    close( fd);                                                       
    2a5c:	ab000707 	blge	4680 <close>                                 
  }                                                                   
                                                                      
  if (block != NULL) {                                                
    2a60:	e59d0004 	ldr	r0, [sp, #4]                                  
    2a64:	e3500000 	cmp	r0, #0                                        
    2a68:	0affffca 	beq	2998 <rtems_bdpart_write+0x98>                
    rtems_bdbuf_sync( block);                                         
    2a6c:	eb00315d 	bl	efe8 <rtems_bdbuf_sync>                        
  }                                                                   
                                                                      
  return esc;                                                         
    2a70:	e1a00004 	mov	r0, r4                                        
    2a74:	eaffffb8 	b	295c <rtems_bdpart_write+0x5c>                  
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
    2a78:	e5953000 	ldr	r3, [r5]                                      
    2a7c:	e3530000 	cmp	r3, #0                                        
    esc = RTEMS_NOT_IMPLEMENTED;                                      
    2a80:	13a04018 	movne	r4, #24                                     
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check format */                                                  
  if (format->type != RTEMS_BDPART_FORMAT_MBR) {                      
    2a84:	1afffff2 	bne	2a54 <rtems_bdpart_write+0x154>               
   * Set primary partition count.  If we have more than four partitions we need
   * an extended partition which will contain the partitions of number four and
   * above as logical partitions.  If we have four or less partitions we can
   * use the primary partition table.                                 
   */                                                                 
  ppc = count <= 4 ? count : 3;                                       
    2a88:	e35b0004 	cmp	fp, #4                                        
    2a8c:	83a0b003 	movhi	fp, #3                                      
                                                                      
  /*                                                                  
   * Check that the first primary partition starts at head one and sector one
   * under the virtual one head and 63 sectors geometry if necessary. 
   */                                                                 
  if (dos_compatibility && pt [0].begin != RTEMS_BDPART_MBR_CYLINDER_SIZE) {
    2a90:	e3570000 	cmp	r7, #0                                        
    2a94:	0a000001 	beq	2aa0 <rtems_bdpart_write+0x1a0>               
    2a98:	e35c003f 	cmp	ip, #63	; 0x3f                                
    2a9c:	1affffeb 	bne	2a50 <rtems_bdpart_write+0x150>               
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    2aa0:	e15b0004 	cmp	fp, r4                                        
    2aa4:	2a000016 	bcs	2b04 <rtems_bdpart_write+0x204>               
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
    2aa8:	e24b2001 	sub	r2, fp, #1                                    
    2aac:	e08b308b 	add	r3, fp, fp, lsl #1                            
    2ab0:	e0822082 	add	r2, r2, r2, lsl #1                            
    2ab4:	e1a03203 	lsl	r3, r3, #4                                    
    2ab8:	e0862202 	add	r2, r6, r2, lsl #4                            
    2abc:	e7961003 	ldr	r1, [r6, r3]                                  
    2ac0:	e5922004 	ldr	r2, [r2, #4]                                  
    2ac4:	e0622001 	rsb	r2, r2, r1                                    
    2ac8:	e1580002 	cmp	r8, r2                                        
    2acc:	e0862003 	add	r2, r6, r3                                    
    2ad0:	91a0300b 	movls	r3, fp                                      
    2ad4:	9a000006 	bls	2af4 <rtems_bdpart_write+0x1f4>               
    2ad8:	eaffffdc 	b	2a50 <rtems_bdpart_write+0x150>                 <== NOT EXECUTED
    2adc:	e5910030 	ldr	r0, [r1, #48]	; 0x30                          
    2ae0:	e5911004 	ldr	r1, [r1, #4]                                  
    2ae4:	e0611000 	rsb	r1, r1, r0                                    
    2ae8:	e1580001 	cmp	r8, r1                                        
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2aec:	e2822030 	add	r2, r2, #48	; 0x30                            
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    if ((pt [i].begin - pt [i - 1].end) < record_space) {             
    2af0:	8affffd6 	bhi	2a50 <rtems_bdpart_write+0x150>               
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    2af4:	e2833001 	add	r3, r3, #1                                    
    2af8:	e1540003 	cmp	r4, r3                                        
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2afc:	e1a01002 	mov	r1, r2                                        
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    2b00:	8afffff5 	bhi	2adc <rtems_bdpart_write+0x1dc>               
    2b04:	e28d3017 	add	r3, sp, #23                                   
      esc =  RTEMS_INVALID_ID;                                        
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
    2b08:	e58d8000 	str	r8, [sp]                                      
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    2b0c:	e1a07006 	mov	r7, r6                                        
      esc =  RTEMS_INVALID_ID;                                        
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
    2b10:	e1a08005 	mov	r8, r5                                        
   * Each logical partition is described via one EBR preceding the partition.
   * The space for the EBR and maybe some space which is needed for DOS
   * compatibility resides between the partitions.  So there have to be gaps of
   * the appropriate size between the partitions.                     
   */                                                                 
  for (i = ppc; i < count; ++i) {                                     
    2b14:	e3a0a000 	mov	sl, #0                                        
      esc =  RTEMS_INVALID_ID;                                        
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
    2b18:	e1a05003 	mov	r5, r3                                        
    2b1c:	ea000009 	b	2b48 <rtems_bdpart_write+0x248>                 
    2b20:	e2873028 	add	r3, r7, #40	; 0x28                            
    2b24:	e893000c 	ldm	r3, {r2, r3}                                  
    2b28:	e3a000ff 	mov	r0, #255	; 0xff                               
    2b2c:	e3a01000 	mov	r1, #0                                        
    2b30:	e1510003 	cmp	r1, r3                                        
    2b34:	01500002 	cmpeq	r0, r2                                      
    2b38:	3a00000a 	bcc	2b68 <rtems_bdpart_write+0x268>               
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
    2b3c:	e15a0004 	cmp	sl, r4                                        
    2b40:	e2877030 	add	r7, r7, #48	; 0x30                            
    2b44:	0a000009 	beq	2b70 <rtems_bdpart_write+0x270>               
    uint8_t type = 0;                                                 
    2b48:	e3a02000 	mov	r2, #0                                        
                                                                      
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check type */                                                  
    if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {       
    2b4c:	e2870008 	add	r0, r7, #8                                    
    2b50:	e1a01005 	mov	r1, r5                                        
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
    uint8_t type = 0;                                                 
    2b54:	e5cd2017 	strb	r2, [sp, #23]                                
                                                                      
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check type */                                                  
    if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {       
    2b58:	ebfffdf5 	bl	2334 <rtems_bdpart_to_mbr_partition_type>      
    2b5c:	e3500000 	cmp	r0, #0                                        
      goto cleanup;                                                   
    }                                                                 
  }                                                                   
                                                                      
  /* Check that we can convert the parition descriptions to the MBR format */
  for (i = 0; i < count; ++i) {                                       
    2b60:	e28aa001 	add	sl, sl, #1                                    
    uint8_t type = 0;                                                 
                                                                      
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Check type */                                                  
    if (!rtems_bdpart_to_mbr_partition_type( p->type, &type)) {       
    2b64:	1affffed 	bne	2b20 <rtems_bdpart_write+0x220>               
      goto cleanup;                                                   
    }                                                                 
                                                                      
    /* Check flags */                                                 
    if (p->flags > 0xffU) {                                           
      esc = RTEMS_INVALID_ID;                                         
    2b68:	e3a04004 	mov	r4, #4                                        <== NOT EXECUTED
    2b6c:	eaffffb8 	b	2a54 <rtems_bdpart_write+0x154>                 <== NOT EXECUTED
    /* Check ID */                                                    
    /* TODO */                                                        
  }                                                                   
                                                                      
  /* New MBR */                                                       
  sc = rtems_bdpart_new_record( dd, 0, &block);                       
    2b70:	e59d0010 	ldr	r0, [sp, #16]                                 
    2b74:	e3a01000 	mov	r1, #0                                        
    2b78:	e28d2004 	add	r2, sp, #4                                    
    2b7c:	e1a05008 	mov	r5, r8                                        
    2b80:	e59d8000 	ldr	r8, [sp]                                      
    2b84:	ebffff3a 	bl	2874 <rtems_bdpart_new_record>                 
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2b88:	e3500000 	cmp	r0, #0                                        
    2b8c:	1a00008d 	bne	2dc8 <rtems_bdpart_write+0x4c8>               
  }                                                                   
                                                                      
  /* Write disk ID */                                                 
  rtems_uint32_to_little_endian(                                      
    format->mbr.disk_id,                                              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
    2b90:	e59d3004 	ldr	r3, [sp, #4]                                  
    2b94:	e593101c 	ldr	r1, [r3, #28]                                 
    esc = sc;                                                         
    goto cleanup;                                                     
  }                                                                   
                                                                      
  /* Write disk ID */                                                 
  rtems_uint32_to_little_endian(                                      
    2b98:	e5952004 	ldr	r2, [r5, #4]                                  
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2b9c:	e2813f6d 	add	r3, r1, #436	; 0x1b4                          
    2ba0:	e2811f6e 	add	r1, r1, #440	; 0x1b8                          
    2ba4:	e2833003 	add	r3, r3, #3                                    
    2ba8:	e2811003 	add	r1, r1, #3                                    
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    data [i] = (uint8_t) value;                                       
    2bac:	e5e32001 	strb	r2, [r3, #1]!                                
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2bb0:	e1530001 	cmp	r3, r1                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2bb4:	e1a02422 	lsr	r2, r2, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2bb8:	1afffffb 	bne	2bac <rtems_bdpart_write+0x2ac>               
    format->mbr.disk_id,                                              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
    2bbc:	e59d3004 	ldr	r3, [sp, #4]                                  
    2bc0:	e593301c 	ldr	r3, [r3, #28]                                 
    2bc4:	e2832f6f 	add	r2, r3, #444	; 0x1bc                          
    2bc8:	e2822002 	add	r2, r2, #2                                    
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2bcc:	e2833f72 	add	r3, r3, #456	; 0x1c8                          
    format->mbr.disk_id,                                              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
    2bd0:	e58d2000 	str	r2, [sp]                                      
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2bd4:	e2831001 	add	r1, r3, #1                                    
    format->mbr.disk_id,                                              
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
    2bd8:	e1a00002 	mov	r0, r2                                        
  for (i = 0; i < ppc; ++i) {                                         
    2bdc:	e3a0c000 	mov	ip, #0                                        
    2be0:	e1a0a008 	mov	sl, r8                                        
                                                                      
    /* Write partition entry */                                       
    rtems_bdpart_write_mbr_partition(                                 
      data,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
    2be4:	e5993000 	ldr	r3, [r9]                                      
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Write partition entry */                                       
    rtems_bdpart_write_mbr_partition(                                 
    2be8:	e5992004 	ldr	r2, [r9, #4]                                  
  if (block != NULL) {                                                
    rtems_bdbuf_sync( block);                                         
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
    2bec:	e5d97008 	ldrb	r7, [r9, #8]                                 
    rtems_bdpart_write_mbr_partition(                                 
      data,                                                           
      p->begin,                                                       
      p->end - p->begin,                                              
      rtems_bdpart_mbr_partition_type( p->type),                      
      (uint8_t) p->flags                                              
    2bf0:	e5d95028 	ldrb	r5, [r9, #40]	; 0x28                         
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    const rtems_bdpart_partition *p = pt + i;                         
                                                                      
    /* Write partition entry */                                       
    rtems_bdpart_write_mbr_partition(                                 
    2bf4:	e0632002 	rsb	r2, r3, r2                                    
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2bf8:	e2808007 	add	r8, r0, #7                                    
    data [i] = (uint8_t) value;                                       
    2bfc:	e5e83001 	strb	r3, [r8, #1]!                                
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c00:	e1580001 	cmp	r8, r1                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2c04:	e1a03423 	lsr	r3, r3, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c08:	1afffffb 	bne	2bfc <rtems_bdpart_write+0x2fc>               
    2c0c:	e280800f 	add	r8, r0, #15                                   
    2c10:	e1a03001 	mov	r3, r1                                        
    data [i] = (uint8_t) value;                                       
    2c14:	e5e32001 	strb	r2, [r3, #1]!                                
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c18:	e1530008 	cmp	r3, r8                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2c1c:	e1a02422 	lsr	r2, r2, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c20:	1afffffb 	bne	2c14 <rtems_bdpart_write+0x314>               
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    2c24:	e28cc001 	add	ip, ip, #1                                    
    2c28:	e15c000b 	cmp	ip, fp                                        
  uint8_t flags                                                       
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;                         
    2c2c:	e5c07004 	strb	r7, [r0, #4]                                 
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    2c30:	e2899030 	add	r9, r9, #48	; 0x30                            
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;                         
  data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;                       
    2c34:	e541500b 	strb	r5, [r1, #-11]                               
      p->end - p->begin,                                              
      rtems_bdpart_mbr_partition_type( p->type),                      
      (uint8_t) p->flags                                              
    );                                                                
                                                                      
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
    2c38:	e2800010 	add	r0, r0, #16                                   
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    2c3c:	e2811010 	add	r1, r1, #16                                   
    2c40:	1affffe7 	bne	2be4 <rtems_bdpart_write+0x2e4>               
    2c44:	e59d1000 	ldr	r1, [sp]                                      
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2c48:	e1a0720b 	lsl	r7, fp, #4                                    
                                                                      
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
  }                                                                   
                                                                      
  /* Write extended partition with logical partitions if necessary */ 
  if (ppc != count) {                                                 
    2c4c:	e15b0004 	cmp	fp, r4                                        
    2c50:	e1a0800a 	mov	r8, sl                                        
    block->buffer + RTEMS_BDPART_MBR_OFFSET_DISK_ID                   
  );                                                                  
                                                                      
  /* Write primary partition table */                                 
  data = block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0;             
  for (i = 0; i < ppc; ++i) {                                         
    2c54:	e0813007 	add	r3, r1, r7                                    
                                                                      
    data += RTEMS_BDPART_MBR_TABLE_ENTRY_SIZE;                        
  }                                                                   
                                                                      
  /* Write extended partition with logical partitions if necessary */ 
  if (ppc != count) {                                                 
    2c58:	0a00005c 	beq	2dd0 <rtems_bdpart_write+0x4d0>               
    rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */ 
                                                                      
    /* Begin of extended partition */                                 
    rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;       
    2c5c:	e3a05030 	mov	r5, #48	; 0x30                                
    2c60:	e005059b 	mul	r5, fp, r5                                    
    2c64:	e796a005 	ldr	sl, [r6, r5]                                  
                                                                      
    /* Write extended partition */                                    
    rtems_bdpart_write_mbr_partition(                                 
    2c68:	e59d1008 	ldr	r1, [sp, #8]                                  
  /* Write extended partition with logical partitions if necessary */ 
  if (ppc != count) {                                                 
    rtems_blkdev_bnum ebr = 0; /* Extended boot record block index */ 
                                                                      
    /* Begin of extended partition */                                 
    rtems_blkdev_bnum ep_begin = pt [ppc].begin - record_space;       
    2c6c:	e068a00a 	rsb	sl, r8, sl                                    
    2c70:	e0865005 	add	r5, r6, r5                                    
                                                                      
    /* Write extended partition */                                    
    rtems_bdpart_write_mbr_partition(                                 
    2c74:	e06a1001 	rsb	r1, sl, r1                                    
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2c78:	e2832007 	add	r2, r3, #7                                    
    2c7c:	e283c00b 	add	ip, r3, #11                                   
    2c80:	e1a0000a 	mov	r0, sl                                        
    data [i] = (uint8_t) value;                                       
    2c84:	e5e20001 	strb	r0, [r2, #1]!                                
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c88:	e152000c 	cmp	r2, ip                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2c8c:	e1a00420 	lsr	r0, r0, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c90:	1afffffb 	bne	2c84 <rtems_bdpart_write+0x384>               
    2c94:	e283000f 	add	r0, r3, #15                                   
    data [i] = (uint8_t) value;                                       
    2c98:	e5e21001 	strb	r1, [r2, #1]!                                
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2c9c:	e1520000 	cmp	r2, r0                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2ca0:	e1a01421 	lsr	r1, r1, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2ca4:	1afffffb 	bne	2c98 <rtems_bdpart_write+0x398>               
  uint8_t flags                                                       
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;                         
    2ca8:	e3a02005 	mov	r2, #5                                        
    2cac:	e5c32004 	strb	r2, [r3, #4]                                 
  data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;                       
    2cb0:	e59d3000 	ldr	r3, [sp]                                      
    2cb4:	e3a00000 	mov	r0, #0                                        
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
    2cb8:	e15b0004 	cmp	fp, r4                                        
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;                         
  data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;                       
    2cbc:	e7c30007 	strb	r0, [r3, r7]                                 
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
    2cc0:	2a000040 	bcs	2dc8 <rtems_bdpart_write+0x4c8>               
    RTEMS_BDPART_MBR_SIGNATURE_1;                                     
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code rtems_bdpart_write(                                 
    2cc4:	e28b3001 	add	r3, fp, #1                                    
    2cc8:	e3a01030 	mov	r1, #48	; 0x30                                
    2ccc:	e0266391 	mla	r6, r1, r3, r6                                
    2cd0:	e1a0700b 	mov	r7, fp                                        
    2cd4:	e1a09000 	mov	r9, r0                                        
          0                                                           
        );                                                            
      }                                                               
                                                                      
      /* New EBR */                                                   
      ebr = p->begin - record_space;                                  
    2cd8:	e5951000 	ldr	r1, [r5]                                      
      sc = rtems_bdpart_new_record( dd, ebr, &block);                 
    2cdc:	e59d0010 	ldr	r0, [sp, #16]                                 
    2ce0:	e0681001 	rsb	r1, r8, r1                                    
    2ce4:	e28d2004 	add	r2, sp, #4                                    
    2ce8:	ebfffee1 	bl	2874 <rtems_bdpart_new_record>                 
      if (sc != RTEMS_SUCCESSFUL) {                                   
    2cec:	e3500000 	cmp	r0, #0                                        
    2cf0:	1a000034 	bne	2dc8 <rtems_bdpart_write+0x4c8>               
        goto cleanup;                                                 
      }                                                               
                                                                      
      /* Write first partition entry */                               
      rtems_bdpart_write_mbr_partition(                               
        block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,              
    2cf4:	e59d3004 	ldr	r3, [sp, #4]                                  
    2cf8:	e593201c 	ldr	r2, [r3, #28]                                 
  if (block != NULL) {                                                
    rtems_bdbuf_sync( block);                                         
  }                                                                   
                                                                      
  return esc;                                                         
}                                                                     
    2cfc:	e5d5c008 	ldrb	ip, [r5, #8]                                 
        esc = sc;                                                     
        goto cleanup;                                                 
      }                                                               
                                                                      
      /* Write first partition entry */                               
      rtems_bdpart_write_mbr_partition(                               
    2d00:	e895000a 	ldm	r5, {r1, r3}                                  
    2d04:	e0433001 	sub	r3, r3, r1                                    
        block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_0,              
        record_space,                                                 
        p->end - p->begin,                                            
        rtems_bdpart_mbr_partition_type( p->type),                    
        (uint8_t) p->flags                                            
    2d08:	e5d55028 	ldrb	r5, [r5, #40]	; 0x28                         
  uint8_t type,                                                       
  uint8_t flags                                                       
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
    2d0c:	e2821f72 	add	r1, r2, #456	; 0x1c8                          
    data [i] = (uint8_t) value;                                       
    2d10:	e5c281c6 	strb	r8, [r2, #454]	; 0x1c6                       
    2d14:	e5c201c7 	strb	r0, [r2, #455]	; 0x1c7                       
    2d18:	e5c201c8 	strb	r0, [r2, #456]	; 0x1c8                       
    2d1c:	e5c201c9 	strb	r0, [r2, #457]	; 0x1c9                       
    2d20:	e2811002 	add	r1, r1, #2                                    
    2d24:	e7c13000 	strb	r3, [r1, r0]                                 
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2d28:	e2800001 	add	r0, r0, #1                                    
    2d2c:	e3500004 	cmp	r0, #4                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2d30:	e1a03423 	lsr	r3, r3, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2d34:	1afffffa 	bne	2d24 <rtems_bdpart_write+0x424>               
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
    2d38:	e2877001 	add	r7, r7, #1                                    
    2d3c:	e1540007 	cmp	r4, r7                                        
  uint8_t flags                                                       
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
  data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;                         
    2d40:	e5c2c1c2 	strb	ip, [r2, #450]	; 0x1c2                       
  data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;                       
    2d44:	e5c251be 	strb	r5, [r2, #446]	; 0x1be                       
      RTEMS_BDPART_MBR_EXTENDED,                                      
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
    2d48:	9a000020 	bls	2dd0 <rtems_bdpart_write+0x4d0>               
      const rtems_bdpart_partition *p = pt + i;                       
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
    2d4c:	e15b0007 	cmp	fp, r7                                        
      0                                                               
    );                                                                
                                                                      
    /* Write logical partitions */                                    
    for (i = ppc; i < count; ++i) {                                   
      const rtems_bdpart_partition *p = pt + i;                       
    2d50:	e1a05006 	mov	r5, r6                                        
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
    2d54:	2a000019 	bcs	2dc0 <rtems_bdpart_write+0x4c0>               
        rtems_blkdev_bnum begin = p->begin - record_space;            
                                                                      
        rtems_bdpart_write_mbr_partition(                             
          block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1,            
    2d58:	e59d2004 	ldr	r2, [sp, #4]                                  
    for (i = ppc; i < count; ++i) {                                   
      const rtems_bdpart_partition *p = pt + i;                       
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
        rtems_blkdev_bnum begin = p->begin - record_space;            
    2d5c:	e5963000 	ldr	r3, [r6]                                      
                                                                      
        rtems_bdpart_write_mbr_partition(                             
          block->buffer + RTEMS_BDPART_MBR_OFFSET_TABLE_1,            
    2d60:	e592001c 	ldr	r0, [r2, #28]                                 
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
        rtems_blkdev_bnum begin = p->begin - record_space;            
                                                                      
        rtems_bdpart_write_mbr_partition(                             
    2d64:	e59d2008 	ldr	r2, [sp, #8]                                  
    for (i = ppc; i < count; ++i) {                                   
      const rtems_bdpart_partition *p = pt + i;                       
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
        rtems_blkdev_bnum begin = p->begin - record_space;            
    2d68:	e0683003 	rsb	r3, r8, r3                                    
  uint32_t size,                                                      
  uint8_t type,                                                       
  uint8_t flags                                                       
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
    2d6c:	e280cf75 	add	ip, r0, #468	; 0x1d4                          
                                                                      
      /* Write second partition entry */                              
      if (i > ppc) {                                                  
        rtems_blkdev_bnum begin = p->begin - record_space;            
                                                                      
        rtems_bdpart_write_mbr_partition(                             
    2d70:	e06a1003 	rsb	r1, sl, r3                                    
    2d74:	e0632002 	rsb	r2, r3, r2                                    
  uint32_t size,                                                      
  uint8_t type,                                                       
  uint8_t flags                                                       
)                                                                     
{                                                                     
  rtems_uint32_to_little_endian( begin, data + RTEMS_BDPART_MBR_OFFSET_BEGIN);
    2d78:	e28cc002 	add	ip, ip, #2                                    
    2d7c:	e3a03000 	mov	r3, #0                                        
    data [i] = (uint8_t) value;                                       
    2d80:	e7cc1003 	strb	r1, [ip, r3]                                 
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2d84:	e2833001 	add	r3, r3, #1                                    
    2d88:	e3530004 	cmp	r3, #4                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2d8c:	e1a01421 	lsr	r1, r1, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2d90:	1afffffa 	bne	2d80 <rtems_bdpart_write+0x480>               
  rtems_uint32_to_little_endian( size, data + RTEMS_BDPART_MBR_OFFSET_SIZE);
    2d94:	e2801f76 	add	r1, r0, #472	; 0x1d8                          
    2d98:	e2811002 	add	r1, r1, #2                                    
    2d9c:	e3a03000 	mov	r3, #0                                        
    data [i] = (uint8_t) value;                                       
    2da0:	e7c12003 	strb	r2, [r1, r3]                                 
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2da4:	e2833001 	add	r3, r3, #1                                    
    2da8:	e3530004 	cmp	r3, #4                                        
    data [i] = (uint8_t) value;                                       
    value >>= 8;                                                      
    2dac:	e1a02422 	lsr	r2, r2, #8                                    
                                                                      
static inline void rtems_uint32_to_little_endian( uint32_t value, uint8_t *data)
{                                                                     
  size_t i = 0;                                                       
                                                                      
  for (i = 0; i < 4; ++i) {                                           
    2db0:	1afffffa 	bne	2da0 <rtems_bdpart_write+0x4a0>               
  data [RTEMS_BDPART_MBR_OFFSET_TYPE] = type;                         
    2db4:	e3a01005 	mov	r1, #5                                        
    2db8:	e5c011d2 	strb	r1, [r0, #466]	; 0x1d2                       
  data [RTEMS_BDPART_MBR_OFFSET_FLAGS] = flags;                       
    2dbc:	e5c091ce 	strb	r9, [r0, #462]	; 0x1ce                       
    2dc0:	e2866030 	add	r6, r6, #48	; 0x30                            
    2dc4:	eaffffc3 	b	2cd8 <rtems_bdpart_write+0x3d8>                 
        );                                                            
      }                                                               
                                                                      
      /* New EBR */                                                   
      ebr = p->begin - record_space;                                  
      sc = rtems_bdpart_new_record( dd, ebr, &block);                 
    2dc8:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    2dcc:	eaffff20 	b	2a54 <rtems_bdpart_write+0x154>                 <== NOT EXECUTED
  const rtems_bdpart_partition *pt,                                   
  size_t count                                                        
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_status_code esc = RTEMS_SUCCESSFUL;                           
    2dd0:	e3a04000 	mov	r4, #0                                        
    2dd4:	eaffff1e 	b	2a54 <rtems_bdpart_write+0x154>                 
                                                                      

0000e0d8 <rtems_blkdev_generic_read>: rtems_device_driver rtems_blkdev_generic_read( rtems_device_major_number major __attribute__((unused)), rtems_device_minor_number minor __attribute__((unused)), void * arg) {
    e0d8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    e0dc:	e5923000 	ldr	r3, [r2]                                      
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    e0e0:	e5924010 	ldr	r4, [r2, #16]                                 
    void                    * arg)                                    
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    e0e4:	e593b02c 	ldr	fp, [r3, #44]	; 0x2c                          
rtems_device_driver                                                   
rtems_blkdev_generic_read(                                            
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    e0e8:	e1a05002 	mov	r5, r2                                        
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
    e0ec:	e3a08000 	mov	r8, #0                                        
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    e0f0:	e592600c 	ldr	r6, [r2, #12]                                 
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e0f4:	e992000c 	ldmib	r2, {r2, r3}                                
rtems_device_driver                                                   
rtems_blkdev_generic_read(                                            
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    e0f8:	e24dd00c 	sub	sp, sp, #12                                   
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e0fc:	e1540008 	cmp	r4, r8                                        
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    e100:	e59b9024 	ldr	r9, [fp, #36]	; 0x24                          
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e104:	e88d000c 	stm	sp, {r2, r3}                                  
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
    e108:	e5858018 	str	r8, [r5, #24]                                 
rtems_blkdev_generic_read(                                            
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    e10c:	01a03004 	moveq	r3, r4                                      
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e110:	0a000026 	beq	e1b0 <rtems_blkdev_generic_read+0xd8>         
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e114:	e1a00002 	mov	r0, r2                                        
    e118:	e1a01003 	mov	r1, r3                                        
    e11c:	e1a02009 	mov	r2, r9                                        
    e120:	e1a03008 	mov	r3, r8                                        
    e124:	eb0035a9 	bl	1b7d0 <__divdi3>                               
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
    e128:	e1a02009 	mov	r2, r9                                        
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e12c:	e1a07000 	mov	r7, r0                                        
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
    e130:	e1a03008 	mov	r3, r8                                        
    e134:	e89d0003 	ldm	sp, {r0, r1}                                  
    e138:	eb0036df 	bl	1bcbc <__moddi3>                               
    e13c:	e1a0a000 	mov	sl, r0                                        
    e140:	ea000012 	b	e190 <rtems_blkdev_generic_read+0xb8>           
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
    e144:	e59d3008 	ldr	r3, [sp, #8]                                  
    e148:	e593101c 	ldr	r1, [r3, #28]                                 
        uint32_t            copy;                                     
                                                                      
        rc = rtems_bdbuf_read(dd, block, &diskbuf);                   
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        copy = block_size - blkofs;                                   
    e14c:	e1580004 	cmp	r8, r4                                        
    e150:	21a08004 	movcs	r8, r4                                      
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
    e154:	e1a02008 	mov	r2, r8                                        
    e158:	e081100a 	add	r1, r1, sl                                    
    e15c:	eb00112c 	bl	12614 <memcpy>                                 
        rc = rtems_bdbuf_release(diskbuf);                            
    e160:	e59d0008 	ldr	r0, [sp, #8]                                  
    e164:	ebfffe06 	bl	d984 <rtems_bdbuf_release>                     
        args->bytes_moved += copy;                                    
    e168:	e5952018 	ldr	r2, [r5, #24]                                 
        if (rc != RTEMS_SUCCESSFUL)                                   
    e16c:	e2503000 	subs	r3, r0, #0                                   
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
        rc = rtems_bdbuf_release(diskbuf);                            
        args->bytes_moved += copy;                                    
    e170:	e0822008 	add	r2, r2, r8                                    
    e174:	e5852018 	str	r2, [r5, #24]                                 
        if (rc != RTEMS_SUCCESSFUL)                                   
    e178:	1a00000c 	bne	e1b0 <rtems_blkdev_generic_read+0xd8>         
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e17c:	e0544008 	subs	r4, r4, r8                                   
        rc = rtems_bdbuf_release(diskbuf);                            
        args->bytes_moved += copy;                                    
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        count -= copy;                                                
        buf += copy;                                                  
    e180:	e0866008 	add	r6, r6, r8                                    
        blkofs = 0;                                                   
        block++;                                                      
    e184:	e2877001 	add	r7, r7, #1                                    
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e188:	0a000008 	beq	e1b0 <rtems_blkdev_generic_read+0xd8>         
        args->bytes_moved += copy;                                    
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
        count -= copy;                                                
        buf += copy;                                                  
        blkofs = 0;                                                   
    e18c:	e1a0a003 	mov	sl, r3                                        <== NOT EXECUTED
    while (count > 0)                                                 
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        rc = rtems_bdbuf_read(dd, block, &diskbuf);                   
    e190:	e1a01007 	mov	r1, r7                                        
    e194:	e28d2008 	add	r2, sp, #8                                    
    e198:	e1a0000b 	mov	r0, fp                                        
    e19c:	ebfffd7f 	bl	d7a0 <rtems_bdbuf_read>                        
        if (rc != RTEMS_SUCCESSFUL)                                   
    e1a0:	e2503000 	subs	r3, r0, #0                                   
            break;                                                    
        copy = block_size - blkofs;                                   
    e1a4:	e06a8009 	rsb	r8, sl, r9                                    
        if (copy > count)                                             
            copy = count;                                             
        memcpy(buf, (char *)diskbuf->buffer + blkofs, copy);          
    e1a8:	e1a00006 	mov	r0, r6                                        
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        rc = rtems_bdbuf_read(dd, block, &diskbuf);                   
        if (rc != RTEMS_SUCCESSFUL)                                   
    e1ac:	0affffe4 	beq	e144 <rtems_blkdev_generic_read+0x6c>         
        blkofs = 0;                                                   
        block++;                                                      
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
    e1b0:	e1a00003 	mov	r0, r3                                        
    e1b4:	e28dd00c 	add	sp, sp, #12                                   
    e1b8:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      

0000e1bc <rtems_blkdev_generic_write>: rtems_device_driver rtems_blkdev_generic_write( rtems_device_major_number major __attribute__((unused)), rtems_device_minor_number minor __attribute__((unused)), void * arg) {
    e1bc:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    e1c0:	e5923000 	ldr	r3, [r2]                                      
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    e1c4:	e5924010 	ldr	r4, [r2, #16]                                 
    void                    * arg)                                    
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    e1c8:	e593b02c 	ldr	fp, [r3, #44]	; 0x2c                          
rtems_device_driver                                                   
rtems_blkdev_generic_write(                                           
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    e1cc:	e1a05002 	mov	r5, r2                                        
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
    e1d0:	e3a08000 	mov	r8, #0                                        
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    e1d4:	e592600c 	ldr	r6, [r2, #12]                                 
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e1d8:	e992000c 	ldmib	r2, {r2, r3}                                
rtems_device_driver                                                   
rtems_blkdev_generic_write(                                           
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    e1dc:	e24dd00c 	sub	sp, sp, #12                                   
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e1e0:	e1540008 	cmp	r4, r8                                        
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    rtems_libio_rw_args_t *args = arg;                                
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    e1e4:	e59b9024 	ldr	r9, [fp, #36]	; 0x24                          
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e1e8:	e88d000c 	stm	sp, {r2, r3}                                  
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
    e1ec:	e5858018 	str	r8, [r5, #24]                                 
rtems_blkdev_generic_write(                                           
    rtems_device_major_number major __attribute__((unused)),          
    rtems_device_minor_number minor __attribute__((unused)),          
    void                    * arg)                                    
{                                                                     
    rtems_status_code rc = RTEMS_SUCCESSFUL;                          
    e1f0:	01a00004 	moveq	r0, r4                                      
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e1f4:	0a000031 	beq	e2c0 <rtems_blkdev_generic_write+0x104>       
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e1f8:	e1a00002 	mov	r0, r2                                        
    e1fc:	e1a01003 	mov	r1, r3                                        
    e200:	e1a02009 	mov	r2, r9                                        
    e204:	e1a03008 	mov	r3, r8                                        
    e208:	eb003570 	bl	1b7d0 <__divdi3>                               
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
    e20c:	e1a02009 	mov	r2, r9                                        
    rtems_libio_t *iop = args->iop;                                   
    rtems_disk_device *dd = iop->data1;                               
    uint32_t block_size = dd->block_size;                             
    char *buf = args->buffer;                                         
    uint32_t count = args->count;                                     
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    e210:	e1a07000 	mov	r7, r0                                        
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
    e214:	e1a03008 	mov	r3, r8                                        
    e218:	e89d0003 	ldm	sp, {r0, r1}                                  
    e21c:	eb0036a6 	bl	1bcbc <__moddi3>                               
    e220:	e1a0a000 	mov	sl, r0                                        
    e224:	ea00001a 	b	e294 <rtems_blkdev_generic_write+0xd8>          
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
    e228:	e1a01007 	mov	r1, r7                                        
    e22c:	e1a0000b 	mov	r0, fp                                        
    e230:	e28d2008 	add	r2, sp, #8                                    
    e234:	ebfffd1b 	bl	d6a8 <rtems_bdbuf_get>                         
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
    e238:	e3500000 	cmp	r0, #0                                        
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
    e23c:	e06a8009 	rsb	r8, sl, r9                                    
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
    e240:	e1a01006 	mov	r1, r6                                        
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
    e244:	1a00001d 	bne	e2c0 <rtems_blkdev_generic_write+0x104>       
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
    e248:	e59d3008 	ldr	r3, [sp, #8]                                  
    e24c:	e593001c 	ldr	r0, [r3, #28]                                 
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
    e250:	e1580004 	cmp	r8, r4                                        
    e254:	21a08004 	movcs	r8, r4                                      
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
    e258:	e1a02008 	mov	r2, r8                                        
    e25c:	e080000a 	add	r0, r0, sl                                    
    e260:	eb0010eb 	bl	12614 <memcpy>                                 
        args->bytes_moved += copy;                                    
    e264:	e5953018 	ldr	r3, [r5, #24]                                 
    e268:	e0833008 	add	r3, r3, r8                                    
    e26c:	e5853018 	str	r3, [r5, #24]                                 
                                                                      
        rc = rtems_bdbuf_release_modified(diskbuf);                   
    e270:	e59d0008 	ldr	r0, [sp, #8]                                  
    e274:	ebfffdf3 	bl	da48 <rtems_bdbuf_release_modified>            
        if (rc != RTEMS_SUCCESSFUL)                                   
    e278:	e3500000 	cmp	r0, #0                                        
    e27c:	1a00000f 	bne	e2c0 <rtems_blkdev_generic_write+0x104>       
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e280:	e0544008 	subs	r4, r4, r8                                   
        rc = rtems_bdbuf_release_modified(diskbuf);                   
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        count -= copy;                                                
        buf += copy;                                                  
    e284:	e0866008 	add	r6, r6, r8                                    
        blkofs = 0;                                                   
        block++;                                                      
    e288:	e2877001 	add	r7, r7, #1                                    
    rtems_blkdev_bnum block = (rtems_blkdev_bnum) (args->offset / block_size);
    uint32_t blkofs = (uint32_t) (args->offset % block_size);         
                                                                      
    args->bytes_moved = 0;                                            
                                                                      
    while (count > 0)                                                 
    e28c:	0a00000b 	beq	e2c0 <rtems_blkdev_generic_write+0x104>       
        if (rc != RTEMS_SUCCESSFUL)                                   
            break;                                                    
                                                                      
        count -= copy;                                                
        buf += copy;                                                  
        blkofs = 0;                                                   
    e290:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
    while (count > 0)                                                 
    {                                                                 
        rtems_bdbuf_buffer *diskbuf;                                  
        uint32_t            copy;                                     
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
    e294:	e1540009 	cmp	r4, r9                                        
    e298:	235a0000 	cmpcs	sl, #0                                      
    e29c:	0affffe1 	beq	e228 <rtems_blkdev_generic_write+0x6c>        
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
    e2a0:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    e2a4:	e28d2008 	add	r2, sp, #8                                    <== NOT EXECUTED
    e2a8:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
    e2ac:	ebfffd3b 	bl	d7a0 <rtems_bdbuf_read>                        <== NOT EXECUTED
        if (rc != RTEMS_SUCCESSFUL)                                   
    e2b0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
            break;                                                    
                                                                      
        copy = block_size - blkofs;                                   
    e2b4:	e06a8009 	rsb	r8, sl, r9                                    <== NOT EXECUTED
        if (copy > count)                                             
            copy = count;                                             
        memcpy((char *)diskbuf->buffer + blkofs, buf, copy);          
    e2b8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
                                                                      
        if ((blkofs == 0) && (count >= block_size))                   
            rc = rtems_bdbuf_get(dd, block, &diskbuf);                
        else                                                          
            rc = rtems_bdbuf_read(dd, block, &diskbuf);               
        if (rc != RTEMS_SUCCESSFUL)                                   
    e2bc:	0affffe1 	beq	e248 <rtems_blkdev_generic_write+0x8c>        <== NOT EXECUTED
        blkofs = 0;                                                   
        block++;                                                      
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
    e2c0:	e28dd00c 	add	sp, sp, #12                                   
    e2c4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      

00002888 <rtems_blkdev_imfs_fsync_or_fdatasync>: } static int rtems_blkdev_imfs_fsync_or_fdatasync( rtems_libio_t *iop ) {
    2888:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
    288c:	e5903018 	ldr	r3, [r0, #24]                                 
  int rv = 0;                                                         
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  rtems_status_code sc = rtems_bdbuf_syncdev(dd);                     
    2890:	e5930050 	ldr	r0, [r3, #80]	; 0x50                          
    2894:	eb002f7d 	bl	e690 <rtems_bdbuf_syncdev>                     
                                                                      
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2898:	e3500000 	cmp	r0, #0                                        
    289c:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    errno = EIO;                                                      
    28a0:	eb003e7c 	bl	12298 <__errno>                                <== NOT EXECUTED
    28a4:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
    28a8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    28ac:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    28b0:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

000028b4 <rtems_blkdev_imfs_ioctl>: void *buffer ) { int rv = 0; if (request != RTEMS_BLKIO_REQUEST) {
    28b4:	e59f3034 	ldr	r3, [pc, #52]	; 28f0 <rtems_blkdev_imfs_ioctl+0x3c>
    28b8:	e1510003 	cmp	r1, r3                                        
static int rtems_blkdev_imfs_ioctl(                                   
  rtems_libio_t *iop,                                                 
  uint32_t request,                                                   
  void *buffer                                                        
)                                                                     
{                                                                     
    28bc:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  int rv = 0;                                                         
                                                                      
  if (request != RTEMS_BLKIO_REQUEST) {                               
    28c0:	0a000005 	beq	28dc <rtems_blkdev_imfs_ioctl+0x28>           
    28c4:	e5903018 	ldr	r3, [r0, #24]                                 
    28c8:	e5933050 	ldr	r3, [r3, #80]	; 0x50                          
    rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
    rtems_disk_device *dd = &ctx->dd;                                 
                                                                      
    rv = (*dd->ioctl)(dd, request, buffer);                           
    28cc:	e1a00003 	mov	r0, r3                                        
    28d0:	e1a0e00f 	mov	lr, pc                                        
    28d4:	e593f038 	ldr	pc, [r3, #56]	; 0x38                          
    28d8:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
  } else {                                                            
    /*                                                                
     * It is not allowed to directly access the driver circumventing the cache.
     */                                                               
    errno = EINVAL;                                                   
    28dc:	eb003e6d 	bl	12298 <__errno>                                <== NOT EXECUTED
    28e0:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    28e4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    28e8:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    rv = -1;                                                          
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    28ec:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

000026f0 <rtems_blkdev_imfs_read>: static ssize_t rtems_blkdev_imfs_read( rtems_libio_t *iop, void *buffer, size_t count ) {
    26f0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    26f4:	e5903018 	ldr	r3, [r0, #24]                                 
    26f8:	e5937050 	ldr	r7, [r3, #80]	; 0x50                          
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
    26fc:	e9900018 	ldmib	r0, {r3, r4}                                
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
    2700:	e597b024 	ldr	fp, [r7, #36]	; 0x24                          
static ssize_t rtems_blkdev_imfs_read(                                
  rtems_libio_t *iop,                                                 
  void *buffer,                                                       
  size_t count                                                        
)                                                                     
{                                                                     
    2704:	e24dd010 	sub	sp, sp, #16                                   
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
    2708:	e98d0018 	stmib	sp, {r3, r4}                                
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    270c:	e1a05fcb 	asr	r5, fp, #31                                   
static ssize_t rtems_blkdev_imfs_read(                                
  rtems_libio_t *iop,                                                 
  void *buffer,                                                       
  size_t count                                                        
)                                                                     
{                                                                     
    2710:	e58d2000 	str	r2, [sp]                                      
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    2714:	e1a03005 	mov	r3, r5                                        
    2718:	e1a0200b 	mov	r2, fp                                        
static ssize_t rtems_blkdev_imfs_read(                                
  rtems_libio_t *iop,                                                 
  void *buffer,                                                       
  size_t count                                                        
)                                                                     
{                                                                     
    271c:	e1a09000 	mov	r9, r0                                        
    2720:	e1a0a001 	mov	sl, r1                                        
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    2724:	e99d0003 	ldmib	sp, {r0, r1}                                
    2728:	eb0065d1 	bl	1be74 <__divdi3>                               
  ssize_t block_offset = (ssize_t) (offset % block_size);             
    272c:	e1a0200b 	mov	r2, fp                                        
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    2730:	e1a06000 	mov	r6, r0                                        
  ssize_t block_offset = (ssize_t) (offset % block_size);             
    2734:	e1a03005 	mov	r3, r5                                        
    2738:	e99d0003 	ldmib	sp, {r0, r1}                                
    273c:	eb006707 	bl	1c360 <__moddi3>                               
)                                                                     
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
    2740:	e59d4000 	ldr	r4, [sp]                                      
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    2744:	e3540000 	cmp	r4, #0                                        
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
    2748:	e1a08000 	mov	r8, r0                                        
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
    274c:	e1a01006 	mov	r1, r6                                        
    2750:	e28d200c 	add	r2, sp, #12                                   
    2754:	e1a00007 	mov	r0, r7                                        
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    2758:	da00001d 	ble	27d4 <rtems_blkdev_imfs_read+0xe4>            
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
    275c:	eb002eb7 	bl	e240 <rtems_bdbuf_read>                        
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
    2760:	e3500000 	cmp	r0, #0                                        
    2764:	0a000005 	beq	2780 <rtems_blkdev_imfs_read+0x90>            
                                                                      
  if (remaining >= 0) {                                               
    iop->offset += count;                                             
    rv = (ssize_t) count;                                             
  } else {                                                            
    errno = EIO;                                                      
    2768:	eb003eca 	bl	12298 <__errno>                                <== NOT EXECUTED
    276c:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
    2770:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    rv = -1;                                                          
    2774:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    2778:	e28dd010 	add	sp, sp, #16                                   
    277c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
    2780:	e59d300c 	ldr	r3, [sp, #12]                                 
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
    2784:	e068500b 	rsb	r5, r8, fp                                    
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
    2788:	e593101c 	ldr	r1, [r3, #28]                                 
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
    278c:	e1550004 	cmp	r5, r4                                        
    2790:	a1a05004 	movge	r5, r4                                      
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy(dst, (char *) bd->buffer + block_offset, (size_t) copy); 
    2794:	e0811008 	add	r1, r1, r8                                    
    2798:	e1a02005 	mov	r2, r5                                        
    279c:	e1a0000a 	mov	r0, sl                                        
    27a0:	eb004123 	bl	12c34 <memcpy>                                 
                                                                      
      sc = rtems_bdbuf_release(bd);                                   
    27a4:	e59d000c 	ldr	r0, [sp, #12]                                 
    27a8:	eb002f1d 	bl	e424 <rtems_bdbuf_release>                     
      if (sc == RTEMS_SUCCESSFUL) {                                   
    27ac:	e2508000 	subs	r8, r0, #0                                   
    27b0:	1a00000f 	bne	27f4 <rtems_blkdev_imfs_read+0x104>           
        block_offset = 0;                                             
        remaining -= copy;                                            
    27b4:	e0654004 	rsb	r4, r5, r4                                    
        dst += copy;                                                  
        ++block;                                                      
    27b8:	e2866001 	add	r6, r6, #1                                    
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    27bc:	e3540000 	cmp	r4, #0                                        
                                                                      
      sc = rtems_bdbuf_release(bd);                                   
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
        remaining -= copy;                                            
        dst += copy;                                                  
    27c0:	e08aa005 	add	sl, sl, r5                                    
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    rtems_bdbuf_buffer *bd;                                           
    rtems_status_code sc = rtems_bdbuf_read(dd, block, &bd);          
    27c4:	e1a01006 	mov	r1, r6                                        
    27c8:	e28d200c 	add	r2, sp, #12                                   
    27cc:	e1a00007 	mov	r0, r7                                        
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  char *dst = buffer;                                                 
                                                                      
  while (remaining > 0) {                                             
    27d0:	caffffe1 	bgt	275c <rtems_blkdev_imfs_read+0x6c>            
    } else {                                                          
      remaining = -1;                                                 
    }                                                                 
  }                                                                   
                                                                      
  if (remaining >= 0) {                                               
    27d4:	1affffe3 	bne	2768 <rtems_blkdev_imfs_read+0x78>            
    iop->offset += count;                                             
    27d8:	e999000c 	ldmib	r9, {r2, r3}                                
    27dc:	e59d4000 	ldr	r4, [sp]                                      
    27e0:	e0922004 	adds	r2, r2, r4                                   
    27e4:	e2a33000 	adc	r3, r3, #0                                    
    27e8:	e989000c 	stmib	r9, {r2, r3}                                
    rv = (ssize_t) count;                                             
    27ec:	e1a00004 	mov	r0, r4                                        
    27f0:	eaffffe0 	b	2778 <rtems_blkdev_imfs_read+0x88>              
        block_offset = 0;                                             
        remaining -= copy;                                            
        dst += copy;                                                  
        ++block;                                                      
      } else {                                                        
        remaining = -1;                                               
    27f4:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
    27f8:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
    27fc:	eafffff4 	b	27d4 <rtems_blkdev_imfs_read+0xe4>              <== NOT EXECUTED
                                                                      

000025a4 <rtems_blkdev_imfs_write>: static ssize_t rtems_blkdev_imfs_write( rtems_libio_t *iop, const void *buffer, size_t count ) {
    25a4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    25a8:	e5903018 	ldr	r3, [r0, #24]                                 
    25ac:	e5939050 	ldr	r9, [r3, #80]	; 0x50                          
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
    25b0:	e9900018 	ldmib	r0, {r3, r4}                                
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
    25b4:	e5996024 	ldr	r6, [r9, #36]	; 0x24                          
static ssize_t rtems_blkdev_imfs_write(                               
  rtems_libio_t *iop,                                                 
  const void *buffer,                                                 
  size_t count                                                        
)                                                                     
{                                                                     
    25b8:	e24dd014 	sub	sp, sp, #20                                   
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
    25bc:	e58d3008 	str	r3, [sp, #8]                                  
    25c0:	e58d400c 	str	r4, [sp, #12]                                 
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    25c4:	e1a05fc6 	asr	r5, r6, #31                                   
    25c8:	e1a03005 	mov	r3, r5                                        
static ssize_t rtems_blkdev_imfs_write(                               
  rtems_libio_t *iop,                                                 
  const void *buffer,                                                 
  size_t count                                                        
)                                                                     
{                                                                     
    25cc:	e58d0000 	str	r0, [sp]                                      
    25d0:	e58d2004 	str	r2, [sp, #4]                                  
    25d4:	e1a0b001 	mov	fp, r1                                        
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    25d8:	e1a02006 	mov	r2, r6                                        
    25dc:	e28d1008 	add	r1, sp, #8                                    
    25e0:	e8910003 	ldm	r1, {r0, r1}                                  
    25e4:	eb006622 	bl	1be74 <__divdi3>                               
  ssize_t block_offset = (ssize_t) (offset % block_size);             
    25e8:	e1a03005 	mov	r3, r5                                        
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    25ec:	e1a07000 	mov	r7, r0                                        
  ssize_t block_offset = (ssize_t) (offset % block_size);             
    25f0:	e1a02006 	mov	r2, r6                                        
    25f4:	e28d1008 	add	r1, sp, #8                                    
    25f8:	e8910003 	ldm	r1, {r0, r1}                                  
    25fc:	eb006757 	bl	1c360 <__moddi3>                               
)                                                                     
{                                                                     
  int rv;                                                             
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
    2600:	e59d5004 	ldr	r5, [sp, #4]                                  
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  const char *src = buffer;                                           
                                                                      
  while (remaining > 0) {                                             
    2604:	e3550000 	cmp	r5, #0                                        
  rtems_blkdev_imfs_context *ctx = IMFS_generic_get_context_by_iop(iop);
  rtems_disk_device *dd = &ctx->dd;                                   
  ssize_t remaining = (ssize_t) count;                                
  off_t offset = iop->offset;                                         
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
    2608:	e1a04006 	mov	r4, r6                                        
  ssize_t block_offset = (ssize_t) (offset % block_size);             
    260c:	e1a08000 	mov	r8, r0                                        
  const char *src = buffer;                                           
                                                                      
  while (remaining > 0) {                                             
    2610:	da000029 	ble	26bc <rtems_blkdev_imfs_write+0x118>          
    rtems_status_code sc;                                             
    rtems_bdbuf_buffer *bd;                                           
                                                                      
    if (block_offset == 0 && remaining >= block_size) {               
    2614:	e1550006 	cmp	r5, r6                                        
    2618:	a3580000 	cmpge	r8, #0                                      
    261c:	1a00000c 	bne	2654 <rtems_blkdev_imfs_write+0xb0>           
       sc = rtems_bdbuf_get(dd, block, &bd);                          
    2620:	e1a00009 	mov	r0, r9                                        
    2624:	e1a01007 	mov	r1, r7                                        
    2628:	e28d2010 	add	r2, sp, #16                                   
    262c:	eb002ec5 	bl	e148 <rtems_bdbuf_get>                         
    2630:	e1a04000 	mov	r4, r0                                        
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
    2634:	e3540000 	cmp	r4, #0                                        
    2638:	0a00000c 	beq	2670 <rtems_blkdev_imfs_write+0xcc>           
                                                                      
  if (remaining >= 0) {                                               
    iop->offset += count;                                             
    rv = (ssize_t) count;                                             
  } else {                                                            
    errno = EIO;                                                      
    263c:	eb003f15 	bl	12298 <__errno>                                <== NOT EXECUTED
    2640:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
    2644:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    rv = -1;                                                          
    2648:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    264c:	e28dd014 	add	sp, sp, #20                                   
    2650:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    rtems_bdbuf_buffer *bd;                                           
                                                                      
    if (block_offset == 0 && remaining >= block_size) {               
       sc = rtems_bdbuf_get(dd, block, &bd);                          
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
    2654:	e1a01007 	mov	r1, r7                                        
    2658:	e28d2010 	add	r2, sp, #16                                   
    265c:	e1a00009 	mov	r0, r9                                        
    2660:	eb002ef6 	bl	e240 <rtems_bdbuf_read>                        
    2664:	e1a04000 	mov	r4, r0                                        
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
    2668:	e3540000 	cmp	r4, #0                                        
    266c:	1afffff2 	bne	263c <rtems_blkdev_imfs_write+0x98>           
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
    2670:	e59d3010 	ldr	r3, [sp, #16]                                 
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
    2674:	e068a006 	rsb	sl, r8, r6                                    
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
    2678:	e593001c 	ldr	r0, [r3, #28]                                 
    } else {                                                          
       sc = rtems_bdbuf_read(dd, block, &bd);                         
    }                                                                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ssize_t copy = block_size - block_offset;                       
    267c:	e15a0005 	cmp	sl, r5                                        
    2680:	a1a0a005 	movge	sl, r5                                      
                                                                      
      if (copy > remaining) {                                         
        copy = remaining;                                             
      }                                                               
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
    2684:	e1a0100b 	mov	r1, fp                                        
    2688:	e1a0200a 	mov	r2, sl                                        
    268c:	e0800008 	add	r0, r0, r8                                    
    2690:	eb004167 	bl	12c34 <memcpy>                                 
                                                                      
      sc = rtems_bdbuf_release_modified(bd);                          
    2694:	e59d0010 	ldr	r0, [sp, #16]                                 
    2698:	eb002f92 	bl	e4e8 <rtems_bdbuf_release_modified>            
      if (sc == RTEMS_SUCCESSFUL) {                                   
    269c:	e3500000 	cmp	r0, #0                                        
    26a0:	1a00000f 	bne	26e4 <rtems_blkdev_imfs_write+0x140>          
        block_offset = 0;                                             
        remaining -= copy;                                            
    26a4:	e06a5005 	rsb	r5, sl, r5                                    
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  const char *src = buffer;                                           
                                                                      
  while (remaining > 0) {                                             
    26a8:	e3550000 	cmp	r5, #0                                        
                                                                      
      sc = rtems_bdbuf_release_modified(bd);                          
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
        remaining -= copy;                                            
        src += copy;                                                  
    26ac:	e08bb00a 	add	fp, fp, sl                                    
        ++block;                                                      
    26b0:	e2877001 	add	r7, r7, #1                                    
                                                                      
      memcpy((char *) bd->buffer + block_offset, src, (size_t) copy); 
                                                                      
      sc = rtems_bdbuf_release_modified(bd);                          
      if (sc == RTEMS_SUCCESSFUL) {                                   
        block_offset = 0;                                             
    26b4:	e1a08004 	mov	r8, r4                                        
  ssize_t block_size = (ssize_t) rtems_disk_get_block_size(dd);       
  rtems_blkdev_bnum block = (rtems_blkdev_bnum) (offset / block_size);
  ssize_t block_offset = (ssize_t) (offset % block_size);             
  const char *src = buffer;                                           
                                                                      
  while (remaining > 0) {                                             
    26b8:	caffffd5 	bgt	2614 <rtems_blkdev_imfs_write+0x70>           
    } else {                                                          
      remaining = -1;                                                 
    }                                                                 
  }                                                                   
                                                                      
  if (remaining >= 0) {                                               
    26bc:	1affffde 	bne	263c <rtems_blkdev_imfs_write+0x98>           
    iop->offset += count;                                             
    26c0:	e59d4000 	ldr	r4, [sp]                                      
    26c4:	e994000c 	ldmib	r4, {r2, r3}                                
    26c8:	e59d4004 	ldr	r4, [sp, #4]                                  
    26cc:	e0922004 	adds	r2, r2, r4                                   
    26d0:	e59d4000 	ldr	r4, [sp]                                      
    26d4:	e2a33000 	adc	r3, r3, #0                                    
    26d8:	e984000c 	stmib	r4, {r2, r3}                                
    rv = (ssize_t) count;                                             
    26dc:	e59d0004 	ldr	r0, [sp, #4]                                  
    26e0:	eaffffd9 	b	264c <rtems_blkdev_imfs_write+0xa8>             
        block_offset = 0;                                             
        remaining -= copy;                                            
        src += copy;                                                  
        ++block;                                                      
      } else {                                                        
        remaining = -1;                                               
    26e4:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
    26e8:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
    26ec:	eafffff2 	b	26bc <rtems_blkdev_imfs_write+0x118>            <== NOT EXECUTED
                                                                      

0000df8c <rtems_blkdev_ioctl>: rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) { rtems_status_code sc; int rc = 0; switch (req)
    df8c:	e59f3124 	ldr	r3, [pc, #292]	; e0b8 <rtems_blkdev_ioctl+0x12c>
    df90:	e1510003 	cmp	r1, r3                                        
#include <rtems/blkdev.h>                                             
#include <rtems/bdbuf.h>                                              
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    df94:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
    df98:	e1a03000 	mov	r3, r0                                        
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
    df9c:	0a000041 	beq	e0a8 <rtems_blkdev_ioctl+0x11c>               
    dfa0:	9a000015 	bls	dffc <rtems_blkdev_ioctl+0x70>                
    dfa4:	e59fc110 	ldr	ip, [pc, #272]	; e0bc <rtems_blkdev_ioctl+0x130>
    dfa8:	e151000c 	cmp	r1, ip                                        
                rc = -1;                                              
            }                                                         
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETDISKDEV:                                  
            *(rtems_disk_device **) argp = dd;                        
    dfac:	05820000 	streq	r0, [r2]                                    
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    dfb0:	03a00000 	moveq	r0, #0                                      
                                                                      
    switch (req)                                                      
    dfb4:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    dfb8:	9a00001d 	bls	e034 <rtems_blkdev_ioctl+0xa8>                
    dfbc:	e59f30fc 	ldr	r3, [pc, #252]	; e0c0 <rtems_blkdev_ioctl+0x134>
    dfc0:	e1510003 	cmp	r1, r3                                        
    dfc4:	0a000029 	beq	e070 <rtems_blkdev_ioctl+0xe4>                
    dfc8:	e243311f 	sub	r3, r3, #-1073741817	; 0xc0000007             
    dfcc:	e1510003 	cmp	r1, r3                                        
    dfd0:	1a00001a 	bne	e040 <rtems_blkdev_ioctl+0xb4>                
        case RTEMS_BLKIO_GETBLKSIZE:                                  
            *(uint32_t *) argp = dd->block_size;                      
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SETBLKSIZE:                                  
            sc = rtems_bdbuf_set_block_size(dd, *(uint32_t *) argp, true);
    dfd4:	e5921000 	ldr	r1, [r2]                                      
    dfd8:	e3a02001 	mov	r2, #1                                        
    dfdc:	ebffff96 	bl	de3c <rtems_bdbuf_set_block_size>              
            if (sc != RTEMS_SUCCESSFUL) {                             
    dfe0:	e3500000 	cmp	r0, #0                                        
    dfe4:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SYNCDEV:                                     
            sc = rtems_bdbuf_syncdev(dd);                             
            if (sc != RTEMS_SUCCESSFUL) {                             
                errno = EIO;                                          
    dfe8:	eb000f4f 	bl	11d2c <__errno>                                <== NOT EXECUTED
    dfec:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
    dff0:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
                rc = -1;                                              
    dff4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    dff8:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
    dffc:	e59fc0c0 	ldr	ip, [pc, #192]	; e0c4 <rtems_blkdev_ioctl+0x138>
    e000:	e151000c 	cmp	r1, ip                                        
    e004:	0a000024 	beq	e09c <rtems_blkdev_ioctl+0x110>               
    e008:	9a000011 	bls	e054 <rtems_blkdev_ioctl+0xc8>                
    e00c:	e59fc0b4 	ldr	ip, [pc, #180]	; e0c8 <rtems_blkdev_ioctl+0x13c>
    e010:	e151000c 	cmp	r1, ip                                        
    e014:	0a00001d 	beq	e090 <rtems_blkdev_ioctl+0x104>               
    e018:	e59f00ac 	ldr	r0, [pc, #172]	; e0cc <rtems_blkdev_ioctl+0x140>
    e01c:	e1510000 	cmp	r1, r0                                        
    e020:	1a000006 	bne	e040 <rtems_blkdev_ioctl+0xb4>                
    {                                                                 
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
    e024:	e5933020 	ldr	r3, [r3, #32]                                 
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    e028:	e3a00000 	mov	r0, #0                                        
                                                                      
    switch (req)                                                      
    {                                                                 
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
    e02c:	e5823000 	str	r3, [r2]                                      
            break;                                                    
    e030:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
    e034:	e59f0094 	ldr	r0, [pc, #148]	; e0d0 <rtems_blkdev_ioctl+0x144>
    e038:	e1510000 	cmp	r1, r0                                        
    e03c:	0a00000f 	beq	e080 <rtems_blkdev_ioctl+0xf4>                
        case RTEMS_BLKIO_RESETDEVSTATS:                               
            rtems_bdbuf_reset_device_stats(dd);                       
            break;                                                    
                                                                      
        default:                                                      
            errno = EINVAL;                                           
    e040:	eb000f39 	bl	11d2c <__errno>                                
    e044:	e3a03016 	mov	r3, #22                                       
    e048:	e5803000 	str	r3, [r0]                                      
            rc = -1;                                                  
    e04c:	e3e00000 	mvn	r0, #0                                        
            break;                                                    
    }                                                                 
                                                                      
    return rc;                                                        
}                                                                     
    e050:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
                                                                      
    switch (req)                                                      
    e054:	e59f3078 	ldr	r3, [pc, #120]	; e0d4 <rtems_blkdev_ioctl+0x148>
    e058:	e1510003 	cmp	r1, r3                                        
    e05c:	1afffff7 	bne	e040 <rtems_blkdev_ioctl+0xb4>                
        case RTEMS_BLKIO_GETSIZE:                                     
            *(rtems_blkdev_bnum *) argp = dd->size;                   
            break;                                                    
                                                                      
        case RTEMS_BLKIO_SYNCDEV:                                     
            sc = rtems_bdbuf_syncdev(dd);                             
    e060:	ebfffee2 	bl	dbf0 <rtems_bdbuf_syncdev>                     
            if (sc != RTEMS_SUCCESSFUL) {                             
    e064:	e3500000 	cmp	r0, #0                                        
    e068:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
    e06c:	eaffffdd 	b	dfe8 <rtems_blkdev_ioctl+0x5c>                  <== NOT EXECUTED
        case RTEMS_BLKIO_PURGEDEV:                                    
            rtems_bdbuf_purge_dev(dd);                                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETDEVSTATS:                                 
            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
    e070:	e1a01002 	mov	r1, r2                                        
    e074:	ebffffaf 	bl	df38 <rtems_bdbuf_get_device_stats>            
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    e078:	e3a00000 	mov	r0, #0                                        
            rtems_bdbuf_purge_dev(dd);                                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETDEVSTATS:                                 
            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
            break;                                                    
    e07c:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                rc = -1;                                              
            }                                                         
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETSIZE:                                     
            *(rtems_blkdev_bnum *) argp = dd->size;                   
    e080:	e593301c 	ldr	r3, [r3, #28]                                 
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    e084:	e3a00000 	mov	r0, #0                                        
                rc = -1;                                              
            }                                                         
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETSIZE:                                     
            *(rtems_blkdev_bnum *) argp = dd->size;                   
    e088:	e5823000 	str	r3, [r2]                                      
            break;                                                    
    e08c:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
        case RTEMS_BLKIO_GETDEVSTATS:                                 
            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
            break;                                                    
                                                                      
        case RTEMS_BLKIO_RESETDEVSTATS:                               
            rtems_bdbuf_reset_device_stats(dd);                       
    e090:	ebffffb4 	bl	df68 <rtems_bdbuf_reset_device_stats>          
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    e094:	e3a00000 	mov	r0, #0                                        
            rtems_bdbuf_get_device_stats(dd, (rtems_blkdev_stats *) argp);
            break;                                                    
                                                                      
        case RTEMS_BLKIO_RESETDEVSTATS:                               
            rtems_bdbuf_reset_device_stats(dd);                       
            break;                                                    
    e098:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
        case RTEMS_BLKIO_GETDISKDEV:                                  
            *(rtems_disk_device **) argp = dd;                        
            break;                                                    
                                                                      
        case RTEMS_BLKIO_PURGEDEV:                                    
            rtems_bdbuf_purge_dev(dd);                                
    e09c:	ebfffee4 	bl	dc34 <rtems_bdbuf_purge_dev>                   
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    e0a0:	e3a00000 	mov	r0, #0                                        
            *(rtems_disk_device **) argp = dd;                        
            break;                                                    
                                                                      
        case RTEMS_BLKIO_PURGEDEV:                                    
            rtems_bdbuf_purge_dev(dd);                                
            break;                                                    
    e0a4:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETBLKSIZE:                                  
            *(uint32_t *) argp = dd->block_size;                      
    e0a8:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
                                                                      
int                                                                   
rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp)   
{                                                                     
    rtems_status_code  sc;                                            
    int                rc = 0;                                        
    e0ac:	e3a00000 	mov	r0, #0                                        
        case RTEMS_BLKIO_GETMEDIABLKSIZE:                             
            *(uint32_t *) argp = dd->media_block_size;                
            break;                                                    
                                                                      
        case RTEMS_BLKIO_GETBLKSIZE:                                  
            *(uint32_t *) argp = dd->block_size;                      
    e0b0:	e5823000 	str	r3, [r2]                                      
            break;                                                    
    e0b4:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                                                                      

00021888 <rtems_blkstats>: #include <fcntl.h> #include <unistd.h> #include <errno.h> void rtems_blkstats(FILE *output, const char *device, bool reset) {
   21888:	e92d4070 	push	{r4, r5, r6, lr}                             <== NOT EXECUTED
   2188c:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
   21890:	e24dd068 	sub	sp, sp, #104	; 0x68                           <== NOT EXECUTED
  int fd = open(device, O_RDONLY);                                    
   21894:	e1a00001 	mov	r0, r1                                        <== NOT EXECUTED
   21898:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
#include <fcntl.h>                                                    
#include <unistd.h>                                                   
#include <errno.h>                                                    
                                                                      
void rtems_blkstats(FILE *output, const char *device, bool reset)     
{                                                                     
   2189c:	e20260ff 	and	r6, r2, #255	; 0xff                           <== NOT EXECUTED
  int fd = open(device, O_RDONLY);                                    
   218a0:	ebff882a 	bl	3950 <open>                                    <== NOT EXECUTED
                                                                      
  if (fd >= 0) {                                                      
   218a4:	e2505000 	subs	r5, r0, #0                                   <== NOT EXECUTED
   218a8:	ba00001f 	blt	2192c <rtems_blkstats+0xa4>                   <== NOT EXECUTED
    struct stat st;                                                   
    int rv;                                                           
                                                                      
    rv = fstat(fd, &st);                                              
   218ac:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
   218b0:	eb000692 	bl	23300 <fstat>                                  <== NOT EXECUTED
    if (rv == 0) {                                                    
   218b4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   218b8:	1a00002b 	bne	2196c <rtems_blkstats+0xe4>                   <== NOT EXECUTED
      if (S_ISBLK(st.st_mode)) {                                      
   218bc:	e59d300c 	ldr	r3, [sp, #12]                                 <== NOT EXECUTED
   218c0:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       <== NOT EXECUTED
   218c4:	e3530a06 	cmp	r3, #24576	; 0x6000                           <== NOT EXECUTED
   218c8:	0a00000a 	beq	218f8 <rtems_blkstats+0x70>                   <== NOT EXECUTED
          } else {                                                    
            fprintf(output, "error: get stats: %s\n", strerror(errno));
          }                                                           
        }                                                             
      } else {                                                        
        fprintf(output, "error: not a block device\n");               
   218cc:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
   218d0:	e3a0201a 	mov	r2, #26                                       <== NOT EXECUTED
   218d4:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   218d8:	e59f00fc 	ldr	r0, [pc, #252]	; 219dc <rtems_blkstats+0x154> <== NOT EXECUTED
   218dc:	eb005835 	bl	379b8 <fwrite>                                 <== NOT EXECUTED
      }                                                               
    } else {                                                          
      fprintf(output, "error: get file stats: %s\n", strerror(errno));
    }                                                                 
                                                                      
    rv = close(fd);                                                   
   218e0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   218e4:	eb000605 	bl	23100 <close>                                  <== NOT EXECUTED
    if (rv != 0) {                                                    
   218e8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   218ec:	1a000016 	bne	2194c <rtems_blkstats+0xc4>                   <== NOT EXECUTED
      fprintf(output, "error: close device: %s\n", strerror(errno));  
    }                                                                 
  } else {                                                            
    fprintf(output, "error: open device: %s\n", strerror(errno));     
  }                                                                   
}                                                                     
   218f0:	e28dd068 	add	sp, sp, #104	; 0x68                           <== NOT EXECUTED
   218f4:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
    int rv;                                                           
                                                                      
    rv = fstat(fd, &st);                                              
    if (rv == 0) {                                                    
      if (S_ISBLK(st.st_mode)) {                                      
        if (reset) {                                                  
   218f8:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
  return ioctl(fd, RTEMS_BLKIO_GETDEVSTATS, stats);                   
}                                                                     
                                                                      
static inline int rtems_disk_fd_reset_device_stats(int fd)            
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_RESETDEVSTATS);                        
   218fc:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   21900:	1a000021 	bne	2198c <rtems_blkstats+0x104>                  <== NOT EXECUTED
static inline int rtems_disk_fd_get_device_stats(                     
  int fd,                                                             
  rtems_blkdev_stats *stats                                           
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDEVSTATS, stats);                   
   21904:	e59f10d4 	ldr	r1, [pc, #212]	; 219e0 <rtems_blkstats+0x158> <== NOT EXECUTED
   21908:	e28d2048 	add	r2, sp, #72	; 0x48                            <== NOT EXECUTED
   2190c:	eb000946 	bl	23e2c <ioctl>                                  <== NOT EXECUTED
          }                                                           
        } else {                                                      
          rtems_blkdev_stats stats;                                   
                                                                      
          rv = rtems_disk_fd_get_device_stats(fd, &stats);            
          if (rv == 0) {                                              
   21910:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   21914:	1a000028 	bne	219bc <rtems_blkstats+0x134>                  <== NOT EXECUTED
            rtems_blkdev_print_stats(                                 
   21918:	e28d0048 	add	r0, sp, #72	; 0x48                            <== NOT EXECUTED
   2191c:	e59f10c0 	ldr	r1, [pc, #192]	; 219e4 <rtems_blkstats+0x15c> <== NOT EXECUTED
   21920:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   21924:	eb000035 	bl	21a00 <rtems_blkdev_print_stats>               <== NOT EXECUTED
   21928:	eaffffec 	b	218e0 <rtems_blkstats+0x58>                     <== NOT EXECUTED
    rv = close(fd);                                                   
    if (rv != 0) {                                                    
      fprintf(output, "error: close device: %s\n", strerror(errno));  
    }                                                                 
  } else {                                                            
    fprintf(output, "error: open device: %s\n", strerror(errno));     
   2192c:	eb0050d2 	bl	35c7c <__errno>                                <== NOT EXECUTED
   21930:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   21934:	eb006bfb 	bl	3c928 <strerror>                               <== NOT EXECUTED
   21938:	e59f10a8 	ldr	r1, [pc, #168]	; 219e8 <rtems_blkstats+0x160> <== NOT EXECUTED
   2193c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   21940:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   21944:	eb005374 	bl	3671c <fprintf>                                <== NOT EXECUTED
   21948:	eaffffe8 	b	218f0 <rtems_blkstats+0x68>                     <== NOT EXECUTED
      fprintf(output, "error: get file stats: %s\n", strerror(errno));
    }                                                                 
                                                                      
    rv = close(fd);                                                   
    if (rv != 0) {                                                    
      fprintf(output, "error: close device: %s\n", strerror(errno));  
   2194c:	eb0050ca 	bl	35c7c <__errno>                                <== NOT EXECUTED
   21950:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   21954:	eb006bf3 	bl	3c928 <strerror>                               <== NOT EXECUTED
   21958:	e59f108c 	ldr	r1, [pc, #140]	; 219ec <rtems_blkstats+0x164> <== NOT EXECUTED
   2195c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   21960:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   21964:	eb00536c 	bl	3671c <fprintf>                                <== NOT EXECUTED
   21968:	eaffffe0 	b	218f0 <rtems_blkstats+0x68>                     <== NOT EXECUTED
        }                                                             
      } else {                                                        
        fprintf(output, "error: not a block device\n");               
      }                                                               
    } else {                                                          
      fprintf(output, "error: get file stats: %s\n", strerror(errno));
   2196c:	eb0050c2 	bl	35c7c <__errno>                                <== NOT EXECUTED
   21970:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   21974:	eb006beb 	bl	3c928 <strerror>                               <== NOT EXECUTED
   21978:	e59f1070 	ldr	r1, [pc, #112]	; 219f0 <rtems_blkstats+0x168> <== NOT EXECUTED
   2197c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   21980:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   21984:	eb005364 	bl	3671c <fprintf>                                <== NOT EXECUTED
   21988:	eaffffd4 	b	218e0 <rtems_blkstats+0x58>                     <== NOT EXECUTED
}                                                                     
                                                                      
static inline int rtems_disk_fd_reset_device_stats(int fd)            
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_RESETDEVSTATS);                        
   2198c:	e59f1060 	ldr	r1, [pc, #96]	; 219f4 <rtems_blkstats+0x16c>  <== NOT EXECUTED
   21990:	eb000925 	bl	23e2c <ioctl>                                  <== NOT EXECUTED
    rv = fstat(fd, &st);                                              
    if (rv == 0) {                                                    
      if (S_ISBLK(st.st_mode)) {                                      
        if (reset) {                                                  
          rv = rtems_disk_fd_reset_device_stats(fd);                  
          if (rv != 0) {                                              
   21994:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   21998:	0affffd0 	beq	218e0 <rtems_blkstats+0x58>                   <== NOT EXECUTED
            fprintf(output, "error: reset stats: %s\n", strerror(errno));
   2199c:	eb0050b6 	bl	35c7c <__errno>                                <== NOT EXECUTED
   219a0:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   219a4:	eb006bdf 	bl	3c928 <strerror>                               <== NOT EXECUTED
   219a8:	e59f1048 	ldr	r1, [pc, #72]	; 219f8 <rtems_blkstats+0x170>  <== NOT EXECUTED
   219ac:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   219b0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   219b4:	eb005358 	bl	3671c <fprintf>                                <== NOT EXECUTED
   219b8:	eaffffc8 	b	218e0 <rtems_blkstats+0x58>                     <== NOT EXECUTED
              &stats,                                                 
              (rtems_printk_plugin_t) fprintf,                        
              output                                                  
            );                                                        
          } else {                                                    
            fprintf(output, "error: get stats: %s\n", strerror(errno));
   219bc:	eb0050ae 	bl	35c7c <__errno>                                <== NOT EXECUTED
   219c0:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   219c4:	eb006bd7 	bl	3c928 <strerror>                               <== NOT EXECUTED
   219c8:	e59f102c 	ldr	r1, [pc, #44]	; 219fc <rtems_blkstats+0x174>  <== NOT EXECUTED
   219cc:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   219d0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   219d4:	eb005350 	bl	3671c <fprintf>                                <== NOT EXECUTED
   219d8:	eaffffc0 	b	218e0 <rtems_blkstats+0x58>                     <== NOT EXECUTED
                                                                      

000027f8 <rtems_disk_delete>: } } rtems_status_code rtems_disk_delete(dev_t dev) {
    27f8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    27fc:	e24dd00c 	sub	sp, sp, #12                                   
    2800:	e1a04000 	mov	r4, r0                                        
    2804:	e1a05001 	mov	r5, r1                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *dd = NULL;                                       
                                                                      
  sc = disk_lock();                                                   
    2808:	ebffff83 	bl	261c <disk_lock>                               
  if (sc != RTEMS_SUCCESSFUL) {                                       
    280c:	e250b000 	subs	fp, r0, #0                                   
    2810:	0a000002 	beq	2820 <rtems_disk_delete+0x28>                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    2814:	e1a0000b 	mov	r0, fp                                        
    2818:	e28dd00c 	add	sp, sp, #12                                   
    281c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  sc = disk_lock();                                                   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
                                                                      
  dd = get_disk_entry(dev, true);                                     
    2820:	e1a00004 	mov	r0, r4                                        
    2824:	e1a01005 	mov	r1, r5                                        
    2828:	e3a02001 	mov	r2, #1                                        
    282c:	ebffff44 	bl	2544 <get_disk_entry>                          
  if (dd == NULL) {                                                   
    2830:	e2503000 	subs	r3, r0, #0                                   
    2834:	0a000050 	beq	297c <rtems_disk_delete+0x184>                
    disk_unlock();                                                    
                                                                      
    return RTEMS_INVALID_ID;                                          
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
    2838:	e3a0a001 	mov	sl, #1                                        
    283c:	e5c3a040 	strb	sl, [r3, #64]	; 0x40                         
}                                                                     
                                                                      
static void                                                           
rtems_disk_cleanup(rtems_disk_device *disk_to_remove)                 
{                                                                     
  rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;  
    2840:	e5936008 	ldr	r6, [r3, #8]                                  
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (physical_disk->deleted) {                                       
    2844:	e5d62040 	ldrb	r2, [r6, #64]	; 0x40                         
    2848:	e3520000 	cmp	r2, #0                                        
    284c:	0a00003b 	beq	2940 <rtems_disk_delete+0x148>                
    dev_t dev = physical_disk->dev;                                   
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
    2850:	e59f7154 	ldr	r7, [pc, #340]	; 29ac <rtems_disk_delete+0x1b4>
    2854:	e5973000 	ldr	r3, [r7]                                      
    2858:	e3530000 	cmp	r3, #0                                        
  rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;  
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (physical_disk->deleted) {                                       
    dev_t dev = physical_disk->dev;                                   
    285c:	e8960018 	ldm	r6, {r3, r4}                                  
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
    2860:	e1a0900b 	mov	r9, fp                                        
  rtems_disk_device *const physical_disk = disk_to_remove->phys_dev;  
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (physical_disk->deleted) {                                       
    dev_t dev = physical_disk->dev;                                   
    2864:	e98d0018 	stmib	sp, {r3, r4}                                
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
    2868:	0a00002d 	beq	2924 <rtems_disk_delete+0x12c>                
    286c:	e1a0800b 	mov	r8, fp                                        
      rtems_disk_device_table *dtab = disktab + major;                
    2870:	e5975004 	ldr	r5, [r7, #4]                                  
    2874:	e0855188 	add	r5, r5, r8, lsl #3                            
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
    2878:	e595c004 	ldr	ip, [r5, #4]                                  
    287c:	e35c0000 	cmp	ip, #0                                        
    2880:	0a000023 	beq	2914 <rtems_disk_delete+0x11c>                
    2884:	e3a04000 	mov	r4, #0                                        
    2888:	e58db000 	str	fp, [sp]                                      
    288c:	ea000002 	b	289c <rtems_disk_delete+0xa4>                   
    2890:	e2844001 	add	r4, r4, #1                                    
    2894:	e154000c 	cmp	r4, ip                                        
    2898:	2a00001c 	bcs	2910 <rtems_disk_delete+0x118>                
        rtems_disk_device *dd = dtab->minor [minor];                  
    289c:	e5951000 	ldr	r1, [r5]                                      
    28a0:	e7910104 	ldr	r0, [r1, r4, lsl #2]                          
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
    28a4:	e3500000 	cmp	r0, #0                                        
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
      rtems_disk_device_table *dtab = disktab + major;                
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
        rtems_disk_device *dd = dtab->minor [minor];                  
    28a8:	e1a0e104 	lsl	lr, r4, #2                                    
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
    28ac:	0afffff7 	beq	2890 <rtems_disk_delete+0x98>                 
    28b0:	e5903008 	ldr	r3, [r0, #8]                                  
    28b4:	e99d0c00 	ldmib	sp, {sl, fp}                                
    28b8:	e893000c 	ldm	r3, {r2, r3}                                  
    28bc:	e15b0003 	cmp	fp, r3                                        
    28c0:	015a0002 	cmpeq	sl, r2                                      
    28c4:	13a03000 	movne	r3, #0                                      
    28c8:	03a03001 	moveq	r3, #1                                      
    28cc:	e1560000 	cmp	r6, r0                                        
    28d0:	03a03000 	moveq	r3, #0                                      
    28d4:	12033001 	andne	r3, r3, #1                                  
    28d8:	e3530000 	cmp	r3, #0                                        
    28dc:	0affffeb 	beq	2890 <rtems_disk_delete+0x98>                 
          if (dd->uses == 0) {                                        
    28e0:	e5903014 	ldr	r3, [r0, #20]                                 
    28e4:	e3530000 	cmp	r3, #0                                        
            ++deleted_count;                                          
            dtab->minor [minor] = NULL;                               
            free_disk_device(dd);                                     
          } else {                                                    
            dd->deleted = true;                                       
    28e8:	13a0b001 	movne	fp, #1                                      
    28ec:	15c0b040 	strbne	fp, [r0, #64]	; 0x40                       
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
        rtems_disk_device *dd = dtab->minor [minor];                  
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
          if (dd->uses == 0) {                                        
    28f0:	1affffe6 	bne	2890 <rtems_disk_delete+0x98>                 
            ++deleted_count;                                          
            dtab->minor [minor] = NULL;                               
    28f4:	e781300e 	str	r3, [r1, lr]                                  
            free_disk_device(dd);                                     
    28f8:	ebffff33 	bl	25cc <free_disk_device>                        
    28fc:	e595c004 	ldr	ip, [r5, #4]                                  
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
      rtems_disk_device_table *dtab = disktab + major;                
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
    2900:	e2844001 	add	r4, r4, #1                                    
    2904:	e154000c 	cmp	r4, ip                                        
        rtems_disk_device *dd = dtab->minor [minor];                  
                                                                      
        if (dd != NULL && dd->phys_dev->dev == dev && dd != physical_disk) {
          if (dd->uses == 0) {                                        
            ++deleted_count;                                          
    2908:	e2899001 	add	r9, r9, #1                                    
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
      rtems_disk_device_table *dtab = disktab + major;                
                                                                      
      for (minor = 0; minor < dtab->size; ++minor) {                  
    290c:	3affffe2 	bcc	289c <rtems_disk_delete+0xa4>                 
    2910:	e59db000 	ldr	fp, [sp]                                      
                                                                      
  if (physical_disk->deleted) {                                       
    dev_t dev = physical_disk->dev;                                   
    unsigned deleted_count = 0;                                       
                                                                      
    for (major = 0; major < disktab_size; ++major) {                  
    2914:	e5973000 	ldr	r3, [r7]                                      
    2918:	e2888001 	add	r8, r8, #1                                    
    291c:	e1580003 	cmp	r8, r3                                        
    2920:	3affffd2 	bcc	2870 <rtems_disk_delete+0x78>                 
          }                                                           
        }                                                             
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    2924:	e5963014 	ldr	r3, [r6, #20]                                 
    2928:	e0699003 	rsb	r9, r9, r3                                    
    if (physical_disk->uses == 0) {                                   
    292c:	e3590000 	cmp	r9, #0                                        
          }                                                           
        }                                                             
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    2930:	e5869014 	str	r9, [r6, #20]                                 
    if (physical_disk->uses == 0) {                                   
    2934:	0a000013 	beq	2988 <rtems_disk_delete+0x190>                
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
    2938:	ebffff43 	bl	264c <disk_unlock>                             
    293c:	eaffffb4 	b	2814 <rtems_disk_delete+0x1c>                   
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
      disktab [major].minor [minor] = NULL;                           
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
    2940:	e5932014 	ldr	r2, [r3, #20]                                 
    2944:	e3520000 	cmp	r2, #0                                        
    2948:	1afffffa 	bne	2938 <rtems_disk_delete+0x140>                
      --physical_disk->uses;                                          
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
      disktab [major].minor [minor] = NULL;                           
    294c:	e59f2058 	ldr	r2, [pc, #88]	; 29ac <rtems_disk_delete+0x1b4>
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
      --physical_disk->uses;                                          
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
    2950:	e593e000 	ldr	lr, [r3]                                      
      disktab [major].minor [minor] = NULL;                           
    2954:	e592c004 	ldr	ip, [r2, #4]                                  
      disktab [major].minor [minor] = NULL;                           
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
      --physical_disk->uses;                                          
    2958:	e5961014 	ldr	r1, [r6, #20]                                 
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
    295c:	e5932004 	ldr	r2, [r3, #4]                                  
      disktab [major].minor [minor] = NULL;                           
    2960:	e79c318e 	ldr	r3, [ip, lr, lsl #3]                          
      disktab [major].minor [minor] = NULL;                           
      free_disk_device(physical_disk);                                
    }                                                                 
  } else {                                                            
    if (disk_to_remove->uses == 0) {                                  
      --physical_disk->uses;                                          
    2964:	e2411001 	sub	r1, r1, #1                                    
    2968:	e5861014 	str	r1, [r6, #20]                                 
      rtems_filesystem_split_dev_t(disk_to_remove->dev, major, minor);
      disktab [major].minor [minor] = NULL;                           
    296c:	e783b102 	str	fp, [r3, r2, lsl #2]                          
      free_disk_device(disk_to_remove);                               
    2970:	ebffff15 	bl	25cc <free_disk_device>                        
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
    2974:	ebffff34 	bl	264c <disk_unlock>                             
    2978:	eaffffa5 	b	2814 <rtems_disk_delete+0x1c>                   
    return sc;                                                        
  }                                                                   
                                                                      
  dd = get_disk_entry(dev, true);                                     
  if (dd == NULL) {                                                   
    disk_unlock();                                                    
    297c:	ebffff32 	bl	264c <disk_unlock>                             <== NOT EXECUTED
                                                                      
    return RTEMS_INVALID_ID;                                          
    2980:	e3a0b004 	mov	fp, #4                                        <== NOT EXECUTED
    2984:	eaffffa2 	b	2814 <rtems_disk_delete+0x1c>                   <== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    if (physical_disk->uses == 0) {                                   
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
    2988:	e5961000 	ldr	r1, [r6]                                      
      disktab [major].minor [minor] = NULL;                           
    298c:	e5973004 	ldr	r3, [r7, #4]                                  
      }                                                               
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    if (physical_disk->uses == 0) {                                   
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
    2990:	e5962004 	ldr	r2, [r6, #4]                                  
      disktab [major].minor [minor] = NULL;                           
    2994:	e7933181 	ldr	r3, [r3, r1, lsl #3]                          
      free_disk_device(physical_disk);                                
    2998:	e1a00006 	mov	r0, r6                                        
    }                                                                 
                                                                      
    physical_disk->uses -= deleted_count;                             
    if (physical_disk->uses == 0) {                                   
      rtems_filesystem_split_dev_t(physical_disk->dev, major, minor); 
      disktab [major].minor [minor] = NULL;                           
    299c:	e7839102 	str	r9, [r3, r2, lsl #2]                          
      free_disk_device(physical_disk);                                
    29a0:	ebffff09 	bl	25cc <free_disk_device>                        
  }                                                                   
                                                                      
  dd->deleted = true;                                                 
  rtems_disk_cleanup(dd);                                             
                                                                      
  disk_unlock();                                                      
    29a4:	ebffff28 	bl	264c <disk_unlock>                             
    29a8:	eaffff99 	b	2814 <rtems_disk_delete+0x1c>                   
                                                                      

00002d1c <rtems_disk_io_initialize>: } } rtems_status_code rtems_disk_io_initialize(void) {
    2d1c:	e92d4030 	push	{r4, r5, lr}                                 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number size = DISKTAB_INITIAL_SIZE;              
                                                                      
  if (disktab_size > 0) {                                             
    2d20:	e59f4098 	ldr	r4, [pc, #152]	; 2dc0 <rtems_disk_io_initialize+0xa4>
    2d24:	e5945000 	ldr	r5, [r4]                                      
    2d28:	e3550000 	cmp	r5, #0                                        
  }                                                                   
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_disk_io_initialize(void)                                        
{                                                                     
    2d2c:	e24dd004 	sub	sp, sp, #4                                    
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number size = DISKTAB_INITIAL_SIZE;              
                                                                      
  if (disktab_size > 0) {                                             
    return RTEMS_SUCCESSFUL;                                          
    2d30:	13a00000 	movne	r0, #0                                      
rtems_disk_io_initialize(void)                                        
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_device_major_number size = DISKTAB_INITIAL_SIZE;              
                                                                      
  if (disktab_size > 0) {                                             
    2d34:	0a000001 	beq	2d40 <rtems_disk_io_initialize+0x24>          
  }                                                                   
                                                                      
  disktab_size = size;                                                
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    2d38:	e28dd004 	add	sp, sp, #4                                    
    2d3c:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      
  if (disktab_size > 0) {                                             
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
    2d40:	e3a00008 	mov	r0, #8                                        
    2d44:	e1a01000 	mov	r1, r0                                        
    2d48:	eb0001fb 	bl	353c <calloc>                                  
  if (disktab == NULL) {                                              
    2d4c:	e3500000 	cmp	r0, #0                                        
                                                                      
  if (disktab_size > 0) {                                             
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
    2d50:	e5840004 	str	r0, [r4, #4]                                  
  if (disktab == NULL) {                                              
    return RTEMS_NO_MEMORY;                                           
    2d54:	03a0001a 	moveq	r0, #26                                     
  if (disktab_size > 0) {                                             
    return RTEMS_SUCCESSFUL;                                          
  }                                                                   
                                                                      
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
  if (disktab == NULL) {                                              
    2d58:	0afffff6 	beq	2d38 <rtems_disk_io_initialize+0x1c>          
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  diskdevs_protected = false;                                         
  sc = rtems_semaphore_create(                                        
    2d5c:	e284c008 	add	ip, r4, #8                                    
    2d60:	e59f005c 	ldr	r0, [pc, #92]	; 2dc4 <rtems_disk_io_initialize+0xa8>
    2d64:	e3a01001 	mov	r1, #1                                        
    2d68:	e3a02010 	mov	r2, #16                                       
    2d6c:	e1a03005 	mov	r3, r5                                        
  disktab = calloc(size, sizeof(rtems_disk_device_table));            
  if (disktab == NULL) {                                              
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  diskdevs_protected = false;                                         
    2d70:	e5c4500c 	strb	r5, [r4, #12]                                
  sc = rtems_semaphore_create(                                        
    2d74:	e58dc000 	str	ip, [sp]                                      
    2d78:	eb0012bf 	bl	787c <rtems_semaphore_create>                  
    RTEMS_FIFO | RTEMS_BINARY_SEMAPHORE | RTEMS_NO_INHERIT_PRIORITY   
      | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL,                      
    0,                                                                
    &diskdevs_mutex                                                   
  );                                                                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2d7c:	e3500000 	cmp	r0, #0                                        
    2d80:	0a000003 	beq	2d94 <rtems_disk_io_initialize+0x78>          
    free(disktab);                                                    
    2d84:	e5940004 	ldr	r0, [r4, #4]                                  <== NOT EXECUTED
    2d88:	eb0002a6 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
    return RTEMS_NO_MEMORY;                                           
    2d8c:	e3a0001a 	mov	r0, #26                                       <== NOT EXECUTED
    2d90:	eaffffe8 	b	2d38 <rtems_disk_io_initialize+0x1c>            <== NOT EXECUTED
  }                                                                   
                                                                      
  sc = rtems_bdbuf_init();                                            
    2d94:	eb002931 	bl	d260 <rtems_bdbuf_init>                        
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2d98:	e3500000 	cmp	r0, #0                                        
    free(disktab);                                                    
                                                                      
    return RTEMS_UNSATISFIED;                                         
  }                                                                   
                                                                      
  disktab_size = size;                                                
    2d9c:	03a03008 	moveq	r3, #8                                      
    2da0:	05843000 	streq	r3, [r4]                                    
                                                                      
    return RTEMS_NO_MEMORY;                                           
  }                                                                   
                                                                      
  sc = rtems_bdbuf_init();                                            
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2da4:	0affffe3 	beq	2d38 <rtems_disk_io_initialize+0x1c>          
    rtems_semaphore_delete(diskdevs_mutex);                           
    2da8:	e5940008 	ldr	r0, [r4, #8]                                  <== NOT EXECUTED
    2dac:	eb001322 	bl	7a3c <rtems_semaphore_delete>                  <== NOT EXECUTED
    free(disktab);                                                    
    2db0:	e5940004 	ldr	r0, [r4, #4]                                  <== NOT EXECUTED
    2db4:	eb00029b 	bl	3828 <free>                                    <== NOT EXECUTED
                                                                      
    return RTEMS_UNSATISFIED;                                         
    2db8:	e3a0000d 	mov	r0, #13                                       <== NOT EXECUTED
    2dbc:	eaffffdd 	b	2d38 <rtems_disk_io_initialize+0x1c>            <== NOT EXECUTED
                                                                      

00002c24 <rtems_disk_next>: rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_disk_device_table *dtab = NULL; rtems_device_major_number major = 0; rtems_device_minor_number minor = 0; if (dev != (dev_t) -1) {
    2c24:	e3e02000 	mvn	r2, #0                                        
    2c28:	e3e03000 	mvn	r3, #0                                        
    2c2c:	e1510003 	cmp	r1, r3                                        
    2c30:	01500002 	cmpeq	r0, r2                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_disk_device *                                                   
rtems_disk_next(dev_t dev)                                            
{                                                                     
    2c34:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
                                                                      
  if (dev != (dev_t) -1) {                                            
    2c38:	0a00002e 	beq	2cf8 <rtems_disk_next+0xd4>                   
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
    /* If minor wraps around */                                       
    if ((minor + 1) < minor) {                                        
    2c3c:	e2914001 	adds	r4, r1, #1                                   
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
  return temp.__overlay.major;                                        
    2c40:	e1a05000 	mov	r5, r0                                        
    2c44:	2a00001c 	bcs	2cbc <rtems_disk_next+0x98>                   
    } else {                                                          
      ++minor;                                                        
    }                                                                 
  }                                                                   
                                                                      
  sc = disk_lock();                                                   
    2c48:	ebfffe73 	bl	261c <disk_lock>                               
  if (sc != RTEMS_SUCCESSFUL) {                                       
    2c4c:	e2506000 	subs	r6, r0, #0                                   
    2c50:	1a00002b 	bne	2d04 <rtems_disk_next+0xe0>                   
    return NULL;                                                      
  }                                                                   
                                                                      
  if (major >= disktab_size) {                                        
    2c54:	e59f30bc 	ldr	r3, [pc, #188]	; 2d18 <rtems_disk_next+0xf4>  
    2c58:	e5930000 	ldr	r0, [r3]                                      
    2c5c:	e1550000 	cmp	r5, r0                                        
    2c60:	2a000029 	bcs	2d0c <rtems_disk_next+0xe8>                   
    disk_unlock();                                                    
                                                                      
    return NULL;                                                      
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
    2c64:	e5931004 	ldr	r1, [r3, #4]                                  
    2c68:	e7913185 	ldr	r3, [r1, r5, lsl #3]                          
    2c6c:	e0816185 	add	r6, r1, r5, lsl #3                            
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
    2c70:	e3530000 	cmp	r3, #0                                        
    2c74:	0a000009 	beq	2ca0 <rtems_disk_next+0x7c>                   
    2c78:	e5962004 	ldr	r2, [r6, #4]                                  
    2c7c:	e1540002 	cmp	r4, r2                                        
    2c80:	2a000006 	bcs	2ca0 <rtems_disk_next+0x7c>                   
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
    } else if (dtab->minor [minor] == NULL) {                         
    2c84:	e7932104 	ldr	r2, [r3, r4, lsl #2]                          
    2c88:	e3520000 	cmp	r2, #0                                        
    2c8c:	e1a07104 	lsl	r7, r4, #2                                    
    2c90:	1a000011 	bne	2cdc <rtems_disk_next+0xb8>                   
    return NULL;                                                      
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
    2c94:	e3530000 	cmp	r3, #0                                        
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
    } else if (dtab->minor [minor] == NULL) {                         
      ++minor;                                                        
    2c98:	e2844001 	add	r4, r4, #1                                    
    return NULL;                                                      
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
    2c9c:	1afffff5 	bne	2c78 <rtems_disk_next+0x54>                   
       minor = 0;                                                     
       ++major;                                                       
    2ca0:	e2855001 	add	r5, r5, #1                                    
       if (major >= disktab_size) {                                   
    2ca4:	e1500005 	cmp	r0, r5                                        
    2ca8:	9a000008 	bls	2cd0 <rtems_disk_next+0xac>                   
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
    2cac:	e0816185 	add	r6, r1, r5, lsl #3                            
    2cb0:	e7913185 	ldr	r3, [r1, r5, lsl #3]                          
  }                                                                   
                                                                      
  dtab = disktab + major;                                             
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
       minor = 0;                                                     
    2cb4:	e3a04000 	mov	r4, #0                                        
       if (major >= disktab_size) {                                   
         disk_unlock();                                               
                                                                      
         return NULL;                                                 
       }                                                              
       dtab = disktab + major;                                        
    2cb8:	eaffffec 	b	2c70 <rtems_disk_next+0x4c>                     
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
    /* If minor wraps around */                                       
    if ((minor + 1) < minor) {                                        
      /* If major wraps around */                                     
      if ((major + 1) < major) {                                      
    2cbc:	e2905001 	adds	r5, r0, #1                                   <== NOT EXECUTED
        return NULL;                                                  
      }                                                               
      ++major;                                                        
      minor = 0;                                                      
    2cc0:	33a04000 	movcc	r4, #0                                      <== NOT EXECUTED
    rtems_filesystem_split_dev_t(dev, major, minor);                  
                                                                      
    /* If minor wraps around */                                       
    if ((minor + 1) < minor) {                                        
      /* If major wraps around */                                     
      if ((major + 1) < major) {                                      
    2cc4:	3affffdf 	bcc	2c48 <rtems_disk_next+0x24>                   <== NOT EXECUTED
        return NULL;                                                  
    2cc8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    2ccc:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
  while (true) {                                                      
    if (dtab->minor == NULL || minor >= dtab->size) {                 
       minor = 0;                                                     
       ++major;                                                       
       if (major >= disktab_size) {                                   
         disk_unlock();                                               
    2cd0:	ebfffe5d 	bl	264c <disk_unlock>                             
                                                                      
         return NULL;                                                 
    2cd4:	e3a00000 	mov	r0, #0                                        
    2cd8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
       }                                                              
       dtab = disktab + major;                                        
    } else if (dtab->minor [minor] == NULL) {                         
      ++minor;                                                        
    } else {                                                          
      ++dtab->minor [minor]->uses;                                    
    2cdc:	e5923014 	ldr	r3, [r2, #20]                                 
    2ce0:	e2833001 	add	r3, r3, #1                                    
    2ce4:	e5823014 	str	r3, [r2, #20]                                 
      disk_unlock();                                                  
    2ce8:	ebfffe57 	bl	264c <disk_unlock>                             
                                                                      
      return dtab->minor [minor];                                     
    2cec:	e5963000 	ldr	r3, [r6]                                      
    2cf0:	e7930007 	ldr	r0, [r3, r7]                                  
    2cf4:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
rtems_disk_next(dev_t dev)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
  rtems_device_minor_number minor = 0;                                
    2cf8:	e3a04000 	mov	r4, #0                                        
rtems_disk_device *                                                   
rtems_disk_next(dev_t dev)                                            
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device_table *dtab = NULL;                               
  rtems_device_major_number major = 0;                                
    2cfc:	e1a05004 	mov	r5, r4                                        
    2d00:	eaffffd0 	b	2c48 <rtems_disk_next+0x24>                     
    }                                                                 
  }                                                                   
                                                                      
  sc = disk_lock();                                                   
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return NULL;                                                      
    2d04:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
      disk_unlock();                                                  
                                                                      
      return dtab->minor [minor];                                     
    }                                                                 
  }                                                                   
}                                                                     
    2d08:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return NULL;                                                      
  }                                                                   
                                                                      
  if (major >= disktab_size) {                                        
    disk_unlock();                                                    
    2d0c:	ebfffe4e 	bl	264c <disk_unlock>                             <== NOT EXECUTED
                                                                      
    return NULL;                                                      
    2d10:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    2d14:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

00002b60 <rtems_disk_obtain>: return RTEMS_SUCCESSFUL; } rtems_disk_device * rtems_disk_obtain(dev_t dev) {
    2b60:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
    2b64:	e1a06000 	mov	r6, r0                                        
    2b68:	e1a07001 	mov	r7, r1                                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    2b6c:	e10f4000 	mrs	r4, CPSR                                      
    2b70:	e3843080 	orr	r3, r4, #128	; 0x80                           
    2b74:	e129f003 	msr	CPSR_fc, r3                                   
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *dd = NULL;                                       
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable(level);                                     
  if (!diskdevs_protected) {                                          
    2b78:	e59f304c 	ldr	r3, [pc, #76]	; 2bcc <rtems_disk_obtain+0x6c> 
    2b7c:	e5d3200c 	ldrb	r2, [r3, #12]                                
    2b80:	e21220ff 	ands	r2, r2, #255	; 0xff                          
    2b84:	0a00000b 	beq	2bb8 <rtems_disk_obtain+0x58>                 
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    2b88:	e129f004 	msr	CPSR_fc, r4                                   <== NOT EXECUTED
    dd = get_disk_entry(dev, false);                                  
    rtems_interrupt_enable(level);                                    
  } else {                                                            
    rtems_interrupt_enable(level);                                    
                                                                      
    sc = disk_lock();                                                 
    2b8c:	ebfffea2 	bl	261c <disk_lock>                               <== NOT EXECUTED
    if (sc == RTEMS_SUCCESSFUL) {                                     
    2b90:	e2502000 	subs	r2, r0, #0                                   <== NOT EXECUTED
                                                                      
rtems_disk_device *                                                   
rtems_disk_obtain(dev_t dev)                                          
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_disk_device *dd = NULL;                                       
    2b94:	13a05000 	movne	r5, #0                                      <== NOT EXECUTED
    rtems_interrupt_enable(level);                                    
  } else {                                                            
    rtems_interrupt_enable(level);                                    
                                                                      
    sc = disk_lock();                                                 
    if (sc == RTEMS_SUCCESSFUL) {                                     
    2b98:	1a000004 	bne	2bb0 <rtems_disk_obtain+0x50>                 <== NOT EXECUTED
      dd = get_disk_entry(dev, false);                                
    2b9c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    2ba0:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    2ba4:	ebfffe66 	bl	2544 <get_disk_entry>                          <== NOT EXECUTED
    2ba8:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
      disk_unlock();                                                  
    2bac:	ebfffea6 	bl	264c <disk_unlock>                             <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  return dd;                                                          
}                                                                     
    2bb0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    2bb4:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable(level);                                     
  if (!diskdevs_protected) {                                          
    /* Frequent and quickest case */                                  
    dd = get_disk_entry(dev, false);                                  
    2bb8:	ebfffe61 	bl	2544 <get_disk_entry>                          
    2bbc:	e1a05000 	mov	r5, r0                                        
    2bc0:	e129f004 	msr	CPSR_fc, r4                                   
      disk_unlock();                                                  
    }                                                                 
  }                                                                   
                                                                      
  return dd;                                                          
}                                                                     
    2bc4:	e1a00005 	mov	r0, r5                                        
    2bc8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      

0000f940 <rtems_event_system_receive>: rtems_event_set event_in, rtems_option option_set, rtems_interval ticks, rtems_event_set *event_out ) {
    f940:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
    f944:	e2535000 	subs	r5, r3, #0                                   
  rtems_event_set  event_in,                                          
  rtems_option     option_set,                                        
  rtems_interval   ticks,                                             
  rtems_event_set *event_out                                          
)                                                                     
{                                                                     
    f948:	e1a0c000 	mov	ip, r0                                        
    f94c:	e24dd010 	sub	sp, sp, #16                                   
    } else {                                                          
      *event_out = event->pending_events;                             
      sc = RTEMS_SUCCESSFUL;                                          
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
    f950:	03a00009 	moveq	r0, #9                                      
  rtems_event_set *event_out                                          
)                                                                     
{                                                                     
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
    f954:	0a000007 	beq	f978 <rtems_event_system_receive+0x38>        
    Thread_Control    *executing = _Thread_Executing;                 
    f958:	e59f4058 	ldr	r4, [pc, #88]	; f9b8 <rtems_event_system_receive+0x78>
    f95c:	e5944008 	ldr	r4, [r4, #8]                                  
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
    f960:	e35c0000 	cmp	ip, #0                                        
{                                                                     
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
    Thread_Control    *executing = _Thread_Executing;                 
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    f964:	e59460ec 	ldr	r6, [r4, #236]	; 0xec                         
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
    f968:	1a000004 	bne	f980 <rtems_event_system_receive+0x40>        
      );                                                              
      _Thread_Enable_dispatch();                                      
                                                                      
      sc = executing->Wait.return_code;                               
    } else {                                                          
      *event_out = event->pending_events;                             
    f96c:	e5963004 	ldr	r3, [r6, #4]                                  <== NOT EXECUTED
    f970:	e5853000 	str	r3, [r5]                                      <== NOT EXECUTED
      sc = RTEMS_SUCCESSFUL;                                          
    f974:	e1a0000c 	mov	r0, ip                                        <== NOT EXECUTED
  } else {                                                            
    sc = RTEMS_INVALID_ADDRESS;                                       
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
    f978:	e28dd010 	add	sp, sp, #16                                   
    f97c:	e8bd8070 	pop	{r4, r5, r6, pc}                              
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
    f980:	e59fc034 	ldr	ip, [pc, #52]	; f9bc <rtems_event_system_receive+0x7c>
    f984:	e59ce000 	ldr	lr, [ip]                                      
                                                                      
    ++level;                                                          
    f988:	e28ee001 	add	lr, lr, #1                                    
    _Thread_Dispatch_disable_level = level;                           
    f98c:	e58ce000 	str	lr, [ip]                                      
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    Event_Control     *event = &api->System_event;                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
      _Thread_Disable_dispatch();                                     
      _Event_Seize(                                                   
    f990:	e59fc028 	ldr	ip, [pc, #40]	; f9c0 <rtems_event_system_receive+0x80>
  rtems_status_code sc;                                               
                                                                      
  if ( event_out != NULL ) {                                          
    Thread_Control    *executing = _Thread_Executing;                 
    RTEMS_API_Control *api = executing->API_Extensions[ THREAD_API_RTEMS ];
    Event_Control     *event = &api->System_event;                    
    f994:	e2866004 	add	r6, r6, #4                                    
                                                                      
    if ( !_Event_sets_Is_empty( event_in ) ) {                        
      _Thread_Disable_dispatch();                                     
      _Event_Seize(                                                   
    f998:	e58dc008 	str	ip, [sp, #8]                                  
    f99c:	e3a0c701 	mov	ip, #262144	; 0x40000                         
    f9a0:	e58dc00c 	str	ip, [sp, #12]                                 
    f9a4:	e88d0050 	stm	sp, {r4, r6}                                  
    f9a8:	ebffdeef 	bl	756c <_Event_Seize>                            
        executing,                                                    
        event,                                                        
        &_System_event_Sync_state,                                    
        STATES_WAITING_FOR_SYSTEM_EVENT                               
      );                                                              
      _Thread_Enable_dispatch();                                      
    f9ac:	ebffea0c 	bl	a1e4 <_Thread_Enable_dispatch>                 
                                                                      
      sc = executing->Wait.return_code;                               
    f9b0:	e5940034 	ldr	r0, [r4, #52]	; 0x34                          
    f9b4:	eaffffef 	b	f978 <rtems_event_system_receive+0x38>          
                                                                      

00000698 <rtems_fdisk_abort>: * @param format The format string. See printf for details. * @param ... The arguments for the format text. */ static void rtems_fdisk_abort (const char *format, ...) {
     698:	e92d000f 	push	{r0, r1, r2, r3}                             <== NOT EXECUTED
     69c:	e92d4010 	push	{r4, lr}                                     <== NOT EXECUTED
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:abort:");                                   
     6a0:	e59f4058 	ldr	r4, [pc, #88]	; 700 <bsp_section_fast_text_load_begin+0x68><== NOT EXECUTED
     6a4:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
 * @param format The format string. See printf for details.           
 * @param ... The arguments for the format text.                      
 */                                                                   
static void                                                           
rtems_fdisk_abort (const char *format, ...)                           
{                                                                     
     6a8:	e24dd004 	sub	sp, sp, #4                                    <== NOT EXECUTED
  va_list args;                                                       
  va_start (args, format);                                            
     6ac:	e28dc010 	add	ip, sp, #16                                   <== NOT EXECUTED
  fprintf (stderr, "fdisk:abort:");                                   
     6b0:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
     6b4:	e593300c 	ldr	r3, [r3, #12]                                 <== NOT EXECUTED
     6b8:	e3a0200c 	mov	r2, #12                                       <== NOT EXECUTED
     6bc:	e59f0040 	ldr	r0, [pc, #64]	; 704 <bsp_section_fast_text_load_begin+0x6c><== NOT EXECUTED
 */                                                                   
static void                                                           
rtems_fdisk_abort (const char *format, ...)                           
{                                                                     
  va_list args;                                                       
  va_start (args, format);                                            
     6c0:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
  fprintf (stderr, "fdisk:abort:");                                   
     6c4:	eb007e38 	bl	1ffac <fwrite>                                 <== NOT EXECUTED
  vfprintf (stderr, format, args);                                    
     6c8:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
     6cc:	e59d2000 	ldr	r2, [sp]                                      <== NOT EXECUTED
     6d0:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
     6d4:	e593000c 	ldr	r0, [r3, #12]                                 <== NOT EXECUTED
     6d8:	eb009f56 	bl	28438 <vfprintf>                               <== NOT EXECUTED
  fprintf (stderr, "\n");                                             
     6dc:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
     6e0:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
     6e4:	e593100c 	ldr	r1, [r3, #12]                                 <== NOT EXECUTED
     6e8:	eb007db3 	bl	1fdbc <fputc>                                  <== NOT EXECUTED
  fflush (stderr);                                                    
     6ec:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
     6f0:	e593000c 	ldr	r0, [r3, #12]                                 <== NOT EXECUTED
     6f4:	eb007ca3 	bl	1f988 <fflush>                                 <== NOT EXECUTED
  va_end (args);                                                      
  exit (1);                                                           
     6f8:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
     6fc:	eb007ba8 	bl	1f5a4 <exit>                                   <== NOT EXECUTED
                                                                      

0000474c <rtems_fdisk_compact>: * used segments that will fit. The used queue is sorted on the least * number of active pages. */ static int rtems_fdisk_compact (rtems_flashdisk* fd) {
    474c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
static bool                                                           
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
    4750:	e5902028 	ldr	r2, [r0, #40]	; 0x28                          
    4754:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
    4758:	e1520003 	cmp	r2, r3                                        
 * used segments that will fit. The used queue is sorted on the least 
 * number of active pages.                                            
 */                                                                   
static int                                                            
rtems_fdisk_compact (rtems_flashdisk* fd)                             
{                                                                     
    475c:	e24dd014 	sub	sp, sp, #20                                   
    4760:	e1a04000 	mov	r4, r0                                        
static bool                                                           
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
    4764:	2a00001a 	bcs	47d4 <rtems_fdisk_compact+0x88>               
    fd->starvations++;                                                
    4768:	e5903070 	ldr	r3, [r0, #112]	; 0x70                         
    476c:	e2833001 	add	r3, r3, #1                                    
    4770:	e5803070 	str	r3, [r0, #112]	; 0x70                         
  uint32_t pages;                                                     
                                                                      
  if (rtems_fdisk_is_erased_blocks_starvation (fd))                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " resolve starvation");                   
    4774:	e59f1250 	ldr	r1, [pc, #592]	; 49cc <rtems_fdisk_compact+0x280>
    4778:	ebfffccf 	bl	3abc <rtems_fdisk_printf>                      
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    477c:	e5945040 	ldr	r5, [r4, #64]	; 0x40                          
    4780:	e3550000 	cmp	r5, #0                                        
    4784:	0a000073 	beq	4958 <rtems_fdisk_compact+0x20c>              
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    4788:	e5953000 	ldr	r3, [r5]                                      
    if (!queue->head)                                                 
    478c:	e3530000 	cmp	r3, #0                                        
{                                                                     
  if (queue->head)                                                    
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    4790:	e5843040 	str	r3, [r4, #64]	; 0x40                          
    if (!queue->head)                                                 
      queue->tail = 0;                                                
    4794:	05843044 	streq	r3, [r4, #68]	; 0x44                        
                                                                      
    queue->count--;                                                   
    4798:	e5943048 	ldr	r3, [r4, #72]	; 0x48                          
    479c:	e2433001 	sub	r3, r3, #1                                    
    47a0:	e5843048 	str	r3, [r4, #72]	; 0x48                          
                                                                      
    sc->next = 0;                                                     
    47a4:	e3a03000 	mov	r3, #0                                        
    47a8:	e5853000 	str	r3, [r5]                                      
    if (!ssc)                                                         
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->available);      
                                                                      
    if (ssc)                                                          
    {                                                                 
      dsc = rtems_fdisk_seg_most_available (&fd->available);          
    47ac:	e2840034 	add	r0, r4, #52	; 0x34                            
    47b0:	ebfffc84 	bl	39c8 <rtems_fdisk_seg_most_available>          
      if (dsc)                                                        
    47b4:	e2502000 	subs	r2, r0, #0                                   
    47b8:	0a000073 	beq	498c <rtems_fdisk_compact+0x240>              
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
    47bc:	e1a00004 	mov	r0, r4                                        
    47c0:	e1a01005 	mov	r1, r5                                        
    47c4:	e28d3010 	add	r3, sp, #16                                   
    47c8:	ebfffeda 	bl	4338 <rtems_fdisk_recycle_segment>             
        if (ret)                                                      
    47cc:	e3500000 	cmp	r0, #0                                        
    47d0:	1a000038 	bne	48b8 <rtems_fdisk_compact+0x16c>              
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " compacting");                           
#endif                                                                
                                                                      
    dsc = rtems_fdisk_seg_most_available (&fd->available);            
    47d4:	e284c034 	add	ip, r4, #52	; 0x34                            
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    47d8:	e5941040 	ldr	r1, [r4, #64]	; 0x40                          
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " compacting");                           
#endif                                                                
                                                                      
    dsc = rtems_fdisk_seg_most_available (&fd->available);            
    47dc:	e58dc008 	str	ip, [sp, #8]                                  
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
    47e0:	e3a0a000 	mov	sl, #0                                        
      rtems_fdisk_error ("compacting: nothing to recycle");           
      return EIO;                                                     
    }                                                                 
  }                                                                   
                                                                      
  while (fd->used.head)                                               
    47e4:	e3510000 	cmp	r1, #0                                        
    47e8:	0a000071 	beq	49b4 <rtems_fdisk_compact+0x268>              
  {                                                                   
    uint32_t                 dst_pages;                               
    uint32_t                 segments;                                
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " compacting");                           
    47ec:	e59f11dc 	ldr	r1, [pc, #476]	; 49d0 <rtems_fdisk_compact+0x284>
    47f0:	e1a00004 	mov	r0, r4                                        
    47f4:	ebfffcb0 	bl	3abc <rtems_fdisk_printf>                      
#endif                                                                
                                                                      
    dsc = rtems_fdisk_seg_most_available (&fd->available);            
    47f8:	e59d0008 	ldr	r0, [sp, #8]                                  
    47fc:	ebfffc71 	bl	39c8 <rtems_fdisk_seg_most_available>          
                                                                      
    if (dsc == 0)                                                     
    4800:	e2508000 	subs	r8, r0, #0                                   
    4804:	0a000066 	beq	49a4 <rtems_fdisk_compact+0x258>              
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    4808:	e288601c 	add	r6, r8, #28                                   
    {                                                                 
      rtems_fdisk_error ("compacting: no available segments to compact too");
      return EIO;                                                     
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
    480c:	e5945040 	ldr	r5, [r4, #64]	; 0x40                          
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    4810:	e89610c0 	ldm	r6, {r6, r7, ip}                              
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
    4814:	e2882008 	add	r2, r8, #8                                    
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
    4818:	e3a09000 	mov	r9, #0                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
    481c:	e1a00004 	mov	r0, r4                                        
    4820:	e59f11ac 	ldr	r1, [pc, #428]	; 49d4 <rtems_fdisk_compact+0x288>
    4824:	e892000c 	ldm	r2, {r2, r3}                                  
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    4828:	e598b014 	ldr	fp, [r8, #20]                                 
    482c:	e58dc00c 	str	ip, [sp, #12]                                 
    }                                                                 
                                                                      
    ssc = fd->used.head;                                              
    dst_pages = rtems_fdisk_seg_pages_available (dsc);                
    segments = 0;                                                     
    pages = 0;                                                        
    4830:	e58d9010 	str	r9, [sp, #16]                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " dsc:%02d-%03d: most available",         
    4834:	ebfffca0 	bl	3abc <rtems_fdisk_printf>                      
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
    4838:	e1550009 	cmp	r5, r9                                        
    483c:	0a000019 	beq	48a8 <rtems_fdisk_compact+0x15c>              
 * with the most available number of pages and see if we have         
 * used segments that will fit. The used queue is sorted on the least 
 * number of active pages.                                            
 */                                                                   
static int                                                            
rtems_fdisk_compact (rtems_flashdisk* fd)                             
    4840:	e0876006 	add	r6, r7, r6                                    
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
    4844:	e59d3010 	ldr	r3, [sp, #16]                                 
    4848:	e595c01c 	ldr	ip, [r5, #28]                                 
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    484c:	e59d200c 	ldr	r2, [sp, #12]                                 
    4850:	e066b00b 	rsb	fp, r6, fp                                    
    4854:	e062b00b 	rsb	fp, r2, fp                                    
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
    4858:	e083c00c 	add	ip, r3, ip                                    
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
    485c:	e15c000b 	cmp	ip, fp                                        
    4860:	2a00004d 	bcs	499c <rtems_fdisk_compact+0x250>              
           ((pages + ssc->pages_active) < dst_pages) &&               
           ((compacted_segs + segments) < fd->compact_segs))          
    4864:	e594100c 	ldr	r1, [r4, #12]                                 
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
    4868:	e15a0001 	cmp	sl, r1                                        
    486c:	3a000009 	bcc	4898 <rtems_fdisk_compact+0x14c>              
    4870:	ea000049 	b	499c <rtems_fdisk_compact+0x250>                <== NOT EXECUTED
    4874:	e595301c 	ldr	r3, [r5, #28]                                 
    4878:	e08c3003 	add	r3, ip, r3                                    
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
      segments++;                                                     
    487c:	e2899001 	add	r9, r9, #1                                    
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
    4880:	e153000b 	cmp	r3, fp                                        
           ((pages + ssc->pages_active) < dst_pages) &&               
    4884:	e089200a 	add	r2, r9, sl                                    
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
    4888:	2a00000c 	bcs	48c0 <rtems_fdisk_compact+0x174>              
           ((pages + ssc->pages_active) < dst_pages) &&               
    488c:	e1520001 	cmp	r2, r1                                        
    4890:	2a00000a 	bcs	48c0 <rtems_fdisk_compact+0x174>              
    4894:	e1a0c003 	mov	ip, r3                                        
           ((compacted_segs + segments) < fd->compact_segs))          
    {                                                                 
      pages += ssc->pages_active;                                     
      segments++;                                                     
      ssc = ssc->next;                                                
    4898:	e5955000 	ldr	r5, [r5]                                      
     * we handle during one compaction. A lower number means less aggressive
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
    489c:	e3550000 	cmp	r5, #0                                        
    48a0:	1afffff3 	bne	4874 <rtems_fdisk_compact+0x128>              
    48a4:	e58dc010 	str	ip, [sp, #16]                                 
     */                                                               
                                                                      
    if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))   
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_printf (fd, " nothing to compact");                 
    48a8:	e1a00004 	mov	r0, r4                                        
    48ac:	e59f1124 	ldr	r1, [pc, #292]	; 49d8 <rtems_fdisk_compact+0x28c>
    48b0:	ebfffc81 	bl	3abc <rtems_fdisk_printf>                      
    }                                                                 
                                                                      
    compacted_segs += segments;                                       
  }                                                                   
                                                                      
  return 0;                                                           
    48b4:	e3a00000 	mov	r0, #0                                        
}                                                                     
    48b8:	e28dd014 	add	sp, sp, #20                                   
    48bc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
    48c0:	e58dc010 	str	ip, [sp, #16]                                 
     * We need a source segment and have pages to copy and            
     * compacting one segment to another is silly. Compaction needs   
     * to free at least one more segment.                             
     */                                                               
                                                                      
    if (!ssc || (pages == 0) || ((compacted_segs + segments) == 1))   
    48c4:	e35c0000 	cmp	ip, #0                                        
    48c8:	0afffff6 	beq	48a8 <rtems_fdisk_compact+0x15c>              
    48cc:	e08aa009 	add	sl, sl, r9                                    
    48d0:	e35a0001 	cmp	sl, #1                                        
    48d4:	0afffff3 	beq	48a8 <rtems_fdisk_compact+0x15c>              
#endif                                                                
      break;                                                          
    }                                                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_printf (fd, " ssc scan: %d-%d: p=%ld, seg=%ld",       
    48d8:	e2852008 	add	r2, r5, #8                                    
    48dc:	e892000c 	ldm	r2, {r2, r3}                                  
    48e0:	e59f10f4 	ldr	r1, [pc, #244]	; 49dc <rtems_fdisk_compact+0x290>
    48e4:	e1a00004 	mov	r0, r4                                        
    48e8:	e58dc000 	str	ip, [sp]                                      
    48ec:	e58d9004 	str	r9, [sp, #4]                                  
    48f0:	ebfffc71 	bl	3abc <rtems_fdisk_printf>                      
                        ssc->device, ssc->segment,                    
                        pages, segments);                             
#endif                                                                
                                                                      
    rtems_fdisk_segment_queue_remove (&fd->available, dsc);           
    48f4:	e59d0008 	ldr	r0, [sp, #8]                                  
    48f8:	e1a01008 	mov	r1, r8                                        
    48fc:	ebfffbd4 	bl	3854 <rtems_fdisk_segment_queue_remove>        
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
                                                                      
    sc->next = 0;                                                     
    4900:	e3a05000 	mov	r5, #0                                        
                                                                      
    /*                                                                
     * We now copy the pages to the new segment.                      
     */                                                               
                                                                      
    while (pages)                                                     
    4904:	e59d3010 	ldr	r3, [sp, #16]                                 
    4908:	e3530000 	cmp	r3, #0                                        
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
        if (ret)                                                      
    490c:	e5941040 	ldr	r1, [r4, #64]	; 0x40                          
                                                                      
    /*                                                                
     * We now copy the pages to the new segment.                      
     */                                                               
                                                                      
    while (pages)                                                     
    4910:	0affffb3 	beq	47e4 <rtems_fdisk_compact+0x98>               
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4914:	e3510000 	cmp	r1, #0                                        
    4918:	0afffffd 	beq	4914 <rtems_fdisk_compact+0x1c8>              
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    491c:	e5913000 	ldr	r3, [r1]                                      
    if (!queue->head)                                                 
    4920:	e3530000 	cmp	r3, #0                                        
      queue->tail = 0;                                                
    4924:	05843044 	streq	r3, [r4, #68]	; 0x44                        
{                                                                     
  if (queue->head)                                                    
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    4928:	e5843040 	str	r3, [r4, #64]	; 0x40                          
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
    492c:	e5943048 	ldr	r3, [r4, #72]	; 0x48                          
    4930:	e2433001 	sub	r3, r3, #1                                    
    4934:	e5843048 	str	r3, [r4, #72]	; 0x48                          
    {                                                                 
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
    4938:	e1a00004 	mov	r0, r4                                        
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
                                                                      
    sc->next = 0;                                                     
    493c:	e5815000 	str	r5, [r1]                                      
    {                                                                 
      ssc = rtems_fdisk_segment_queue_pop_head (&fd->used);           
                                                                      
      if (ssc)                                                        
      {                                                               
        ret = rtems_fdisk_recycle_segment (fd, ssc, dsc, &pages);     
    4940:	e1a02008 	mov	r2, r8                                        
    4944:	e28d3010 	add	r3, sp, #16                                   
    4948:	ebfffe7a 	bl	4338 <rtems_fdisk_recycle_segment>             
        if (ret)                                                      
    494c:	e3500000 	cmp	r0, #0                                        
    4950:	0affffeb 	beq	4904 <rtems_fdisk_compact+0x1b8>              
    4954:	eaffffd7 	b	48b8 <rtems_fdisk_compact+0x16c>                <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4958:	e5945034 	ldr	r5, [r4, #52]	; 0x34                          <== NOT EXECUTED
    495c:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
    4960:	0a000015 	beq	49bc <rtems_fdisk_compact+0x270>              <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    4964:	e5953000 	ldr	r3, [r5]                                      <== NOT EXECUTED
    if (!queue->head)                                                 
    4968:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
{                                                                     
  if (queue->head)                                                    
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    496c:	e5843034 	str	r3, [r4, #52]	; 0x34                          <== NOT EXECUTED
    if (!queue->head)                                                 
      queue->tail = 0;                                                
    4970:	05843038 	streq	r3, [r4, #56]	; 0x38                        <== NOT EXECUTED
                                                                      
    queue->count--;                                                   
    4974:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          <== NOT EXECUTED
    4978:	e2433001 	sub	r3, r3, #1                                    <== NOT EXECUTED
    497c:	e584303c 	str	r3, [r4, #60]	; 0x3c                          <== NOT EXECUTED
                                                                      
    sc->next = 0;                                                     
    4980:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    4984:	e5853000 	str	r3, [r5]                                      <== NOT EXECUTED
    4988:	eaffff87 	b	47ac <rtems_fdisk_compact+0x60>                 <== NOT EXECUTED
        if (ret)                                                      
          return ret;                                                 
      }                                                               
      else                                                            
      {                                                               
        rtems_fdisk_error ("compacting: starvation");                 
    498c:	e59f004c 	ldr	r0, [pc, #76]	; 49e0 <rtems_fdisk_compact+0x294><== NOT EXECUTED
    4990:	ebfffd26 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
        return EIO;                                                   
    4994:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
    4998:	eaffffc6 	b	48b8 <rtems_fdisk_compact+0x16c>                <== NOT EXECUTED
     * compaction or less delay when compacting but it may mean the disk
     * will fill.                                                     
     */                                                               
                                                                      
    while (ssc &&                                                     
           ((pages + ssc->pages_active) < dst_pages) &&               
    499c:	e1a0c003 	mov	ip, r3                                        
    49a0:	eaffffc7 	b	48c4 <rtems_fdisk_compact+0x178>                
                                                                      
    dsc = rtems_fdisk_seg_most_available (&fd->available);            
                                                                      
    if (dsc == 0)                                                     
    {                                                                 
      rtems_fdisk_error ("compacting: no available segments to compact too");
    49a4:	e59f0038 	ldr	r0, [pc, #56]	; 49e4 <rtems_fdisk_compact+0x298><== NOT EXECUTED
    49a8:	ebfffd20 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      return EIO;                                                     
    49ac:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
    49b0:	eaffffc0 	b	48b8 <rtems_fdisk_compact+0x16c>                <== NOT EXECUTED
    }                                                                 
                                                                      
    compacted_segs += segments;                                       
  }                                                                   
                                                                      
  return 0;                                                           
    49b4:	e1a00001 	mov	r0, r1                                        
    49b8:	eaffffbe 	b	48b8 <rtems_fdisk_compact+0x16c>                
        return EIO;                                                   
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      rtems_fdisk_error ("compacting: nothing to recycle");           
    49bc:	e59f0024 	ldr	r0, [pc, #36]	; 49e8 <rtems_fdisk_compact+0x29c><== NOT EXECUTED
    49c0:	ebfffd1a 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      return EIO;                                                     
    49c4:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
    49c8:	eaffffba 	b	48b8 <rtems_fdisk_compact+0x16c>                <== NOT EXECUTED
                                                                      

00003eb0 <rtems_fdisk_erase_segment>: /** * Erase the segment. */ static int rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc) {
    3eb0:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    3eb4:	e1a04001 	mov	r4, r1                                        
  int                                ret;                             
  uint32_t                           device;                          
  uint32_t                           segment;                         
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
    3eb8:	e5911008 	ldr	r1, [r1, #8]                                  
/**                                                                   
 * Erase the segment.                                                 
 */                                                                   
static int                                                            
rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
    3ebc:	e1a05000 	mov	r5, r0                                        
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    3ec0:	e0813081 	add	r3, r1, r1, lsl #1                            
    3ec4:	e590002c 	ldr	r0, [r0, #44]	; 0x2c                          
    3ec8:	e1a03103 	lsl	r3, r3, #2                                    
  uint32_t                           device;                          
  uint32_t                           segment;                         
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
    3ecc:	e594200c 	ldr	r2, [r4, #12]                                 
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    3ed0:	e080c003 	add	ip, r0, r3                                    
    3ed4:	e7900003 	ldr	r0, [r0, r3]                                  
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
    3ed8:	e59c3008 	ldr	r3, [ip, #8]                                  
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    3edc:	e082c082 	add	ip, r2, r2, lsl #1                            
    3ee0:	e080020c 	add	r0, r0, ip, lsl #4                            
/**                                                                   
 * Erase the segment.                                                 
 */                                                                   
static int                                                            
rtems_fdisk_erase_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
    3ee4:	e24dd004 	sub	sp, sp, #4                                    
  const rtems_fdisk_driver_handlers* ops;                             
  device = sc->device;                                                
  segment = sc->segment;                                              
  sd = rtems_fdisk_seg_descriptor (fd, device, segment);              
  ops = fd->devices[device].descriptor->flash_ops;                    
  ret = ops->erase (sd, device, segment);                             
    3ee8:	e5933008 	ldr	r3, [r3, #8]                                  
    3eec:	e5900004 	ldr	r0, [r0, #4]                                  
    3ef0:	e1a0e00f 	mov	lr, pc                                        
    3ef4:	e593f010 	ldr	pc, [r3, #16]                                 
  if (ret)                                                            
    3ef8:	e2506000 	subs	r6, r0, #0                                   
    3efc:	0a000019 	beq	3f68 <rtems_fdisk_erase_segment+0xb8>         
  {                                                                   
    rtems_fdisk_error (" erase-segment:%02d-%03d: "      \            
    3f00:	e5948008 	ldr	r8, [r4, #8]                                  <== NOT EXECUTED
    3f04:	e594700c 	ldr	r7, [r4, #12]                                 <== NOT EXECUTED
    3f08:	eb007613 	bl	2175c <strerror>                               <== NOT EXECUTED
    3f0c:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
    3f10:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
    3f14:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
    3f18:	e59f00dc 	ldr	r0, [pc, #220]	; 3ffc <rtems_fdisk_erase_segment+0x14c><== NOT EXECUTED
    3f1c:	e58d6000 	str	r6, [sp]                                      <== NOT EXECUTED
    3f20:	ebffffc2 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
 */                                                                   
static bool                                                           
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
    3f24:	e5953058 	ldr	r3, [r5, #88]	; 0x58                          <== NOT EXECUTED
  if (ret)                                                            
  {                                                                   
    rtems_fdisk_error (" erase-segment:%02d-%03d: "      \            
                       "segment erase failed: %s (%d)",               
                       sc->device, sc->segment, strerror (ret), ret); 
    sc->failed = true;                                                
    3f28:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    3f2c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  if (ret)                                                            
  {                                                                   
    rtems_fdisk_error (" erase-segment:%02d-%03d: "      \            
                       "segment erase failed: %s (%d)",               
                       sc->device, sc->segment, strerror (ret), ret); 
    sc->failed = true;                                                
    3f30:	e5842028 	str	r2, [r4, #40]	; 0x28                          <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    3f34:	1a000006 	bne	3f54 <rtems_fdisk_erase_segment+0xa4>         <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    3f38:	e5843000 	str	r3, [r4]                                      <== NOT EXECUTED
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    3f3c:	e585405c 	str	r4, [r5, #92]	; 0x5c                          <== NOT EXECUTED
    3f40:	e5854058 	str	r4, [r5, #88]	; 0x58                          <== NOT EXECUTED
    3f44:	ea000028 	b	3fec <rtems_fdisk_erase_segment+0x13c>          <== NOT EXECUTED
                                                                      
  while (it)                                                          
  {                                                                   
    if (it == sc)                                                     
      return true;                                                    
    it = it->next;                                                    
    3f48:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    3f4c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    3f50:	0a000021 	beq	3fdc <rtems_fdisk_erase_segment+0x12c>        <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
    3f54:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    3f58:	1afffffa 	bne	3f48 <rtems_fdisk_erase_segment+0x98>         <== NOT EXECUTED
   * segment will now get a go.                                       
   */                                                                 
  rtems_fdisk_segment_queue_push_tail (&fd->available, sc);           
                                                                      
  return 0;                                                           
}                                                                     
    3f5c:	e1a00006 	mov	r0, r6                                        
    3f60:	e28dd004 	add	sp, sp, #4                                    
    3f64:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
    3f68:	e595c028 	ldr	ip, [r5, #40]	; 0x28                          
  sc->erased++;                                                       
    3f6c:	e594102c 	ldr	r1, [r4, #44]	; 0x2c                          
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
    3f70:	e5940014 	ldr	r0, [r4, #20]                                 
  sc->erased++;                                                       
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
    3f74:	e5953014 	ldr	r3, [r5, #20]                                 
    3f78:	e5942018 	ldr	r2, [r4, #24]                                 
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
    3f7c:	e08c0000 	add	r0, ip, r0                                    
  sc->erased++;                                                       
    3f80:	e2811001 	add	r1, r1, #1                                    
    if (!rtems_fdisk_segment_queue_present (&fd->failed, sc))         
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
    3f84:	e5850028 	str	r0, [r5, #40]	; 0x28                          
  sc->erased++;                                                       
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
    3f88:	e0020293 	mul	r2, r3, r2                                    
      rtems_fdisk_segment_queue_push_tail (&fd->failed, sc);          
    return ret;                                                       
  }                                                                   
                                                                      
  fd->erased_blocks += sc->pages;                                     
  sc->erased++;                                                       
    3f8c:	e584102c 	str	r1, [r4, #44]	; 0x2c                          
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
    3f90:	e5940010 	ldr	r0, [r4, #16]                                 
    3f94:	e3a010ff 	mov	r1, #255	; 0xff                               
    3f98:	eb0070d0 	bl	202e0 <memset>                                 
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    3f9c:	e5953034 	ldr	r3, [r5, #52]	; 0x34                          
    3fa0:	e3530000 	cmp	r3, #0                                        
    {                                                                 
      queue->tail->next = sc;                                         
    3fa4:	15953038 	ldrne	r3, [r5, #56]	; 0x38                        
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    3fa8:	e5846000 	str	r6, [r4]                                      
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    3fac:	15834000 	strne	r4, [r3]                                    
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    3fb0:	e595303c 	ldr	r3, [r5, #60]	; 0x3c                          
    3fb4:	e2833001 	add	r3, r3, #1                                    
  fd->erased_blocks += sc->pages;                                     
  sc->erased++;                                                       
                                                                      
  memset (sc->page_descriptors, 0xff, sc->pages_desc * fd->block_size);
                                                                      
  sc->pages_active = 0;                                               
    3fb8:	e584601c 	str	r6, [r4, #28]                                 
  sc->pages_used   = 0;                                               
    3fbc:	e5846020 	str	r6, [r4, #32]                                 
  sc->pages_bad    = 0;                                               
    3fc0:	e5846024 	str	r6, [r4, #36]	; 0x24                          
                                                                      
  sc->failed = false;                                                 
    3fc4:	e5846028 	str	r6, [r4, #40]	; 0x28                          
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    3fc8:	15854038 	strne	r4, [r5, #56]	; 0x38                        
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    3fcc:	05854038 	streq	r4, [r5, #56]	; 0x38                        
    3fd0:	05854034 	streq	r4, [r5, #52]	; 0x34                        
    }                                                                 
                                                                      
    queue->count++;                                                   
    3fd4:	e585303c 	str	r3, [r5, #60]	; 0x3c                          
    3fd8:	eaffffdf 	b	3f5c <rtems_fdisk_erase_segment+0xac>           
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    3fdc:	e595205c 	ldr	r2, [r5, #92]	; 0x5c                          <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    3fe0:	e5843000 	str	r3, [r4]                                      <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    3fe4:	e5824000 	str	r4, [r2]                                      <== NOT EXECUTED
      queue->tail       = sc;                                         
    3fe8:	e585405c 	str	r4, [r5, #92]	; 0x5c                          <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    3fec:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          <== NOT EXECUTED
    3ff0:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    3ff4:	e5853060 	str	r3, [r5, #96]	; 0x60                          <== NOT EXECUTED
    3ff8:	eaffffd7 	b	3f5c <rtems_fdisk_erase_segment+0xac>           <== NOT EXECUTED
                                                                      

00003e30 <rtems_fdisk_error>: * @param ... The arguments for the format text. * @return int The number of bytes written to the output. */ static int rtems_fdisk_error (const char *format, ...) {
    3e30:	e92d000f 	push	{r0, r1, r2, r3}                             <== NOT EXECUTED
    3e34:	e92d4030 	push	{r4, r5, lr}                                 <== NOT EXECUTED
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:error:");                                   
    3e38:	e59f4068 	ldr	r4, [pc, #104]	; 3ea8 <rtems_fdisk_error+0x78><== NOT EXECUTED
    3e3c:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_error (const char *format, ...)                           
{                                                                     
    3e40:	e24dd004 	sub	sp, sp, #4                                    <== NOT EXECUTED
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
    3e44:	e28dc014 	add	ip, sp, #20                                   <== NOT EXECUTED
  fprintf (stderr, "fdisk:error:");                                   
    3e48:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
    3e4c:	e593300c 	ldr	r3, [r3, #12]                                 <== NOT EXECUTED
    3e50:	e3a0200c 	mov	r2, #12                                       <== NOT EXECUTED
    3e54:	e59f0050 	ldr	r0, [pc, #80]	; 3eac <rtems_fdisk_error+0x7c> <== NOT EXECUTED
static int                                                            
rtems_fdisk_error (const char *format, ...)                           
{                                                                     
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
    3e58:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
  fprintf (stderr, "fdisk:error:");                                   
    3e5c:	eb007052 	bl	1ffac <fwrite>                                 <== NOT EXECUTED
  ret =  vfprintf (stderr, format, args);                             
    3e60:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    3e64:	e59d2000 	ldr	r2, [sp]                                      <== NOT EXECUTED
    3e68:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
    3e6c:	e593000c 	ldr	r0, [r3, #12]                                 <== NOT EXECUTED
    3e70:	eb009170 	bl	28438 <vfprintf>                               <== NOT EXECUTED
  fprintf (stderr, "\n");                                             
    3e74:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
{                                                                     
  int ret;                                                            
  va_list args;                                                       
  va_start (args, format);                                            
  fprintf (stderr, "fdisk:error:");                                   
  ret =  vfprintf (stderr, format, args);                             
    3e78:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
  fprintf (stderr, "\n");                                             
    3e7c:	e593100c 	ldr	r1, [r3, #12]                                 <== NOT EXECUTED
    3e80:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
    3e84:	eb006fcc 	bl	1fdbc <fputc>                                  <== NOT EXECUTED
  fflush (stderr);                                                    
    3e88:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    3e8c:	e593000c 	ldr	r0, [r3, #12]                                 <== NOT EXECUTED
    3e90:	eb006ebc 	bl	1f988 <fflush>                                 <== NOT EXECUTED
  va_end (args);                                                      
  return ret;                                                         
}                                                                     
    3e94:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    3e98:	e28dd004 	add	sp, sp, #4                                    <== NOT EXECUTED
    3e9c:	e8bd4030 	pop	{r4, r5, lr}                                  <== NOT EXECUTED
    3ea0:	e28dd010 	add	sp, sp, #16                                   <== NOT EXECUTED
    3ea4:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00003a2c <rtems_fdisk_info>: * @param ... The arguments for the format text. * @return int The number of bytes written to the output. */ static int rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...) {
    3a2c:	e92d000e 	push	{r1, r2, r3}                                 
    3a30:	e92d4030 	push	{r4, r5, lr}                                 
  int ret = 0;                                                        
  if (fd->info_level >= 2)                                            
    3a34:	e590306c 	ldr	r3, [r0, #108]	; 0x6c                         
    3a38:	e3530001 	cmp	r3, #1                                        
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_info (const rtems_flashdisk* fd, const char *format, ...) 
{                                                                     
    3a3c:	e24dd004 	sub	sp, sp, #4                                    
  int ret = 0;                                                        
    3a40:	93a05000 	movls	r5, #0                                      
  if (fd->info_level >= 2)                                            
    3a44:	9a000015 	bls	3aa0 <rtems_fdisk_info+0x74>                  
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:");                                       
    3a48:	e59f4064 	ldr	r4, [pc, #100]	; 3ab4 <rtems_fdisk_info+0x88> <== NOT EXECUTED
    3a4c:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
{                                                                     
  int ret = 0;                                                        
  if (fd->info_level >= 2)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    3a50:	e28dc014 	add	ip, sp, #20                                   <== NOT EXECUTED
    fprintf (stdout, "fdisk:");                                       
    3a54:	e5933008 	ldr	r3, [r3, #8]                                  <== NOT EXECUTED
    3a58:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
    3a5c:	e3a02006 	mov	r2, #6                                        <== NOT EXECUTED
    3a60:	e59f0050 	ldr	r0, [pc, #80]	; 3ab8 <rtems_fdisk_info+0x8c>  <== NOT EXECUTED
{                                                                     
  int ret = 0;                                                        
  if (fd->info_level >= 2)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    3a64:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    fprintf (stdout, "fdisk:");                                       
    3a68:	eb00714f 	bl	1ffac <fwrite>                                 <== NOT EXECUTED
    ret =  vfprintf (stdout, format, args);                           
    3a6c:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    3a70:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
    3a74:	e59d2000 	ldr	r2, [sp]                                      <== NOT EXECUTED
    3a78:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    3a7c:	eb00926d 	bl	28438 <vfprintf>                               <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
    3a80:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
  if (fd->info_level >= 2)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:");                                       
    ret =  vfprintf (stdout, format, args);                           
    3a84:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
    3a88:	e5931008 	ldr	r1, [r3, #8]                                  <== NOT EXECUTED
    3a8c:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
    3a90:	eb0070c9 	bl	1fdbc <fputc>                                  <== NOT EXECUTED
    fflush (stdout);                                                  
    3a94:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    3a98:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    3a9c:	eb006fb9 	bl	1f988 <fflush>                                 <== NOT EXECUTED
    va_end (args);                                                    
  }                                                                   
  return ret;                                                         
}                                                                     
    3aa0:	e1a00005 	mov	r0, r5                                        
    3aa4:	e28dd004 	add	sp, sp, #4                                    
    3aa8:	e8bd4030 	pop	{r4, r5, lr}                                  
    3aac:	e28dd00c 	add	sp, sp, #12                                   
    3ab0:	e12fff1e 	bx	lr                                             
                                                                      

000061f4 <rtems_fdisk_initialize>: */ rtems_device_driver rtems_fdisk_initialize (rtems_device_major_number major, rtems_device_minor_number minor, void* arg __attribute__((unused))) {
    61f4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    61f8:	e24dd038 	sub	sp, sp, #56	; 0x38                            
    61fc:	e58d0024 	str	r0, [sp, #36]	; 0x24                          
  const rtems_flashdisk_config* c = rtems_flashdisk_configuration;    
  rtems_flashdisk*              fd;                                   
  rtems_status_code             sc;                                   
                                                                      
  sc = rtems_disk_io_initialize ();                                   
    6200:	ebfff543 	bl	3714 <rtems_disk_io_initialize>                
  if (sc != RTEMS_SUCCESSFUL)                                         
    6204:	e2506000 	subs	r6, r0, #0                                   
    6208:	11a00006 	movne	r0, r6                                      
    620c:	0a000001 	beq	6218 <rtems_fdisk_initialize+0x24>            
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    6210:	e28dd038 	add	sp, sp, #56	; 0x38                            
    6214:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
static rtems_status_code                                              
rtems_fdisk_crc16_gen_factors (uint16_t pattern)                      
{                                                                     
  uint32_t b;                                                         
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
    6218:	e3a00c02 	mov	r0, #512	; 0x200                              
    621c:	eb000584 	bl	7834 <malloc>                                  
    6220:	e59f151c 	ldr	r1, [pc, #1308]	; 6744 <rtems_fdisk_initialize+0x550>
  if (!rtems_fdisk_crc16_factor)                                      
    6224:	e3500000 	cmp	r0, #0                                        
static rtems_status_code                                              
rtems_fdisk_crc16_gen_factors (uint16_t pattern)                      
{                                                                     
  uint32_t b;                                                         
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
    6228:	e5810008 	str	r0, [r1, #8]                                  
  if (!rtems_fdisk_crc16_factor)                                      
    622c:	0a0000ea 	beq	65dc <rtems_fdisk_initialize+0x3e8>           
  for (b = 0; b < 256; b++)                                           
  {                                                                   
    uint32_t i;                                                       
    uint16_t v = b;                                                   
    for (i = 8; i--;)                                                 
      v = v & 1 ? (v >> 1) ^ pattern : v >> 1;                        
    6230:	e59f2510 	ldr	r2, [pc, #1296]	; 6748 <rtems_fdisk_initialize+0x554>
 * @param major Flash disk major device number.                       
 * @param minor Minor device number, not applicable.                  
 * @param arg Initialization argument, not applicable.                
 */                                                                   
rtems_device_driver                                                   
rtems_fdisk_initialize (rtems_device_major_number major,              
    6234:	e2400002 	sub	r0, r0, #2                                    
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (b = 0; b < 256; b++)                                           
  {                                                                   
    uint32_t i;                                                       
    uint16_t v = b;                                                   
    6238:	e1a03806 	lsl	r3, r6, #16                                   
    623c:	e1a03823 	lsr	r3, r3, #16                                   
    6240:	e3a04008 	mov	r4, #8                                        
    for (i = 8; i--;)                                                 
      v = v & 1 ? (v >> 1) ^ pattern : v >> 1;                        
    6244:	e3130001 	tst	r3, #1                                        
    6248:	102230a3 	eorne	r3, r2, r3, lsr #1                          
    624c:	11a03803 	lslne	r3, r3, #16                                 
    6250:	11a03823 	lsrne	r3, r3, #16                                 
    6254:	01a030a3 	lsreq	r3, r3, #1                                  
                                                                      
  for (b = 0; b < 256; b++)                                           
  {                                                                   
    uint32_t i;                                                       
    uint16_t v = b;                                                   
    for (i = 8; i--;)                                                 
    6258:	e2544001 	subs	r4, r4, #1                                   
    625c:	1afffff8 	bne	6244 <rtems_fdisk_initialize+0x50>            
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
  if (!rtems_fdisk_crc16_factor)                                      
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (b = 0; b < 256; b++)                                           
    6260:	e2866001 	add	r6, r6, #1                                    
    6264:	e3560c01 	cmp	r6, #256	; 0x100                              
  {                                                                   
    uint32_t i;                                                       
    uint16_t v = b;                                                   
    for (i = 8; i--;)                                                 
      v = v & 1 ? (v >> 1) ^ pattern : v >> 1;                        
    rtems_fdisk_crc16_factor[b] = v & 0xffff;                         
    6268:	e1e030b2 	strh	r3, [r0, #2]!                                
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
  if (!rtems_fdisk_crc16_factor)                                      
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (b = 0; b < 256; b++)                                           
    626c:	1afffff1 	bne	6238 <rtems_fdisk_initialize+0x44>            
                                                                      
  sc = rtems_fdisk_crc16_gen_factors (0x8408);                        
  if (sc != RTEMS_SUCCESSFUL)                                         
      return sc;                                                      
                                                                      
  rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,      
    6270:	e59f14d4 	ldr	r1, [pc, #1236]	; 674c <rtems_fdisk_initialize+0x558>
    6274:	e5915000 	ldr	r5, [r1]                                      
    6278:	e3a01074 	mov	r1, #116	; 0x74                               
    627c:	e1a00005 	mov	r0, r5                                        
    6280:	eb000307 	bl	6ea4 <calloc>                                  
    6284:	e59f24b8 	ldr	r2, [pc, #1208]	; 6744 <rtems_fdisk_initialize+0x550>
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    6288:	e3500000 	cmp	r0, #0                                        
                                                                      
  sc = rtems_fdisk_crc16_gen_factors (0x8408);                        
  if (sc != RTEMS_SUCCESSFUL)                                         
      return sc;                                                      
                                                                      
  rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,      
    628c:	e1a03000 	mov	r3, r0                                        
    6290:	e5820000 	str	r0, [r2]                                      
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    6294:	0a0000d0 	beq	65dc <rtems_fdisk_initialize+0x3e8>           
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
    6298:	e3550000 	cmp	r5, #0                                        
    629c:	0a0000ec 	beq	6654 <rtems_fdisk_initialize+0x460>           
    62a0:	e59f54a8 	ldr	r5, [pc, #1192]	; 6750 <rtems_fdisk_initialize+0x55c>
    62a4:	e58d4028 	str	r4, [sp, #40]	; 0x28                          
    62a8:	e58d5018 	str	r5, [sp, #24]                                 
    62ac:	e58d401c 	str	r4, [sp, #28]                                 
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
    62b0:	e59f549c 	ldr	r5, [pc, #1180]	; 6754 <rtems_fdisk_initialize+0x560>
    62b4:	e8950007 	ldm	r5, {r0, r1, r2}                              
    62b8:	e28dc02c 	add	ip, sp, #44	; 0x2c                            
    62bc:	e8ac0003 	stmia	ip!, {r0, r1}                               
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
    62c0:	e59d601c 	ldr	r6, [sp, #28]                                 
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
    62c4:	e1a01802 	lsl	r1, r2, #16                                   
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
    62c8:	e0861c21 	add	r1, r6, r1, lsr #24                           
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
    62cc:	e1cc20b0 	strh	r2, [ip]                                     
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
    62d0:	e5cd1035 	strb	r1, [sp, #53]	; 0x35                         
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    62d4:	e59dc018 	ldr	ip, [sp, #24]                                 
    62d8:	e51cc01c 	ldr	ip, [ip, #-28]                                
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
    fd->minor              = minor;                                   
    fd->flags              = c->flags;                                
    62dc:	e59d5018 	ldr	r5, [sp, #24]                                 
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    62e0:	e58dc020 	str	ip, [sp, #32]                                 
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
    fd->minor              = minor;                                   
    fd->flags              = c->flags;                                
    62e4:	e515e014 	ldr	lr, [r5, #-20]                                
    fd->compact_segs       = c->compact_segs;                         
    62e8:	e515c00c 	ldr	ip, [r5, #-12]                                
    fd->avail_compact_segs = c->avail_compact_segs;                   
    62ec:	e5150008 	ldr	r0, [r5, #-8]                                 
    fd->block_size         = c->block_size;                           
    62f0:	e5158020 	ldr	r8, [r5, #-32]                                
    fd->unavail_blocks     = c->unavail_blocks;                       
    62f4:	e5151010 	ldr	r1, [r5, #-16]                                
    fd->info_level         = c->info_level;                           
    62f8:	e5152004 	ldr	r2, [r5, #-4]                                 
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
    62fc:	e59d6028 	ldr	r6, [sp, #40]	; 0x28                          
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    6300:	e59d5020 	ldr	r5, [sp, #32]                                 
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
    6304:	e0836006 	add	r6, r3, r6                                    
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    6308:	e3550000 	cmp	r5, #0                                        
                                                                      
    fd = &rtems_flashdisks[minor];                                    
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
    630c:	e28d5024 	add	r5, sp, #36	; 0x24                            
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    int      ret;                                                     
                                                                      
    fd = &rtems_flashdisks[minor];                                    
    6310:	e58d600c 	str	r6, [sp, #12]                                 
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
    6314:	e8950060 	ldm	r5, {r5, r6}                                  
    6318:	e7835006 	str	r5, [r3, r6]                                  
    fd->minor              = minor;                                   
    631c:	e59d500c 	ldr	r5, [sp, #12]                                 
    6320:	e59d601c 	ldr	r6, [sp, #28]                                 
    fd->flags              = c->flags;                                
    fd->compact_segs       = c->compact_segs;                         
    6324:	e585c00c 	str	ip, [r5, #12]                                 
                                                                      
    name [sizeof(RTEMS_FLASHDISK_DEVICE_BASE_NAME)] += minor;         
                                                                      
    fd->major              = major;                                   
    fd->minor              = minor;                                   
    fd->flags              = c->flags;                                
    6328:	e9854040 	stmib	r5, {r6, lr}                                
    fd->compact_segs       = c->compact_segs;                         
    fd->avail_compact_segs = c->avail_compact_segs;                   
    632c:	e5850010 	str	r0, [r5, #16]                                 
    fd->block_size         = c->block_size;                           
    6330:	e5858014 	str	r8, [r5, #20]                                 
    fd->unavail_blocks     = c->unavail_blocks;                       
    6334:	e5851020 	str	r1, [r5, #32]                                 
    fd->info_level         = c->info_level;                           
    6338:	e585206c 	str	r2, [r5, #108]	; 0x6c                         
                                                                      
    for (device = 0; device < c->device_count; device++)              
    633c:	0a0000b6 	beq	661c <rtems_fdisk_initialize+0x428>           
    6340:	e59dc018 	ldr	ip, [sp, #24]                                 
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    6344:	e3a06000 	mov	r6, #0                                        
    6348:	e58d6014 	str	r6, [sp, #20]                                 
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    634c:	e51cb018 	ldr	fp, [ip, #-24]                                
    6350:	e58d6010 	str	r6, [sp, #16]                                 
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
    6354:	e59b9000 	ldr	r9, [fp]                                      
    6358:	e3590000 	cmp	r9, #0                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
    635c:	01a07009 	moveq	r7, r9                                      
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
    6360:	0a000011 	beq	63ac <rtems_fdisk_initialize+0x1b8>           
 */                                                                   
static uint32_t                                                       
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
    6364:	e3a07000 	mov	r7, #0                                        
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
    6368:	e59b6004 	ldr	r6, [fp, #4]                                  
    636c:	e1a05007 	mov	r5, r7                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
    6370:	e5960008 	ldr	r0, [r6, #8]                                  
    6374:	e1a01008 	mov	r1, r8                                        
    6378:	ebffedca 	bl	1aa8 <__aeabi_uidiv>                           
    637c:	e1a0a000 	mov	sl, r0                                        
static uint32_t                                                       
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
    6380:	e1a00180 	lsl	r0, r0, #3                                    
  return ((bytes - 1) / page_size) + 1;                               
    6384:	e2400001 	sub	r0, r0, #1                                    
    6388:	e1a01008 	mov	r1, r8                                        
    638c:	ebffedc5 	bl	1aa8 <__aeabi_uidiv>                           
    6390:	e24aa001 	sub	sl, sl, #1                                    
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
    6394:	e2855001 	add	r5, r5, #1                                    
  {                                                                   
    const rtems_fdisk_segment_desc* sd = &dd->segments[s];            
    count +=                                                          
      (rtems_fdisk_pages_in_segment (sd, page_size) -                 
       rtems_fdisk_page_desc_pages (sd, page_size)) * sd->count;      
    6398:	e0d630bc 	ldrh	r3, [r6], #12                                
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
  {                                                                   
    const rtems_fdisk_segment_desc* sd = &dd->segments[s];            
    count +=                                                          
      (rtems_fdisk_pages_in_segment (sd, page_size) -                 
    639c:	e060000a 	rsb	r0, r0, sl                                    
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
    63a0:	e1550009 	cmp	r5, r9                                        
  {                                                                   
    const rtems_fdisk_segment_desc* sd = &dd->segments[s];            
    count +=                                                          
    63a4:	e0277093 	mla	r7, r3, r0, r7                                
rtems_fdisk_blocks_in_device (const rtems_fdisk_device_desc* dd,      
                              uint32_t                       page_size)
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t s;                                                         
  for (s = 0; s < dd->segment_count; s++)                             
    63a8:	1afffff0 	bne	6370 <rtems_fdisk_initialize+0x17c>           
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    63ac:	e59d2010 	ldr	r2, [sp, #16]                                 
      blocks += rtems_fdisk_blocks_in_device (&c->devices[device],    
    63b0:	e59d5014 	ldr	r5, [sp, #20]                                 
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    63b4:	e59d3020 	ldr	r3, [sp, #32]                                 
    63b8:	e2822001 	add	r2, r2, #1                                    
      blocks += rtems_fdisk_blocks_in_device (&c->devices[device],    
    63bc:	e0855007 	add	r5, r5, r7                                    
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    63c0:	e1520003 	cmp	r2, r3                                        
    63c4:	e58d2010 	str	r2, [sp, #16]                                 
      blocks += rtems_fdisk_blocks_in_device (&c->devices[device],    
    63c8:	e58d5014 	str	r5, [sp, #20]                                 
    fd->avail_compact_segs = c->avail_compact_segs;                   
    fd->block_size         = c->block_size;                           
    fd->unavail_blocks     = c->unavail_blocks;                       
    fd->info_level         = c->info_level;                           
                                                                      
    for (device = 0; device < c->device_count; device++)              
    63cc:	e28bb00c 	add	fp, fp, #12                                   
    63d0:	1affffdf 	bne	6354 <rtems_fdisk_initialize+0x160>           
                                              c->block_size);         
                                                                      
    /*                                                                
     * One copy buffer of a page size.                                
     */                                                               
    fd->copy_buffer = malloc (c->block_size);                         
    63d4:	e1a00008 	mov	r0, r8                                        
    63d8:	eb000515 	bl	7834 <malloc>                                  
    63dc:	e59dc00c 	ldr	ip, [sp, #12]                                 
    if (!fd->copy_buffer)                                             
    63e0:	e3500000 	cmp	r0, #0                                        
                                              c->block_size);         
                                                                      
    /*                                                                
     * One copy buffer of a page size.                                
     */                                                               
    fd->copy_buffer = malloc (c->block_size);                         
    63e4:	e58c0068 	str	r0, [ip, #104]	; 0x68                         
    if (!fd->copy_buffer)                                             
    63e8:	0a00007b 	beq	65dc <rtems_fdisk_initialize+0x3e8>           
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->blocks = calloc (blocks, sizeof (rtems_fdisk_block_ctl));     
    63ec:	e59d0014 	ldr	r0, [sp, #20]                                 
    63f0:	e3a01008 	mov	r1, #8                                        
    63f4:	eb0002aa 	bl	6ea4 <calloc>                                  
    63f8:	e59d500c 	ldr	r5, [sp, #12]                                 
    if (!fd->blocks)                                                  
    63fc:	e3500000 	cmp	r0, #0                                        
     */                                                               
    fd->copy_buffer = malloc (c->block_size);                         
    if (!fd->copy_buffer)                                             
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->blocks = calloc (blocks, sizeof (rtems_fdisk_block_ctl));     
    6400:	e5850018 	str	r0, [r5, #24]                                 
    if (!fd->blocks)                                                  
    6404:	0a000074 	beq	65dc <rtems_fdisk_initialize+0x3e8>           
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->block_count = blocks;                                         
    6408:	e59d6014 	ldr	r6, [sp, #20]                                 
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
    640c:	e59d0020 	ldr	r0, [sp, #32]                                 
                                                                      
    fd->blocks = calloc (blocks, sizeof (rtems_fdisk_block_ctl));     
    if (!fd->blocks)                                                  
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->block_count = blocks;                                         
    6410:	e585601c 	str	r6, [r5, #28]                                 
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
    6414:	e3a0100c 	mov	r1, #12                                       
    6418:	eb0002a1 	bl	6ea4 <calloc>                                  
    if (!fd->devices)                                                 
    641c:	e3500000 	cmp	r0, #0                                        
    if (!fd->blocks)                                                  
      return RTEMS_NO_MEMORY;                                         
                                                                      
    fd->block_count = blocks;                                         
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
    6420:	e585002c 	str	r0, [r5, #44]	; 0x2c                          
    if (!fd->devices)                                                 
    6424:	0a00006c 	beq	65dc <rtems_fdisk_initialize+0x3e8>           
      return RTEMS_NO_MEMORY;                                         
                                                                      
    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
    6428:	e285c064 	add	ip, r5, #100	; 0x64                           
    642c:	e59f0324 	ldr	r0, [pc, #804]	; 6758 <rtems_fdisk_initialize+0x564>
    6430:	e3a01001 	mov	r1, #1                                        
    6434:	e3a02054 	mov	r2, #84	; 0x54                                
    6438:	e3a03000 	mov	r3, #0                                        
    643c:	e58dc000 	str	ip, [sp]                                      
    6440:	eb001552 	bl	b990 <rtems_semaphore_create>                  
                                 RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
                                 RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
    if (sc != RTEMS_SUCCESSFUL)                                       
    6444:	e2506000 	subs	r6, r0, #0                                   
    6448:	1a000076 	bne	6628 <rtems_fdisk_initialize+0x434>           
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
    644c:	e59dc018 	ldr	ip, [sp, #24]                                 
    6450:	e59d500c 	ldr	r5, [sp, #12]                                 
    6454:	e51c2020 	ldr	r2, [ip, #-32]                                
    6458:	e5953020 	ldr	r3, [r5, #32]                                 
    645c:	e59dc014 	ldr	ip, [sp, #20]                                 
    6460:	e063300c 	rsb	r3, r3, ip                                    
    6464:	e59fc2f0 	ldr	ip, [pc, #752]	; 675c <rtems_fdisk_initialize+0x568>
    6468:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          
    646c:	e59d101c 	ldr	r1, [sp, #28]                                 
    6470:	e28d502c 	add	r5, sp, #44	; 0x2c                            
    6474:	e58d6004 	str	r6, [sp, #4]                                  
    6478:	e58dc000 	str	ip, [sp]                                      
    647c:	e58d5008 	str	r5, [sp, #8]                                  
    6480:	ebfff401 	bl	348c <rtems_disk_create_phys>                  
                                blocks - fd->unavail_blocks,          
                                rtems_fdisk_ioctl, NULL, name);       
    if (sc != RTEMS_SUCCESSFUL)                                       
    6484:	e2506000 	subs	r6, r0, #0                                   
    6488:	1a00009d 	bne	6704 <rtems_fdisk_initialize+0x510>           
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
    648c:	e59dc018 	ldr	ip, [sp, #24]                                 
    6490:	e51c901c 	ldr	r9, [ip, #-28]                                
    6494:	e3590000 	cmp	r9, #0                                        
    6498:	0a000035 	beq	6574 <rtems_fdisk_initialize+0x380>           
      rtems_disk_delete (dev);                                        
      free (fd->copy_buffer);                                         
      free (fd->blocks);                                              
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    649c:	e59dc00c 	ldr	ip, [sp, #12]                                 
    64a0:	e59d5018 	ldr	r5, [sp, #24]                                 
    64a4:	e59ca02c 	ldr	sl, [ip, #44]	; 0x2c                          
    64a8:	e5158018 	ldr	r8, [r5, #-24]                                
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
    64ac:	e1a05006 	mov	r5, r6                                        
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
    64b0:	e5987000 	ldr	r7, [r8]                                      
    64b4:	e3570000 	cmp	r7, #0                                        
 * Count the segments for a device.                                   
 */                                                                   
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
    64b8:	01a06007 	moveq	r6, r7                                      
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
    64bc:	0a000009 	beq	64e8 <rtems_fdisk_initialize+0x2f4>           
    64c0:	e3a03000 	mov	r3, #0                                        
    64c4:	e5980004 	ldr	r0, [r8, #4]                                  
 * Count the segments for a device.                                   
 */                                                                   
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
    64c8:	e1a06003 	mov	r6, r3                                        
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
    64cc:	e1a02003 	mov	r2, r3                                        
    count += dd->segments[segment].count;                             
    64d0:	e19010b3 	ldrh	r1, [r0, r3]                                 
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
    64d4:	e2822001 	add	r2, r2, #1                                    
    64d8:	e1520007 	cmp	r2, r7                                        
    count += dd->segments[segment].count;                             
    64dc:	e0866001 	add	r6, r6, r1                                    
static uint32_t                                                       
rtems_fdisk_count_segments (const rtems_fdisk_device_desc* dd)        
{                                                                     
  uint32_t count = 0;                                                 
  uint32_t segment;                                                   
  for (segment = 0; segment < dd->segment_count; segment++)           
    64e0:	e283300c 	add	r3, r3, #12                                   
    64e4:	1afffff9 	bne	64d0 <rtems_fdisk_initialize+0x2dc>           
      uint32_t                 segment_count;                         
      uint32_t                 segment;                               
                                                                      
      segment_count = rtems_fdisk_count_segments (&c->devices[device]);
                                                                      
      fd->devices[device].segments = calloc (segment_count,           
    64e8:	e1a00006 	mov	r0, r6                                        
    64ec:	e3a01030 	mov	r1, #48	; 0x30                                
    64f0:	eb00026b 	bl	6ea4 <calloc>                                  
                                             sizeof (rtems_fdisk_segment_ctl));
      if (!fd->devices[device].segments)                              
    64f4:	e3500000 	cmp	r0, #0                                        
      uint32_t                 segment_count;                         
      uint32_t                 segment;                               
                                                                      
      segment_count = rtems_fdisk_count_segments (&c->devices[device]);
                                                                      
      fd->devices[device].segments = calloc (segment_count,           
    64f8:	e58a0000 	str	r0, [sl]                                      
                                             sizeof (rtems_fdisk_segment_ctl));
      if (!fd->devices[device].segments)                              
    64fc:	0a000038 	beq	65e4 <rtems_fdisk_initialize+0x3f0>           
        return RTEMS_NO_MEMORY;                                       
      }                                                               
                                                                      
      sc = fd->devices[device].segments;                              
                                                                      
      for (segment = 0; segment < c->devices[device].segment_count; segment++)
    6500:	e3570000 	cmp	r7, #0                                        
    6504:	0a000014 	beq	655c <rtems_fdisk_initialize+0x368>           
        rtems_disk_delete (dev);                                      
        rtems_semaphore_delete (fd->lock);                            
        free (fd->copy_buffer);                                       
        free (fd->blocks);                                            
        free (fd->devices);                                           
        return RTEMS_NO_MEMORY;                                       
    6508:	e598c004 	ldr	ip, [r8, #4]                                  
      }                                                               
                                                                      
      sc = fd->devices[device].segments;                              
                                                                      
      for (segment = 0; segment < c->devices[device].segment_count; segment++)
    650c:	e3a0e000 	mov	lr, #0                                        
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
    6510:	e1dc10b0 	ldrh	r1, [ip]                                     
    6514:	e3510000 	cmp	r1, #0                                        
    6518:	0a00000b 	beq	654c <rtems_fdisk_initialize+0x358>           
    651c:	e1a03000 	mov	r3, r0                                        
    6520:	e3a02000 	mov	r2, #0                                        
        {                                                             
          sc->descriptor = sd;                                        
          sc->device     = device;                                    
          sc->segment    = seg_segment;                               
    6524:	e583200c 	str	r2, [r3, #12]                                 
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
    6528:	e2822001 	add	r2, r2, #1                                    
    652c:	e1520001 	cmp	r2, r1                                        
        {                                                             
          sc->descriptor = sd;                                        
    6530:	e583c004 	str	ip, [r3, #4]                                  
          sc->device     = device;                                    
    6534:	e5835008 	str	r5, [r3, #8]                                  
          sc->segment    = seg_segment;                               
          sc->erased     = 0;                                         
    6538:	e583402c 	str	r4, [r3, #44]	; 0x2c                          
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
    653c:	e2833030 	add	r3, r3, #48	; 0x30                            
    6540:	3afffff7 	bcc	6524 <rtems_fdisk_initialize+0x330>           
 * @param major Flash disk major device number.                       
 * @param minor Minor device number, not applicable.                  
 * @param arg Initialization argument, not applicable.                
 */                                                                   
rtems_device_driver                                                   
rtems_fdisk_initialize (rtems_device_major_number major,              
    6544:	e0811081 	add	r1, r1, r1, lsl #1                            
        const rtems_fdisk_segment_desc* sd;                           
        uint32_t                        seg_segment;                  
                                                                      
        sd = &c->devices[device].segments[segment];                   
                                                                      
        for (seg_segment = 0; seg_segment < sd->count; seg_segment++, sc++)
    6548:	e0800201 	add	r0, r0, r1, lsl #4                            
        return RTEMS_NO_MEMORY;                                       
      }                                                               
                                                                      
      sc = fd->devices[device].segments;                              
                                                                      
      for (segment = 0; segment < c->devices[device].segment_count; segment++)
    654c:	e28ee001 	add	lr, lr, #1                                    
    6550:	e15e0007 	cmp	lr, r7                                        
    6554:	e28cc00c 	add	ip, ip, #12                                   
    6558:	1affffec 	bne	6510 <rtems_fdisk_initialize+0x31c>           
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
    655c:	e2855001 	add	r5, r5, #1                                    
    6560:	e1550009 	cmp	r5, r9                                        
          sc->segment    = seg_segment;                               
          sc->erased     = 0;                                         
        }                                                             
      }                                                               
                                                                      
      fd->devices[device].segment_count = segment_count;              
    6564:	e98a0140 	stmib	sl, {r6, r8}                                
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    }                                                                 
                                                                      
    for (device = 0; device < c->device_count; device++)              
    6568:	e288800c 	add	r8, r8, #12                                   
    656c:	e28aa00c 	add	sl, sl, #12                                   
    6570:	1affffce 	bne	64b0 <rtems_fdisk_initialize+0x2bc>           
                                                                      
      fd->devices[device].segment_count = segment_count;              
      fd->devices[device].descriptor    = &c->devices[device];        
    }                                                                 
                                                                      
    fd->device_count = c->device_count;                               
    6574:	e59d500c 	ldr	r5, [sp, #12]                                 
    6578:	e5859030 	str	r9, [r5, #48]	; 0x30                          
                                                                      
    ret = rtems_fdisk_recover_block_mappings (fd);                    
    657c:	e1a00005 	mov	r0, r5                                        
    6580:	ebfff919 	bl	49ec <rtems_fdisk_recover_block_mappings>      
    if (ret)                                                          
    6584:	e2506000 	subs	r6, r0, #0                                   
    6588:	1a000049 	bne	66b4 <rtems_fdisk_initialize+0x4c0>           
      rtems_fdisk_error ("recovery of disk failed: %s (%d)",          
                         strerror (ret), ret);                        
      return ret;                                                     
    }                                                                 
                                                                      
    ret = rtems_fdisk_compact (fd);                                   
    658c:	e59d000c 	ldr	r0, [sp, #12]                                 
    6590:	ebfff86d 	bl	474c <rtems_fdisk_compact>                     
    if (ret)                                                          
    6594:	e2506000 	subs	r6, r0, #0                                   
    6598:	1a000031 	bne	6664 <rtems_fdisk_initialize+0x470>           
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
    659c:	e59f61a8 	ldr	r6, [pc, #424]	; 674c <rtems_fdisk_initialize+0x558>
    65a0:	e59dc01c 	ldr	ip, [sp, #28]                                 
    65a4:	e5965000 	ldr	r5, [r6]                                      
    65a8:	e28cc001 	add	ip, ip, #1                                    
    65ac:	e59d6018 	ldr	r6, [sp, #24]                                 
    65b0:	e58dc01c 	str	ip, [sp, #28]                                 
    65b4:	e155000c 	cmp	r5, ip                                        
    65b8:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
    65bc:	e2866020 	add	r6, r6, #32                                   
    65c0:	e28cc074 	add	ip, ip, #116	; 0x74                           
    65c4:	e58d6018 	str	r6, [sp, #24]                                 
    65c8:	e58dc028 	str	ip, [sp, #40]	; 0x28                          
    65cc:	9a000020 	bls	6654 <rtems_fdisk_initialize+0x460>           
                                                                      
  rtems_fdisk_crc16_factor = malloc (sizeof (uint16_t) * 256);        
  if (!rtems_fdisk_crc16_factor)                                      
    return RTEMS_NO_MEMORY;                                           
                                                                      
  for (b = 0; b < 256; b++)                                           
    65d0:	e59f216c 	ldr	r2, [pc, #364]	; 6744 <rtems_fdisk_initialize+0x550><== NOT EXECUTED
    65d4:	e5923000 	ldr	r3, [r2]                                      <== NOT EXECUTED
    65d8:	eaffff34 	b	62b0 <rtems_fdisk_initialize+0xbc>              <== NOT EXECUTED
                                                                      
  rtems_flashdisks = calloc (rtems_flashdisk_configuration_size,      
                             sizeof (rtems_flashdisk));               
                                                                      
  if (!rtems_flashdisks)                                              
    return RTEMS_NO_MEMORY;                                           
    65dc:	e3a0001a 	mov	r0, #26                                       <== NOT EXECUTED
    65e0:	eaffff0a 	b	6210 <rtems_fdisk_initialize+0x1c>              <== NOT EXECUTED
    65e4:	e59d500c 	ldr	r5, [sp, #12]                                 <== NOT EXECUTED
                                                                      
      fd->devices[device].segments = calloc (segment_count,           
                                             sizeof (rtems_fdisk_segment_ctl));
      if (!fd->devices[device].segments)                              
      {                                                               
        rtems_disk_delete (dev);                                      
    65e8:	e59d101c 	ldr	r1, [sp, #28]                                 <== NOT EXECUTED
    65ec:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          <== NOT EXECUTED
    65f0:	ebfff2fe 	bl	31f0 <rtems_disk_delete>                       <== NOT EXECUTED
        rtems_semaphore_delete (fd->lock);                            
    65f4:	e5950064 	ldr	r0, [r5, #100]	; 0x64                         <== NOT EXECUTED
    65f8:	eb001554 	bl	bb50 <rtems_semaphore_delete>                  <== NOT EXECUTED
        free (fd->copy_buffer);                                       
    65fc:	e5950068 	ldr	r0, [r5, #104]	; 0x68                         <== NOT EXECUTED
    6600:	eb00030c 	bl	7238 <free>                                    <== NOT EXECUTED
        free (fd->blocks);                                            
    6604:	e5950018 	ldr	r0, [r5, #24]                                 <== NOT EXECUTED
    6608:	eb00030a 	bl	7238 <free>                                    <== NOT EXECUTED
        free (fd->devices);                                           
    660c:	e595002c 	ldr	r0, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    6610:	eb000308 	bl	7238 <free>                                    <== NOT EXECUTED
        return RTEMS_NO_MEMORY;                                       
    6614:	e3a0001a 	mov	r0, #26                                       <== NOT EXECUTED
    6618:	eafffefc 	b	6210 <rtems_fdisk_initialize+0x1c>              <== NOT EXECUTED
  for (minor = 0; minor < rtems_flashdisk_configuration_size; minor++, c++)
  {                                                                   
    char     name[] = RTEMS_FLASHDISK_DEVICE_BASE_NAME "a";           
    dev_t    dev = rtems_filesystem_make_dev_t (major, minor);        
    uint32_t device;                                                  
    uint32_t blocks = 0;                                              
    661c:	e59d6020 	ldr	r6, [sp, #32]                                 <== NOT EXECUTED
    6620:	e58d6014 	str	r6, [sp, #20]                                 <== NOT EXECUTED
    6624:	eaffff6a 	b	63d4 <rtems_fdisk_initialize+0x1e0>             <== NOT EXECUTED
    6628:	e59d500c 	ldr	r5, [sp, #12]                                 <== NOT EXECUTED
    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
                                 RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE |
                                 RTEMS_INHERIT_PRIORITY, 0, &fd->lock);
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
      rtems_fdisk_error ("disk lock create failed");                  
    662c:	e59f012c 	ldr	r0, [pc, #300]	; 6760 <rtems_fdisk_initialize+0x56c><== NOT EXECUTED
    6630:	ebfff5fe 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      free (fd->copy_buffer);                                         
    6634:	e5950068 	ldr	r0, [r5, #104]	; 0x68                         <== NOT EXECUTED
    6638:	eb0002fe 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->blocks);                                              
    663c:	e5950018 	ldr	r0, [r5, #24]                                 <== NOT EXECUTED
    6640:	eb0002fc 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->devices);                                             
    6644:	e595002c 	ldr	r0, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    6648:	eb0002fa 	bl	7238 <free>                                    <== NOT EXECUTED
                                                                      
    fd->devices = calloc (c->device_count, sizeof (rtems_fdisk_device_ctl));
    if (!fd->devices)                                                 
      return RTEMS_NO_MEMORY;                                         
                                                                      
    sc = rtems_semaphore_create (rtems_build_name ('F', 'D', 'S', 'K'), 1,
    664c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    {                                                                 
      rtems_fdisk_error ("disk lock create failed");                  
      free (fd->copy_buffer);                                         
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    6650:	eafffeee 	b	6210 <rtems_fdisk_initialize+0x1c>              <== NOT EXECUTED
                         strerror (ret), ret);                        
      return ret;                                                     
    }                                                                 
  }                                                                   
                                                                      
  rtems_flashdisk_count = rtems_flashdisk_configuration_size;         
    6654:	e59f00e8 	ldr	r0, [pc, #232]	; 6744 <rtems_fdisk_initialize+0x550>
    6658:	e5805004 	str	r5, [r0, #4]                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    665c:	e3a00000 	mov	r0, #0                                        
    6660:	eafffeea 	b	6210 <rtems_fdisk_initialize+0x1c>              
    6664:	e59d500c 	ldr	r5, [sp, #12]                                 <== NOT EXECUTED
    }                                                                 
                                                                      
    ret = rtems_fdisk_compact (fd);                                   
    if (ret)                                                          
    {                                                                 
      rtems_disk_delete (dev);                                        
    6668:	e59d101c 	ldr	r1, [sp, #28]                                 <== NOT EXECUTED
    666c:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          <== NOT EXECUTED
    6670:	ebfff2de 	bl	31f0 <rtems_disk_delete>                       <== NOT EXECUTED
      rtems_semaphore_delete (fd->lock);                              
    6674:	e5950064 	ldr	r0, [r5, #100]	; 0x64                         <== NOT EXECUTED
    6678:	eb001534 	bl	bb50 <rtems_semaphore_delete>                  <== NOT EXECUTED
      free (fd->copy_buffer);                                         
    667c:	e5950068 	ldr	r0, [r5, #104]	; 0x68                         <== NOT EXECUTED
    6680:	eb0002ec 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->blocks);                                              
    6684:	e5950018 	ldr	r0, [r5, #24]                                 <== NOT EXECUTED
    6688:	eb0002ea 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->devices);                                             
    668c:	e595002c 	ldr	r0, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    6690:	eb0002e8 	bl	7238 <free>                                    <== NOT EXECUTED
      rtems_fdisk_error ("compacting of disk failed: %s (%d)",        
    6694:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    6698:	eb006c2f 	bl	2175c <strerror>                               <== NOT EXECUTED
    669c:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
    66a0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    66a4:	e59f00b8 	ldr	r0, [pc, #184]	; 6764 <rtems_fdisk_initialize+0x570><== NOT EXECUTED
    66a8:	ebfff5e0 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                         strerror (ret), ret);                        
      return ret;                                                     
    66ac:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    66b0:	eafffed6 	b	6210 <rtems_fdisk_initialize+0x1c>              <== NOT EXECUTED
    66b4:	e59d500c 	ldr	r5, [sp, #12]                                 <== NOT EXECUTED
    fd->device_count = c->device_count;                               
                                                                      
    ret = rtems_fdisk_recover_block_mappings (fd);                    
    if (ret)                                                          
    {                                                                 
      rtems_disk_delete (dev);                                        
    66b8:	e59d101c 	ldr	r1, [sp, #28]                                 <== NOT EXECUTED
    66bc:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          <== NOT EXECUTED
    66c0:	ebfff2ca 	bl	31f0 <rtems_disk_delete>                       <== NOT EXECUTED
      rtems_semaphore_delete (fd->lock);                              
    66c4:	e5950064 	ldr	r0, [r5, #100]	; 0x64                         <== NOT EXECUTED
    66c8:	eb001520 	bl	bb50 <rtems_semaphore_delete>                  <== NOT EXECUTED
      free (fd->copy_buffer);                                         
    66cc:	e5950068 	ldr	r0, [r5, #104]	; 0x68                         <== NOT EXECUTED
    66d0:	eb0002d8 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->blocks);                                              
    66d4:	e5950018 	ldr	r0, [r5, #24]                                 <== NOT EXECUTED
    66d8:	eb0002d6 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->devices);                                             
    66dc:	e595002c 	ldr	r0, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    66e0:	eb0002d4 	bl	7238 <free>                                    <== NOT EXECUTED
      rtems_fdisk_error ("recovery of disk failed: %s (%d)",          
    66e4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    66e8:	eb006c1b 	bl	2175c <strerror>                               <== NOT EXECUTED
    66ec:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
    66f0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    66f4:	e59f006c 	ldr	r0, [pc, #108]	; 6768 <rtems_fdisk_initialize+0x574><== NOT EXECUTED
    66f8:	ebfff5cc 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                         strerror (ret), ret);                        
      return ret;                                                     
    66fc:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    6700:	eafffec2 	b	6210 <rtems_fdisk_initialize+0x1c>              <== NOT EXECUTED
    6704:	e59d500c 	ldr	r5, [sp, #12]                                 <== NOT EXECUTED
    sc = rtems_disk_create_phys(dev, c->block_size,                   
                                blocks - fd->unavail_blocks,          
                                rtems_fdisk_ioctl, NULL, name);       
    if (sc != RTEMS_SUCCESSFUL)                                       
    {                                                                 
      rtems_semaphore_delete (fd->lock);                              
    6708:	e5950064 	ldr	r0, [r5, #100]	; 0x64                         <== NOT EXECUTED
    670c:	eb00150f 	bl	bb50 <rtems_semaphore_delete>                  <== NOT EXECUTED
      rtems_disk_delete (dev);                                        
    6710:	e59d101c 	ldr	r1, [sp, #28]                                 <== NOT EXECUTED
    6714:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          <== NOT EXECUTED
    6718:	ebfff2b4 	bl	31f0 <rtems_disk_delete>                       <== NOT EXECUTED
      free (fd->copy_buffer);                                         
    671c:	e5950068 	ldr	r0, [r5, #104]	; 0x68                         <== NOT EXECUTED
    6720:	eb0002c4 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->blocks);                                              
    6724:	e5950018 	ldr	r0, [r5, #24]                                 <== NOT EXECUTED
    6728:	eb0002c2 	bl	7238 <free>                                    <== NOT EXECUTED
      free (fd->devices);                                             
    672c:	e595002c 	ldr	r0, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    6730:	eb0002c0 	bl	7238 <free>                                    <== NOT EXECUTED
      rtems_fdisk_error ("disk create phy failed");                   
    6734:	e59f0030 	ldr	r0, [pc, #48]	; 676c <rtems_fdisk_initialize+0x578><== NOT EXECUTED
    6738:	ebfff5bc 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      free (fd->blocks);                                              
      free (fd->devices);                                             
      return sc;                                                      
    }                                                                 
                                                                      
    sc = rtems_disk_create_phys(dev, c->block_size,                   
    673c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
      rtems_disk_delete (dev);                                        
      free (fd->copy_buffer);                                         
      free (fd->blocks);                                              
      free (fd->devices);                                             
      rtems_fdisk_error ("disk create phy failed");                   
      return sc;                                                      
    6740:	eafffeb2 	b	6210 <rtems_fdisk_initialize+0x1c>              <== NOT EXECUTED
                                                                      

00004d90 <rtems_fdisk_ioctl>: * @param argp IOCTL argument. * @retval The IOCTL return value */ static int rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp) {
    4d90:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    4d94:	e24dd068 	sub	sp, sp, #104	; 0x68                           
  dev_t device                                                        
)                                                                     
{                                                                     
  union __rtems_dev_t temp;                                           
                                                                      
  temp.device = device;                                               
    4d98:	e5907004 	ldr	r7, [r0, #4]                                  
    4d9c:	e1a06001 	mov	r6, r1                                        
    4da0:	e1a05002 	mov	r5, r2                                        
    4da4:	e1a08000 	mov	r8, r0                                        
  dev_t                     dev = rtems_disk_get_device_identifier (dd);
  rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
  rtems_blkdev_request*     r = argp;                                 
  rtems_status_code         sc;                                       
                                                                      
  errno = 0;                                                          
    4da8:	eb0069f9 	bl	1f594 <__errno>                                
                                                                      
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
    4dac:	e59f3fb4 	ldr	r3, [pc, #4020]	; 5d68 <bsp_section_rodata_size+0xe64>
    4db0:	e0671187 	rsb	r1, r7, r7, lsl #3                            
    4db4:	e5932000 	ldr	r2, [r3]                                      
    4db8:	e0871101 	add	r1, r7, r1, lsl #2                            
    4dbc:	e1a01101 	lsl	r1, r1, #2                                    
  dev_t                     dev = rtems_disk_get_device_identifier (dd);
  rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
  rtems_blkdev_request*     r = argp;                                 
  rtems_status_code         sc;                                       
                                                                      
  errno = 0;                                                          
    4dc0:	e3a03000 	mov	r3, #0                                        
                                                                      
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
    4dc4:	e0822001 	add	r2, r2, r1                                    
    4dc8:	e58d1038 	str	r1, [sp, #56]	; 0x38                          
  dev_t                     dev = rtems_disk_get_device_identifier (dd);
  rtems_device_minor_number minor = rtems_filesystem_dev_minor_t (dev);
  rtems_blkdev_request*     r = argp;                                 
  rtems_status_code         sc;                                       
                                                                      
  errno = 0;                                                          
    4dcc:	e5803000 	str	r3, [r0]                                      
                                                                      
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
    4dd0:	e1a01003 	mov	r1, r3                                        
    4dd4:	e5920064 	ldr	r0, [r2, #100]	; 0x64                         
    4dd8:	e1a02003 	mov	r2, r3                                        
    4ddc:	eb001b84 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
    4de0:	e2504000 	subs	r4, r0, #0                                   
    4de4:	1a000030 	bne	4eac <rtems_fdisk_ioctl+0x11c>                
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
    4de8:	eb0069e9 	bl	1f594 <__errno>                                
    switch (req)                                                      
    4dec:	e59f3f78 	ldr	r3, [pc, #3960]	; 5d6c <bsp_section_rodata_size+0xe68>
    4df0:	e1560003 	cmp	r6, r3                                        
  sc = rtems_semaphore_obtain (rtems_flashdisks[minor].lock, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
    4df4:	e5804000 	str	r4, [r0]                                      
    switch (req)                                                      
    4df8:	0a000052 	beq	4f48 <bsp_section_rodata_size+0x44>           
    4dfc:	8a000033 	bhi	4ed0 <rtems_fdisk_ioctl+0x140>                
    4e00:	e2433002 	sub	r3, r3, #2                                    
    4e04:	e1560003 	cmp	r6, r3                                        
    4e08:	0a000116 	beq	5268 <bsp_section_rodata_size+0x364>          
    4e0c:	9a0000d6 	bls	516c <bsp_section_rodata_size+0x268>          
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
    4e10:	eb0069df 	bl	1f594 <__errno>                                <== NOT EXECUTED
    4e14:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
    4e18:	e59f0f48 	ldr	r0, [pc, #3912]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    4e1c:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          <== NOT EXECUTED
    4e20:	e5905000 	ldr	r5, [r0]                                      <== NOT EXECUTED
    4e24:	e085500c 	add	r5, r5, ip                                    <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4e28:	e595304c 	ldr	r3, [r5, #76]	; 0x4c                          <== NOT EXECUTED
    4e2c:	e2531000 	subs	r1, r3, #0                                   <== NOT EXECUTED
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
                                                                      
    sc->next = 0;                                                     
    4e30:	e1a07004 	mov	r7, r4                                        <== NOT EXECUTED
  {                                                                   
    /*                                                                
     * The segment will either end up on the available queue or       
     * the failed queue.                                              
     */                                                               
    int ret = rtems_fdisk_erase_segment (fd, sc);                     
    4e34:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4e38:	0a000012 	beq	4e88 <rtems_fdisk_ioctl+0xf8>                 <== NOT EXECUTED
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    4e3c:	e5932000 	ldr	r2, [r3]                                      <== NOT EXECUTED
    if (!queue->head)                                                 
    4e40:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
      queue->tail = 0;                                                
    4e44:	05852050 	streq	r2, [r5, #80]	; 0x50                        <== NOT EXECUTED
{                                                                     
  if (queue->head)                                                    
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    4e48:	e585204c 	str	r2, [r5, #76]	; 0x4c                          <== NOT EXECUTED
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
    4e4c:	e5952054 	ldr	r2, [r5, #84]	; 0x54                          <== NOT EXECUTED
    4e50:	e2422001 	sub	r2, r2, #1                                    <== NOT EXECUTED
    4e54:	e5852054 	str	r2, [r5, #84]	; 0x54                          <== NOT EXECUTED
                                                                      
    sc->next = 0;                                                     
    4e58:	e5837000 	str	r7, [r3]                                      <== NOT EXECUTED
  {                                                                   
    /*                                                                
     * The segment will either end up on the available queue or       
     * the failed queue.                                              
     */                                                               
    int ret = rtems_fdisk_erase_segment (fd, sc);                     
    4e5c:	ebfffc13 	bl	3eb0 <rtems_fdisk_erase_segment>               <== NOT EXECUTED
    if (ret && !latched_ret)                                          
    4e60:	e2903000 	adds	r3, r0, #0                                   <== NOT EXECUTED
    4e64:	13a03001 	movne	r3, #1                                      <== NOT EXECUTED
    4e68:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
    4e6c:	13a03000 	movne	r3, #0                                      <== NOT EXECUTED
    4e70:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4e74:	e595304c 	ldr	r3, [r5, #76]	; 0x4c                          <== NOT EXECUTED
    /*                                                                
     * The segment will either end up on the available queue or       
     * the failed queue.                                              
     */                                                               
    int ret = rtems_fdisk_erase_segment (fd, sc);                     
    if (ret && !latched_ret)                                          
    4e78:	11a04000 	movne	r4, r0                                      <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4e7c:	e2531000 	subs	r1, r3, #0                                   <== NOT EXECUTED
  {                                                                   
    /*                                                                
     * The segment will either end up on the available queue or       
     * the failed queue.                                              
     */                                                               
    int ret = rtems_fdisk_erase_segment (fd, sc);                     
    4e80:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    4e84:	1affffec 	bne	4e3c <rtems_fdisk_ioctl+0xac>                 <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
    4e88:	e59f0ed8 	ldr	r0, [pc, #3800]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    4e8c:	e5864000 	str	r4, [r6]                                      <== NOT EXECUTED
    4e90:	e5901000 	ldr	r1, [r0]                                      <== NOT EXECUTED
    4e94:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    4e98:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
      default:                                                        
        rtems_blkdev_ioctl (dd, req, argp);                           
        break;                                                        
    }                                                                 
                                                                      
    sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);      
    4e9c:	e5910064 	ldr	r0, [r1, #100]	; 0x64                         <== NOT EXECUTED
    4ea0:	eb001b9c 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
    if (sc != RTEMS_SUCCESSFUL)                                       
    4ea4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    4ea8:	0a000002 	beq	4eb8 <rtems_fdisk_ioctl+0x128>                <== NOT EXECUTED
      errno = EIO;                                                    
    4eac:	eb0069b8 	bl	1f594 <__errno>                                <== NOT EXECUTED
    4eb0:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
    4eb4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
  }                                                                   
                                                                      
  return errno == 0 ? 0 : -1;                                         
    4eb8:	eb0069b5 	bl	1f594 <__errno>                                
    4ebc:	e5900000 	ldr	r0, [r0]                                      
    4ec0:	e3500000 	cmp	r0, #0                                        
}                                                                     
    4ec4:	13e00000 	mvnne	r0, #0                                      
    4ec8:	e28dd068 	add	sp, sp, #104	; 0x68                           
    4ecc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  if (sc != RTEMS_SUCCESSFUL)                                         
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
    switch (req)                                                      
    4ed0:	e59f3e98 	ldr	r3, [pc, #3736]	; 5d70 <bsp_section_rodata_size+0xe6c>
    4ed4:	e1560003 	cmp	r6, r3                                        
    4ed8:	0a0000ee 	beq	5298 <bsp_section_rodata_size+0x394>          
    4edc:	3a0000ae 	bcc	519c <bsp_section_rodata_size+0x298>          
    4ee0:	e59f3e8c 	ldr	r3, [pc, #3724]	; 5d74 <bsp_section_rodata_size+0xe70>
    4ee4:	e1560003 	cmp	r6, r3                                        
    4ee8:	1a0000a2 	bne	5178 <bsp_section_rodata_size+0x274>          
    {                                                                 
      case RTEMS_BLKIO_REQUEST:                                       
        if ((minor >= rtems_flashdisk_count) ||                       
    4eec:	e59f6e74 	ldr	r6, [pc, #3700]	; 5d68 <bsp_section_rodata_size+0xe64>
    4ef0:	e5963004 	ldr	r3, [r6, #4]                                  
    4ef4:	e1530007 	cmp	r3, r7                                        
    4ef8:	9a00020c 	bls	5730 <bsp_section_rodata_size+0x82c>          
            (rtems_flashdisks[minor].device_count == 0))              
    4efc:	e5963000 	ldr	r3, [r6]                                      
    4f00:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
    4f04:	e083300c 	add	r3, r3, ip                                    
  {                                                                   
    errno = 0;                                                        
    switch (req)                                                      
    {                                                                 
      case RTEMS_BLKIO_REQUEST:                                       
        if ((minor >= rtems_flashdisk_count) ||                       
    4f08:	e5933030 	ldr	r3, [r3, #48]	; 0x30                          
    4f0c:	e3530000 	cmp	r3, #0                                        
    4f10:	0a000206 	beq	5730 <bsp_section_rodata_size+0x82c>          
        {                                                             
          errno = ENODEV;                                             
        }                                                             
        else                                                          
        {                                                             
          switch (r->req)                                             
    4f14:	e5957000 	ldr	r7, [r5]                                      
    4f18:	e3570000 	cmp	r7, #0                                        
    4f1c:	0a00020b 	beq	5750 <bsp_section_rodata_size+0x84c>          
    4f20:	e3570001 	cmp	r7, #1                                        
    4f24:	0a0002e1 	beq	5ab0 <bsp_section_rodata_size+0xbac>          
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
              break;                                                  
                                                                      
            default:                                                  
              errno = EINVAL;                                         
    4f28:	eb006999 	bl	1f594 <__errno>                                <== NOT EXECUTED
    4f2c:	e59f2e34 	ldr	r2, [pc, #3636]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    4f30:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    4f34:	e5921000 	ldr	r1, [r2]                                      <== NOT EXECUTED
    4f38:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    4f3c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    4f40:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
              break;                                                  
    4f44:	ea000083 	b	5158 <bsp_section_rodata_size+0x254>            <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_MONITORING:                              
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
    4f48:	eb006991 	bl	1f594 <__errno>                                <== NOT EXECUTED
    4f4c:	e59fce14 	ldr	ip, [pc, #3604]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    4f50:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    4f54:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
    4f58:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
{                                                                     
  uint32_t i;                                                         
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
  data->block_count    = fd->block_count;                             
    4f5c:	e591301c 	ldr	r3, [r1, #28]                                 <== NOT EXECUTED
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
    4f60:	e591c030 	ldr	ip, [r1, #48]	; 0x30                          <== NOT EXECUTED
  uint32_t i;                                                         
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
    4f64:	e5912020 	ldr	r2, [r1, #32]                                 <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_MONITORING:                              
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
    4f68:	e58d0044 	str	r0, [sp, #68]	; 0x44                          <== NOT EXECUTED
                             rtems_fdisk_monitor_data* data)          
{                                                                     
  uint32_t i;                                                         
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
    4f6c:	e5910014 	ldr	r0, [r1, #20]                                 <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
                                                                      
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
    4f70:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
    4f74:	e58dc03c 	str	ip, [sp, #60]	; 0x3c                          <== NOT EXECUTED
{                                                                     
  uint32_t i;                                                         
  uint32_t j;                                                         
                                                                      
  data->block_size     = fd->block_size;                              
  data->block_count    = fd->block_count;                             
    4f78:	e8850009 	stm	r5, {r0, r3}                                  <== NOT EXECUTED
  data->unavail_blocks = fd->unavail_blocks;                          
    4f7c:	e5852008 	str	r2, [r5, #8]                                  <== NOT EXECUTED
  data->device_count   = fd->device_count;                            
    4f80:	e585c00c 	str	ip, [r5, #12]                                 <== NOT EXECUTED
                                                                      
  data->blocks_used = 0;                                              
    4f84:	e5854018 	str	r4, [r5, #24]                                 <== NOT EXECUTED
  for (i = 0; i < fd->block_count; i++)                               
    4f88:	0a000008 	beq	4fb0 <bsp_section_rodata_size+0xac>           <== NOT EXECUTED
    4f8c:	e5912018 	ldr	r2, [r1, #24]                                 <== NOT EXECUTED
    if (fd->blocks[i].segment)                                        
    4f90:	e7920184 	ldr	r0, [r2, r4, lsl #3]                          <== NOT EXECUTED
    4f94:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      data->blocks_used++;                                            
    4f98:	15950018 	ldrne	r0, [r5, #24]                               <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
                                                                      
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
    4f9c:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
    4fa0:	12800001 	addne	r0, r0, #1                                  <== NOT EXECUTED
    4fa4:	15850018 	strne	r0, [r5, #24]                               <== NOT EXECUTED
  data->block_count    = fd->block_count;                             
  data->unavail_blocks = fd->unavail_blocks;                          
  data->device_count   = fd->device_count;                            
                                                                      
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
    4fa8:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    4fac:	1afffff7 	bne	4f90 <bsp_section_rodata_size+0x8c>           <== NOT EXECUTED
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    4fb0:	e5913034 	ldr	r3, [r1, #52]	; 0x34                          <== NOT EXECUTED
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    4fb4:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    4fb8:	01a02003 	moveq	r2, r3                                      <== NOT EXECUTED
                                                                      
  while (sc)                                                          
    4fbc:	0a000004 	beq	4fd4 <bsp_section_rodata_size+0xd0>           <== NOT EXECUTED
    4fc0:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    4fc4:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    4fc8:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    4fcc:	e2822001 	add	r2, r2, #1                                    <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    4fd0:	1afffffb 	bne	4fc4 <bsp_section_rodata_size+0xc0>           <== NOT EXECUTED
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    4fd4:	e5913040 	ldr	r3, [r1, #64]	; 0x40                          <== NOT EXECUTED
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    4fd8:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  data->blocks_used = 0;                                              
  for (i = 0; i < fd->block_count; i++)                               
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
    4fdc:	e585201c 	str	r2, [r5, #28]                                 <== NOT EXECUTED
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    4fe0:	01a02003 	moveq	r2, r3                                      <== NOT EXECUTED
                                                                      
  while (sc)                                                          
    4fe4:	0a000004 	beq	4ffc <bsp_section_rodata_size+0xf8>           <== NOT EXECUTED
    4fe8:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    4fec:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    4ff0:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    4ff4:	e2822001 	add	r2, r2, #1                                    <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    4ff8:	1afffffb 	bne	4fec <bsp_section_rodata_size+0xe8>           <== NOT EXECUTED
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    4ffc:	e5913058 	ldr	r3, [r1, #88]	; 0x58                          <== NOT EXECUTED
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5000:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  for (i = 0; i < fd->block_count; i++)                               
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
  data->segs_used      = rtems_fdisk_segment_count_queue (&fd->used); 
    5004:	e5852020 	str	r2, [r5, #32]                                 <== NOT EXECUTED
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    5008:	01a02003 	moveq	r2, r3                                      <== NOT EXECUTED
                                                                      
  while (sc)                                                          
    500c:	0a000004 	beq	5024 <bsp_section_rodata_size+0x120>          <== NOT EXECUTED
    5010:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    5014:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5018:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    501c:	e2822001 	add	r2, r2, #1                                    <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5020:	1afffffb 	bne	5014 <bsp_section_rodata_size+0x110>          <== NOT EXECUTED
  data->pages_active  = 0;                                            
  data->pages_used    = 0;                                            
  data->pages_bad     = 0;                                            
  data->seg_erases    = 0;                                            
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
    5024:	e59d003c 	ldr	r0, [sp, #60]	; 0x3c                          <== NOT EXECUTED
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
  data->segs_used      = rtems_fdisk_segment_count_queue (&fd->used); 
  data->segs_failed    = rtems_fdisk_segment_count_queue (&fd->failed);
                                                                      
  data->segment_count = 0;                                            
    5028:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
  data->pages_active  = 0;                                            
  data->pages_used    = 0;                                            
  data->pages_bad     = 0;                                            
  data->seg_erases    = 0;                                            
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
    502c:	e1500003 	cmp	r0, r3                                        <== NOT EXECUTED
    if (fd->blocks[i].segment)                                        
      data->blocks_used++;                                            
                                                                      
  data->segs_available = rtems_fdisk_segment_count_queue (&fd->available);
  data->segs_used      = rtems_fdisk_segment_count_queue (&fd->used); 
  data->segs_failed    = rtems_fdisk_segment_count_queue (&fd->failed);
    5030:	e5852024 	str	r2, [r5, #36]	; 0x24                          <== NOT EXECUTED
                                                                      
  data->segment_count = 0;                                            
    5034:	e5853010 	str	r3, [r5, #16]                                 <== NOT EXECUTED
  data->page_count    = 0;                                            
    5038:	e5853014 	str	r3, [r5, #20]                                 <== NOT EXECUTED
  data->pages_desc    = 0;                                            
    503c:	e585302c 	str	r3, [r5, #44]	; 0x2c                          <== NOT EXECUTED
  data->pages_active  = 0;                                            
    5040:	e5853030 	str	r3, [r5, #48]	; 0x30                          <== NOT EXECUTED
  data->pages_used    = 0;                                            
    5044:	e5853034 	str	r3, [r5, #52]	; 0x34                          <== NOT EXECUTED
  data->pages_bad     = 0;                                            
    5048:	e5853038 	str	r3, [r5, #56]	; 0x38                          <== NOT EXECUTED
  data->seg_erases    = 0;                                            
    504c:	e5853028 	str	r3, [r5, #40]	; 0x28                          <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
    5050:	0a00003b 	beq	5144 <bsp_section_rodata_size+0x240>          <== NOT EXECUTED
    5054:	e591202c 	ldr	r2, [r1, #44]	; 0x2c                          <== NOT EXECUTED
    5058:	e58d3038 	str	r3, [sp, #56]	; 0x38                          <== NOT EXECUTED
    505c:	e58d2034 	str	r2, [sp, #52]	; 0x34                          <== NOT EXECUTED
    5060:	e58d3040 	str	r3, [sp, #64]	; 0x40                          <== NOT EXECUTED
    5064:	e58d1048 	str	r1, [sp, #72]	; 0x48                          <== NOT EXECUTED
    5068:	e58d5030 	str	r5, [sp, #48]	; 0x30                          <== NOT EXECUTED
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
    506c:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          <== NOT EXECUTED
    5070:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    5074:	e593b004 	ldr	fp, [r3, #4]                                  <== NOT EXECUTED
    5078:	e086600b 	add	r6, r6, fp                                    <== NOT EXECUTED
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
    507c:	e35b0000 	cmp	fp, #0                                        <== NOT EXECUTED
  data->pages_bad     = 0;                                            
  data->seg_erases    = 0;                                            
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
    5080:	e58d6038 	str	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
    5084:	0a000021 	beq	5110 <bsp_section_rodata_size+0x20c>          <== NOT EXECUTED
    5088:	e59d1030 	ldr	r1, [sp, #48]	; 0x30                          <== NOT EXECUTED
    508c:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          <== NOT EXECUTED
    5090:	e59d2030 	ldr	r2, [sp, #48]	; 0x30                          <== NOT EXECUTED
    5094:	e2810034 	add	r0, r1, #52	; 0x34                            <== NOT EXECUTED
    5098:	e59c4014 	ldr	r4, [ip, #20]                                 <== NOT EXECUTED
    509c:	e59ce02c 	ldr	lr, [ip, #44]	; 0x2c                          <== NOT EXECUTED
    50a0:	e8900003 	ldm	r0, {r0, r1}                                  <== NOT EXECUTED
    50a4:	e59cc030 	ldr	ip, [ip, #48]	; 0x30                          <== NOT EXECUTED
    50a8:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
    50ac:	e5925028 	ldr	r5, [r2, #40]	; 0x28                          <== NOT EXECUTED
    50b0:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
                                                                      
      data->page_count   += sc->pages;                                
      data->pages_desc   += sc->pages_desc;                           
      data->pages_active += sc->pages_active;                         
      data->pages_used   += sc->pages_used;                           
      data->pages_bad    += sc->pages_bad;                            
    50b4:	e5936024 	ldr	r6, [r3, #36]	; 0x24                          <== NOT EXECUTED
    for (j = 0; j < fd->devices[i].segment_count; j++)                
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[i].segments[j];      
                                                                      
      data->page_count   += sc->pages;                                
      data->pages_desc   += sc->pages_desc;                           
    50b8:	e2839014 	add	r9, r3, #20                                   <== NOT EXECUTED
    50bc:	e8990600 	ldm	r9, {r9, sl}                                  <== NOT EXECUTED
      data->pages_active += sc->pages_active;                         
    50c0:	e593801c 	ldr	r8, [r3, #28]                                 <== NOT EXECUTED
      data->pages_used   += sc->pages_used;                           
    50c4:	e5937020 	ldr	r7, [r3, #32]                                 <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
    50c8:	e2822001 	add	r2, r2, #1                                    <== NOT EXECUTED
                                                                      
      data->page_count   += sc->pages;                                
      data->pages_desc   += sc->pages_desc;                           
      data->pages_active += sc->pages_active;                         
      data->pages_used   += sc->pages_used;                           
      data->pages_bad    += sc->pages_bad;                            
    50cc:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
      data->seg_erases   += sc->erased;                               
    50d0:	e593602c 	ldr	r6, [r3, #44]	; 0x2c                          <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
    50d4:	e152000b 	cmp	r2, fp                                        <== NOT EXECUTED
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[i].segments[j];      
                                                                      
      data->page_count   += sc->pages;                                
    50d8:	e0844009 	add	r4, r4, r9                                    <== NOT EXECUTED
      data->pages_desc   += sc->pages_desc;                           
    50dc:	e08ee00a 	add	lr, lr, sl                                    <== NOT EXECUTED
      data->pages_active += sc->pages_active;                         
    50e0:	e08cc008 	add	ip, ip, r8                                    <== NOT EXECUTED
      data->pages_used   += sc->pages_used;                           
    50e4:	e0800007 	add	r0, r0, r7                                    <== NOT EXECUTED
      data->pages_bad    += sc->pages_bad;                            
      data->seg_erases   += sc->erased;                               
    50e8:	e0855006 	add	r5, r5, r6                                    <== NOT EXECUTED
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
  {                                                                   
    data->segment_count += fd->devices[i].segment_count;              
                                                                      
    for (j = 0; j < fd->devices[i].segment_count; j++)                
    50ec:	e2833030 	add	r3, r3, #48	; 0x30                            <== NOT EXECUTED
    50f0:	1affffef 	bne	50b4 <bsp_section_rodata_size+0x1b0>          <== NOT EXECUTED
    50f4:	e59d2030 	ldr	r2, [sp, #48]	; 0x30                          <== NOT EXECUTED
    50f8:	e5824014 	str	r4, [r2, #20]                                 <== NOT EXECUTED
    50fc:	e582e02c 	str	lr, [r2, #44]	; 0x2c                          <== NOT EXECUTED
    5100:	e582c030 	str	ip, [r2, #48]	; 0x30                          <== NOT EXECUTED
    5104:	e5820034 	str	r0, [r2, #52]	; 0x34                          <== NOT EXECUTED
    5108:	e5821038 	str	r1, [r2, #56]	; 0x38                          <== NOT EXECUTED
    510c:	e5825028 	str	r5, [r2, #40]	; 0x28                          <== NOT EXECUTED
  data->pages_active  = 0;                                            
  data->pages_used    = 0;                                            
  data->pages_bad     = 0;                                            
  data->seg_erases    = 0;                                            
                                                                      
  for (i = 0; i < fd->device_count; i++)                              
    5110:	e59d3040 	ldr	r3, [sp, #64]	; 0x40                          <== NOT EXECUTED
    5114:	e59dc034 	ldr	ip, [sp, #52]	; 0x34                          <== NOT EXECUTED
    5118:	e59d603c 	ldr	r6, [sp, #60]	; 0x3c                          <== NOT EXECUTED
    511c:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    5120:	e28cc00c 	add	ip, ip, #12                                   <== NOT EXECUTED
    5124:	e1530006 	cmp	r3, r6                                        <== NOT EXECUTED
    5128:	e58d3040 	str	r3, [sp, #64]	; 0x40                          <== NOT EXECUTED
    512c:	e58dc034 	str	ip, [sp, #52]	; 0x34                          <== NOT EXECUTED
    5130:	1affffcd 	bne	506c <bsp_section_rodata_size+0x168>          <== NOT EXECUTED
    5134:	e59d5030 	ldr	r5, [sp, #48]	; 0x30                          <== NOT EXECUTED
    5138:	e59d0038 	ldr	r0, [sp, #56]	; 0x38                          <== NOT EXECUTED
    513c:	e59d1048 	ldr	r1, [sp, #72]	; 0x48                          <== NOT EXECUTED
    5140:	e5850010 	str	r0, [r5, #16]                                 <== NOT EXECUTED
      data->pages_bad    += sc->pages_bad;                            
      data->seg_erases   += sc->erased;                               
    }                                                                 
  }                                                                   
                                                                      
  data->info_level = fd->info_level;                                  
    5144:	e591306c 	ldr	r3, [r1, #108]	; 0x6c                         <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_MONITORING:                              
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
    5148:	e59d2044 	ldr	r2, [sp, #68]	; 0x44                          <== NOT EXECUTED
      data->pages_bad    += sc->pages_bad;                            
      data->seg_erases   += sc->erased;                               
    }                                                                 
  }                                                                   
                                                                      
  data->info_level = fd->info_level;                                  
    514c:	e585303c 	str	r3, [r5, #60]	; 0x3c                          <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_ERASE_USED:                              
        errno = rtems_fdisk_erase_used (&rtems_flashdisks[minor]);    
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_MONITORING:                              
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
    5150:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    5154:	e5823000 	str	r3, [r2]                                      <== NOT EXECUTED
      default:                                                        
        rtems_blkdev_ioctl (dd, req, argp);                           
        break;                                                        
    }                                                                 
                                                                      
    sc = rtems_semaphore_release (rtems_flashdisks[minor].lock);      
    5158:	e5910064 	ldr	r0, [r1, #100]	; 0x64                         
    515c:	eb001aed 	bl	bd18 <rtems_semaphore_release>                 
    if (sc != RTEMS_SUCCESSFUL)                                       
    5160:	e3500000 	cmp	r0, #0                                        
    5164:	0affff53 	beq	4eb8 <rtems_fdisk_ioctl+0x128>                
    5168:	eaffff4f 	b	4eac <rtems_fdisk_ioctl+0x11c>                  <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
    errno = EIO;                                                      
  else                                                                
  {                                                                   
    errno = 0;                                                        
    switch (req)                                                      
    516c:	e2433001 	sub	r3, r3, #1                                    
    5170:	e1560003 	cmp	r6, r3                                        
    5174:	0a00000e 	beq	51b4 <bsp_section_rodata_size+0x2b0>          
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
        break;                                                        
                                                                      
      default:                                                        
        rtems_blkdev_ioctl (dd, req, argp);                           
    5178:	e1a01006 	mov	r1, r6                                        
    517c:	e1a00008 	mov	r0, r8                                        
    5180:	e1a02005 	mov	r2, r5                                        
    5184:	eb00404b 	bl	152b8 <rtems_blkdev_ioctl>                     
    5188:	e59f0bd8 	ldr	r0, [pc, #3032]	; 5d68 <bsp_section_rodata_size+0xe64>
    518c:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          
    5190:	e5901000 	ldr	r1, [r0]                                      
    5194:	e0811006 	add	r1, r1, r6                                    
        break;                                                        
    5198:	eaffffee 	b	5158 <bsp_section_rodata_size+0x254>            
        errno = rtems_fdisk_monitoring_data (&rtems_flashdisks[minor],
                                             (rtems_fdisk_monitor_data*) argp);
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
    519c:	e59f3bc4 	ldr	r3, [pc, #3012]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    51a0:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    51a4:	e5931000 	ldr	r1, [r3]                                      <== NOT EXECUTED
    51a8:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
    51ac:	e581506c 	str	r5, [r1, #108]	; 0x6c                         <== NOT EXECUTED
        break;                                                        
    51b0:	eaffffe8 	b	5158 <bsp_section_rodata_size+0x254>            <== NOT EXECUTED
          }                                                           
        }                                                             
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_DISK:                              
        errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);    
    51b4:	eb0068f6 	bl	1f594 <__errno>                                <== NOT EXECUTED
    51b8:	e59fcba8 	ldr	ip, [pc, #2984]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    51bc:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    51c0:	e59c5000 	ldr	r5, [ip]                                      <== NOT EXECUTED
    51c4:	e0855006 	add	r5, r5, r6                                    <== NOT EXECUTED
    51c8:	e1a08000 	mov	r8, r0                                        <== NOT EXECUTED
{                                                                     
  uint32_t device;                                                    
  int      ret;                                                       
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "erase-disk");                                
    51cc:	e59f1ba4 	ldr	r1, [pc, #2980]	; 5d78 <bsp_section_rodata_size+0xe74><== NOT EXECUTED
    51d0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    51d4:	ebfffa14 	bl	3a2c <rtems_fdisk_info>                        <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)                   
{                                                                     
  uint32_t device;                                                    
  for (device = 0; device < fd->device_count; device++)               
    51d8:	e5950030 	ldr	r0, [r5, #48]	; 0x30                          <== NOT EXECUTED
    51dc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    51e0:	0a00001a 	beq	5250 <bsp_section_rodata_size+0x34c>          <== NOT EXECUTED
    51e4:	e1a06004 	mov	r6, r4                                        <== NOT EXECUTED
    51e8:	ea000003 	b	51fc <bsp_section_rodata_size+0x2f8>            <== NOT EXECUTED
    51ec:	e5953030 	ldr	r3, [r5, #48]	; 0x30                          <== NOT EXECUTED
    51f0:	e1560003 	cmp	r6, r3                                        <== NOT EXECUTED
    51f4:	e284400c 	add	r4, r4, #12                                   <== NOT EXECUTED
    51f8:	2a000215 	bcs	5a54 <bsp_section_rodata_size+0xb50>          <== NOT EXECUTED
  {                                                                   
    int ret;                                                          
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " erase-flash:%02d", device);               
    51fc:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
    5200:	e59f1b74 	ldr	r1, [pc, #2932]	; 5d7c <bsp_section_rodata_size+0xe78><== NOT EXECUTED
    5204:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    5208:	ebfffa07 	bl	3a2c <rtems_fdisk_info>                        <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_device_erase (const rtems_flashdisk* fd, uint32_t device) 
{                                                                     
  const rtems_fdisk_driver_handlers* ops;                             
  ops = fd->devices[device].descriptor->flash_ops;                    
    520c:	e595302c 	ldr	r3, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    5210:	e0833004 	add	r3, r3, r4                                    <== NOT EXECUTED
    5214:	e5933008 	ldr	r3, [r3, #8]                                  <== NOT EXECUTED
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, " device-erase: %02d", device);             
    5218:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
    521c:	e59f1b5c 	ldr	r1, [pc, #2908]	; 5d80 <bsp_section_rodata_size+0xe7c><== NOT EXECUTED
    5220:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_device_erase (const rtems_flashdisk* fd, uint32_t device) 
{                                                                     
  const rtems_fdisk_driver_handlers* ops;                             
  ops = fd->devices[device].descriptor->flash_ops;                    
    5224:	e5937008 	ldr	r7, [r3, #8]                                  <== NOT EXECUTED
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, " device-erase: %02d", device);             
    5228:	ebfffa23 	bl	3abc <rtems_fdisk_printf>                      <== NOT EXECUTED
#endif                                                                
  return ops->erase_device (fd->devices[device].descriptor, device);  
    522c:	e595302c 	ldr	r3, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    5230:	e0833004 	add	r3, r3, r4                                    <== NOT EXECUTED
    5234:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
    5238:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    523c:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    5240:	e597f014 	ldr	pc, [r7, #20]                                 <== NOT EXECUTED
    rtems_fdisk_info (fd, " erase-flash:%02d", device);               
#endif                                                                
                                                                      
    ret = rtems_fdisk_device_erase (fd, device);                      
                                                                      
    if (ret != 0)                                                     
    5244:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
 */                                                                   
static int                                                            
rtems_fdisk_erase_flash (const rtems_flashdisk* fd)                   
{                                                                     
  uint32_t device;                                                    
  for (device = 0; device < fd->device_count; device++)               
    5248:	e2866001 	add	r6, r6, #1                                    <== NOT EXECUTED
    rtems_fdisk_info (fd, " erase-flash:%02d", device);               
#endif                                                                
                                                                      
    ret = rtems_fdisk_device_erase (fd, device);                      
                                                                      
    if (ret != 0)                                                     
    524c:	0affffe6 	beq	51ec <bsp_section_rodata_size+0x2e8>          <== NOT EXECUTED
          }                                                           
        }                                                             
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_ERASE_DISK:                              
        errno = rtems_fdisk_erase_disk (&rtems_flashdisks[minor]);    
    5250:	e59fcb10 	ldr	ip, [pc, #2832]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    5254:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    5258:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
    525c:	e5880000 	str	r0, [r8]                                      <== NOT EXECUTED
    5260:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
        break;                                                        
    5264:	eaffffbb 	b	5158 <bsp_section_rodata_size+0x254>            <== NOT EXECUTED
                                                                      
      case RTEMS_FDISK_IOCTL_COMPACT:                                 
        errno = rtems_fdisk_compact (&rtems_flashdisks[minor]);       
    5268:	eb0068c9 	bl	1f594 <__errno>                                <== NOT EXECUTED
    526c:	e59fcaf4 	ldr	ip, [pc, #2804]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    5270:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    5274:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    5278:	e59c0000 	ldr	r0, [ip]                                      <== NOT EXECUTED
    527c:	e0800006 	add	r0, r0, r6                                    <== NOT EXECUTED
    5280:	ebfffd31 	bl	474c <rtems_fdisk_compact>                     <== NOT EXECUTED
    5284:	e59fcadc 	ldr	ip, [pc, #2780]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    5288:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
    528c:	e5840000 	str	r0, [r4]                                      <== NOT EXECUTED
    5290:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
        break;                                                        
    5294:	eaffffaf 	b	5158 <bsp_section_rodata_size+0x254>            <== NOT EXECUTED
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
    5298:	eb0068bd 	bl	1f594 <__errno>                                
    529c:	e59fcac4 	ldr	ip, [pc, #2756]	; 5d68 <bsp_section_rodata_size+0xe64>
    52a0:	e59c2000 	ldr	r2, [ip]                                      
    52a4:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
    52a8:	e082600c 	add	r6, r2, ip                                    
 */                                                                   
static int                                                            
rtems_fdisk_print_status (rtems_flashdisk* fd)                        
{                                                                     
#if RTEMS_FDISK_TRACE                                                 
  uint32_t current_info_level = fd->info_level;                       
    52ac:	e596c06c 	ldr	ip, [r6, #108]	; 0x6c                         
    52b0:	e58dc044 	str	ip, [sp, #68]	; 0x44                          
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
                                                                      
  rtems_fdisk_printf (fd,                                             
    52b4:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
    52b8:	e58d0040 	str	r0, [sp, #64]	; 0x40                          
  uint32_t current_info_level = fd->info_level;                       
  uint32_t total;                                                     
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
    52bc:	e3a00003 	mov	r0, #3                                        
                                                                      
  rtems_fdisk_printf (fd,                                             
    52c0:	e5963004 	ldr	r3, [r6, #4]                                  
    52c4:	e792200c 	ldr	r2, [r2, ip]                                  
    52c8:	e59f1ab4 	ldr	r1, [pc, #2740]	; 5d84 <bsp_section_rodata_size+0xe80>
  uint32_t current_info_level = fd->info_level;                       
  uint32_t total;                                                     
  uint32_t count;                                                     
  uint32_t device;                                                    
                                                                      
  fd->info_level = 3;                                                 
    52cc:	e586006c 	str	r0, [r6, #108]	; 0x6c                         
                                                                      
  rtems_fdisk_printf (fd,                                             
    52d0:	e1a00006 	mov	r0, r6                                        
    52d4:	ebfff9f8 	bl	3abc <rtems_fdisk_printf>                      
                      "Flash Disk Driver Status : %d.%d", fd->major, fd->minor);
                                                                      
  rtems_fdisk_printf (fd, "Block count\t%d", fd->block_count);        
    52d8:	e59f1aa8 	ldr	r1, [pc, #2728]	; 5d88 <bsp_section_rodata_size+0xe84>
    52dc:	e596201c 	ldr	r2, [r6, #28]                                 
    52e0:	e1a00006 	mov	r0, r6                                        
    52e4:	ebfff9f4 	bl	3abc <rtems_fdisk_printf>                      
  rtems_fdisk_printf (fd, "Unavail blocks\t%d", fd->unavail_blocks);  
    52e8:	e59f1a9c 	ldr	r1, [pc, #2716]	; 5d8c <bsp_section_rodata_size+0xe88>
    52ec:	e5962020 	ldr	r2, [r6, #32]                                 
    52f0:	e1a00006 	mov	r0, r6                                        
    52f4:	ebfff9f0 	bl	3abc <rtems_fdisk_printf>                      
  rtems_fdisk_printf (fd, "Starvation threshold\t%d", fd->starvation_threshold);
    52f8:	e59f1a90 	ldr	r1, [pc, #2704]	; 5d90 <bsp_section_rodata_size+0xe8c>
    52fc:	e5962024 	ldr	r2, [r6, #36]	; 0x24                          
    5300:	e1a00006 	mov	r0, r6                                        
    5304:	ebfff9ec 	bl	3abc <rtems_fdisk_printf>                      
  rtems_fdisk_printf (fd, "Starvations\t%d", fd->starvations);        
    5308:	e1a00006 	mov	r0, r6                                        
    530c:	e59f1a80 	ldr	r1, [pc, #2688]	; 5d94 <bsp_section_rodata_size+0xe90>
    5310:	e5962070 	ldr	r2, [r6, #112]	; 0x70                         
    5314:	ebfff9e8 	bl	3abc <rtems_fdisk_printf>                      
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    5318:	e5963034 	ldr	r3, [r6, #52]	; 0x34                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    531c:	e3530000 	cmp	r3, #0                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    5320:	01a04003 	moveq	r4, r3                                      
                                                                      
  while (sc)                                                          
    5324:	0a000003 	beq	5338 <bsp_section_rodata_size+0x434>          
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    5328:	e5933000 	ldr	r3, [r3]                                      
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    532c:	e3530000 	cmp	r3, #0                                        
  {                                                                   
    count++;                                                          
    5330:	e2844001 	add	r4, r4, #1                                    
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5334:	1afffffb 	bne	5328 <bsp_section_rodata_size+0x424>          
  rtems_fdisk_printf (fd, "Unavail blocks\t%d", fd->unavail_blocks);  
  rtems_fdisk_printf (fd, "Starvation threshold\t%d", fd->starvation_threshold);
  rtems_fdisk_printf (fd, "Starvations\t%d", fd->starvations);        
  count = rtems_fdisk_segment_count_queue (&fd->available);           
  total = count;                                                      
  rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",               
    5338:	e596303c 	ldr	r3, [r6, #60]	; 0x3c                          
    533c:	e1a00006 	mov	r0, r6                                        
    5340:	e59f1a50 	ldr	r1, [pc, #2640]	; 5d98 <bsp_section_rodata_size+0xe94>
    5344:	e1a02004 	mov	r2, r4                                        
    5348:	ebfff9db 	bl	3abc <rtems_fdisk_printf>                      
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    534c:	e5963040 	ldr	r3, [r6, #64]	; 0x40                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5350:	e3530000 	cmp	r3, #0                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    5354:	01a0c003 	moveq	ip, r3                                      
                                                                      
  while (sc)                                                          
    5358:	0a000004 	beq	5370 <bsp_section_rodata_size+0x46c>          
    535c:	e3a0c000 	mov	ip, #0                                        
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    5360:	e5933000 	ldr	r3, [r3]                                      
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5364:	e3530000 	cmp	r3, #0                                        
  {                                                                   
    count++;                                                          
    5368:	e28cc001 	add	ip, ip, #1                                    
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    536c:	1afffffb 	bne	5360 <bsp_section_rodata_size+0x45c>          
  total = count;                                                      
  rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",               
                      count, rtems_fdisk_segment_queue_count (&fd->available));
  count = rtems_fdisk_segment_count_queue (&fd->used);                
  total += count;                                                     
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
    5370:	e1a0200c 	mov	r2, ip                                        
    5374:	e5963048 	ldr	r3, [r6, #72]	; 0x48                          
    5378:	e1a00006 	mov	r0, r6                                        
    537c:	e59f1a18 	ldr	r1, [pc, #2584]	; 5d9c <bsp_section_rodata_size+0xe98>
  count = rtems_fdisk_segment_count_queue (&fd->available);           
  total = count;                                                      
  rtems_fdisk_printf (fd, "Available queue\t%ld (%ld)",               
                      count, rtems_fdisk_segment_queue_count (&fd->available));
  count = rtems_fdisk_segment_count_queue (&fd->used);                
  total += count;                                                     
    5380:	e08c4004 	add	r4, ip, r4                                    
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
    5384:	ebfff9cc 	bl	3abc <rtems_fdisk_printf>                      
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    5388:	e596304c 	ldr	r3, [r6, #76]	; 0x4c                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    538c:	e3530000 	cmp	r3, #0                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    5390:	01a0c003 	moveq	ip, r3                                      
                                                                      
  while (sc)                                                          
    5394:	0a000004 	beq	53ac <bsp_section_rodata_size+0x4a8>          
    5398:	e3a0c000 	mov	ip, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    539c:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    53a0:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    53a4:	e28cc001 	add	ip, ip, #1                                    <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    53a8:	1afffffb 	bne	539c <bsp_section_rodata_size+0x498>          <== NOT EXECUTED
  total += count;                                                     
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
                      count, rtems_fdisk_segment_queue_count (&fd->used));
  count = rtems_fdisk_segment_count_queue (&fd->erase);               
  total += count;                                                     
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
    53ac:	e1a0200c 	mov	r2, ip                                        
    53b0:	e5963054 	ldr	r3, [r6, #84]	; 0x54                          
    53b4:	e1a00006 	mov	r0, r6                                        
    53b8:	e59f19e0 	ldr	r1, [pc, #2528]	; 5da0 <bsp_section_rodata_size+0xe9c>
  count = rtems_fdisk_segment_count_queue (&fd->used);                
  total += count;                                                     
  rtems_fdisk_printf (fd, "Used queue\t%ld (%ld)",                    
                      count, rtems_fdisk_segment_queue_count (&fd->used));
  count = rtems_fdisk_segment_count_queue (&fd->erase);               
  total += count;                                                     
    53bc:	e084400c 	add	r4, r4, ip                                    
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
    53c0:	ebfff9bd 	bl	3abc <rtems_fdisk_printf>                      
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    53c4:	e5963058 	ldr	r3, [r6, #88]	; 0x58                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    53c8:	e3530000 	cmp	r3, #0                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
    53cc:	01a0c003 	moveq	ip, r3                                      
                                                                      
  while (sc)                                                          
    53d0:	0a000004 	beq	53e8 <bsp_section_rodata_size+0x4e4>          
    53d4:	e3a0c000 	mov	ip, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    53d8:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    53dc:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    count++;                                                          
    53e0:	e28cc001 	add	ip, ip, #1                                    <== NOT EXECUTED
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    53e4:	1afffffb 	bne	53d8 <bsp_section_rodata_size+0x4d4>          <== NOT EXECUTED
  total += count;                                                     
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
                      count, rtems_fdisk_segment_queue_count (&fd->erase));
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
    53e8:	e1a0200c 	mov	r2, ip                                        
    53ec:	e5963060 	ldr	r3, [r6, #96]	; 0x60                          
    53f0:	e1a00006 	mov	r0, r6                                        
    53f4:	e59f19a8 	ldr	r1, [pc, #2472]	; 5da4 <bsp_section_rodata_size+0xea0>
  count = rtems_fdisk_segment_count_queue (&fd->erase);               
  total += count;                                                     
  rtems_fdisk_printf (fd, "Erase queue\t%ld (%ld)",                   
                      count, rtems_fdisk_segment_queue_count (&fd->erase));
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
    53f8:	e084400c 	add	r4, r4, ip                                    
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
    53fc:	ebfff9ae 	bl	3abc <rtems_fdisk_printf>                      
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
    5400:	e5962030 	ldr	r2, [r6, #48]	; 0x30                          
    5404:	e3520000 	cmp	r2, #0                                        
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
    5408:	01a03002 	moveq	r3, r2                                      
  for (device = 0; device < fd->device_count; device++)               
    540c:	0a000008 	beq	5434 <bsp_section_rodata_size+0x530>          
  count = rtems_fdisk_segment_count_queue (&fd->failed);              
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
    5410:	e3a03000 	mov	r3, #0                                        
  for (device = 0; device < fd->device_count; device++)               
    5414:	e596002c 	ldr	r0, [r6, #44]	; 0x2c                          
    5418:	e1a01003 	mov	r1, r3                                        
    count += fd->devices[device].segment_count;                       
    541c:	e590c004 	ldr	ip, [r0, #4]                                  
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
    5420:	e2811001 	add	r1, r1, #1                                    
    5424:	e1510002 	cmp	r1, r2                                        
    count += fd->devices[device].segment_count;                       
    5428:	e083300c 	add	r3, r3, ip                                    
  total += count;                                                     
  rtems_fdisk_printf (fd, "Failed queue\t%ld (%ld)",                  
                      count, rtems_fdisk_segment_queue_count (&fd->failed));
                                                                      
  count = 0;                                                          
  for (device = 0; device < fd->device_count; device++)               
    542c:	e280000c 	add	r0, r0, #12                                   
    5430:	1afffff9 	bne	541c <bsp_section_rodata_size+0x518>          
    count += fd->devices[device].segment_count;                       
                                                                      
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
    5434:	e59f296c 	ldr	r2, [pc, #2412]	; 5da8 <bsp_section_rodata_size+0xea4>
    5438:	e1540003 	cmp	r4, r3                                        
    543c:	e59fc968 	ldr	ip, [pc, #2408]	; 5dac <bsp_section_rodata_size+0xea8>
    5440:	e59f1968 	ldr	r1, [pc, #2408]	; 5db0 <bsp_section_rodata_size+0xeac>
    5444:	01a0c002 	moveq	ip, r2                                      
    5448:	e1a00006 	mov	r0, r6                                        
    544c:	e1a02004 	mov	r2, r4                                        
    5450:	e58dc000 	str	ip, [sp]                                      
    5454:	ebfff998 	bl	3abc <rtems_fdisk_printf>                      
                      total == count ? "ok" : "MISSING");             
                                                                      
  rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);      
    5458:	e1a00006 	mov	r0, r6                                        
    545c:	e59f1950 	ldr	r1, [pc, #2384]	; 5db4 <bsp_section_rodata_size+0xeb0>
    5460:	e5962030 	ldr	r2, [r6, #48]	; 0x30                          
    5464:	ebfff994 	bl	3abc <rtems_fdisk_printf>                      
                                                                      
  for (device = 0; device < fd->device_count; device++)               
    5468:	e5963030 	ldr	r3, [r6, #48]	; 0x30                          
    546c:	e3530000 	cmp	r3, #0                                        
    5470:	0a000084 	beq	5688 <bsp_section_rodata_size+0x784>          
    5474:	e3a0c000 	mov	ip, #0                                        
    5478:	e58dc034 	str	ip, [sp, #52]	; 0x34                          
    547c:	e58dc03c 	str	ip, [sp, #60]	; 0x3c                          
  {                                                                   
    uint32_t block;                                                   
    uint32_t seg;                                                     
                                                                      
    rtems_fdisk_printf (fd, " Device\t\t%ld", device);                
    5480:	e59f1930 	ldr	r1, [pc, #2352]	; 5db8 <bsp_section_rodata_size+0xeb4>
    5484:	e59d203c 	ldr	r2, [sp, #60]	; 0x3c                          
    5488:	e1a00006 	mov	r0, r6                                        
    548c:	ebfff98a 	bl	3abc <rtems_fdisk_printf>                      
    rtems_fdisk_printf (fd, "  Segment count\t%ld",                   
    5490:	e59dc034 	ldr	ip, [sp, #52]	; 0x34                          
    5494:	e596302c 	ldr	r3, [r6, #44]	; 0x2c                          
    5498:	e083300c 	add	r3, r3, ip                                    
    549c:	e5932004 	ldr	r2, [r3, #4]                                  
    54a0:	e1a00006 	mov	r0, r6                                        
    54a4:	e59f1910 	ldr	r1, [pc, #2320]	; 5dbc <bsp_section_rodata_size+0xeb8>
    54a8:	ebfff983 	bl	3abc <rtems_fdisk_printf>                      
                        fd->devices[device].segment_count);           
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    54ac:	e596302c 	ldr	r3, [r6, #44]	; 0x2c                          
    54b0:	e59dc034 	ldr	ip, [sp, #52]	; 0x34                          
    54b4:	e083300c 	add	r3, r3, ip                                    
    54b8:	e5932004 	ldr	r2, [r3, #4]                                  
    54bc:	e3520000 	cmp	r2, #0                                        
    54c0:	0a000067 	beq	5664 <bsp_section_rodata_size+0x760>          
    54c4:	e3a0c000 	mov	ip, #0                                        
    54c8:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
    54cc:	e1a0b00c 	mov	fp, ip                                        
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
    54d0:	e5935000 	ldr	r5, [r3]                                      
    54d4:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    54d8:	e085500c 	add	r5, r5, ip                                    
      uint32_t                 active = 0;                            
      uint32_t                 used = 0;                              
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
    54dc:	e1a00006 	mov	r0, r6                                        
    54e0:	e1a01005 	mov	r1, r5                                        
    54e4:	e28d2060 	add	r2, sp, #96	; 0x60                            
    54e8:	ebfff8fc 	bl	38e0 <rtems_fdisk_queue_status>                
                                                                      
      for (page = 0; page < sc->pages; page++)                        
    54ec:	e5950014 	ldr	r0, [r5, #20]                                 
    54f0:	e3500000 	cmp	r0, #0                                        
    54f4:	0a000088 	beq	571c <bsp_section_rodata_size+0x818>          
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
      uint32_t                 active = 0;                            
      uint32_t                 used = 0;                              
      bool                     is_active = false;                     
    54f8:	e3a08000 	mov	r8, #0                                        
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
    54fc:	e596301c 	ldr	r3, [r6, #28]                                 
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
    5500:	e58d802c 	str	r8, [sp, #44]	; 0x2c                          
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
    5504:	e1a02003 	mov	r2, r3                                        
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
      uint32_t                 active = 0;                            
    5508:	e1a0a008 	mov	sl, r8                                        
      uint32_t                 used = 0;                              
    550c:	e1a09008 	mov	r9, r8                                        
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
    5510:	e1a07008 	mov	r7, r8                                        
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
    5514:	e5951010 	ldr	r1, [r5, #16]                                 
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    5518:	e791c187 	ldr	ip, [r1, r7, lsl #3]                          
    551c:	e37c0001 	cmn	ip, #1                                        
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
    5520:	e0811187 	add	r1, r1, r7, lsl #3                            
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    5524:	0a000075 	beq	5700 <bsp_section_rodata_size+0x7fc>          
 * only set a flag by changing it from 1 to 0.                        
 */                                                                   
static bool                                                           
rtems_fdisk_page_desc_flags_set (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  return (pd->flags & flags) == 0 ? true : false;                     
    5528:	e1d110b2 	ldrh	r1, [r1, #2]                                 
                                                                      
      for (page = 0; page < sc->pages; page++)                        
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
          erased++;                                                   
        else if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
    552c:	e3110001 	tst	r1, #1                                        
    5530:	1a000003 	bne	5544 <bsp_section_rodata_size+0x640>          
                                                  RTEMS_FDISK_PAGE_ACTIVE))
        {                                                             
          if (rtems_fdisk_page_desc_flags_set (&sc->page_descriptors[page],
    5534:	e3110002 	tst	r1, #2                                        
                                               RTEMS_FDISK_PAGE_USED))
            used++;                                                   
    5538:	02899001 	addeq	r9, r9, #1                                  
          else                                                        
          {                                                           
            active++;                                                 
    553c:	128aa001 	addne	sl, sl, #1                                  
            is_active = true;                                         
    5540:	13a08001 	movne	r8, #1                                      
          }                                                           
        }                                                             
                                                                      
        for (block = 0; block < fd->block_count; block++)             
    5544:	e3530000 	cmp	r3, #0                                        
    5548:	0a00001a 	beq	55b8 <bsp_section_rodata_size+0x6b4>          
    554c:	e3a04000 	mov	r4, #0                                        
    5550:	ea000003 	b	5564 <bsp_section_rodata_size+0x660>            
    5554:	e2844001 	add	r4, r4, #1                                    
    5558:	e1540003 	cmp	r4, r3                                        
    555c:	e1a02003 	mov	r2, r3                                        
    5560:	2a000013 	bcs	55b4 <bsp_section_rodata_size+0x6b0>          
        {                                                             
          if ((fd->blocks[block].segment == sc) &&                    
    5564:	e5962018 	ldr	r2, [r6, #24]                                 
    5568:	e7921184 	ldr	r1, [r2, r4, lsl #3]                          
    556c:	e1550001 	cmp	r5, r1                                        
    5570:	e0822184 	add	r2, r2, r4, lsl #3                            
    5574:	1afffff6 	bne	5554 <bsp_section_rodata_size+0x650>          
    5578:	e5922004 	ldr	r2, [r2, #4]                                  
    557c:	e1570002 	cmp	r7, r2                                        
    5580:	1afffff3 	bne	5554 <bsp_section_rodata_size+0x650>          
              (fd->blocks[block].page == page) && !is_active)         
    5584:	e3580000 	cmp	r8, #0                                        
    5588:	1afffff1 	bne	5554 <bsp_section_rodata_size+0x650>          
            rtems_fdisk_printf (fd,                                   
    558c:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
    5590:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
    5594:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    5598:	e59f1820 	ldr	r1, [pc, #2080]	; 5dc0 <bsp_section_rodata_size+0xebc><== NOT EXECUTED
    559c:	ebfff946 	bl	3abc <rtems_fdisk_printf>                      <== NOT EXECUTED
    55a0:	e596301c 	ldr	r3, [r6, #28]                                 <== NOT EXECUTED
            active++;                                                 
            is_active = true;                                         
          }                                                           
        }                                                             
                                                                      
        for (block = 0; block < fd->block_count; block++)             
    55a4:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
    55a8:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    55ac:	e1a02003 	mov	r2, r3                                        <== NOT EXECUTED
    55b0:	3affffeb 	bcc	5564 <bsp_section_rodata_size+0x660>          <== NOT EXECUTED
    55b4:	e5950014 	ldr	r0, [r5, #20]                                 
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
    55b8:	e2877001 	add	r7, r7, #1                                    
    55bc:	e1570000 	cmp	r7, r0                                        
    55c0:	3affffd3 	bcc	5514 <bsp_section_rodata_size+0x610>          
                                page, block);                         
        }                                                             
      }                                                               
                                                                      
      count = 0;                                                      
      for (block = 0; block < fd->block_count; block++)               
    55c4:	e3520000 	cmp	r2, #0                                        
    55c8:	01a0c002 	moveq	ip, r2                                      
    55cc:	0a000008 	beq	55f4 <bsp_section_rodata_size+0x6f0>          
    55d0:	e3a0c000 	mov	ip, #0                                        
    55d4:	e596e018 	ldr	lr, [r6, #24]                                 
    55d8:	e1a0300c 	mov	r3, ip                                        
      {                                                               
        if (fd->blocks[block].segment == sc)                          
    55dc:	e79e1183 	ldr	r1, [lr, r3, lsl #3]                          
                                page, block);                         
        }                                                             
      }                                                               
                                                                      
      count = 0;                                                      
      for (block = 0; block < fd->block_count; block++)               
    55e0:	e2833001 	add	r3, r3, #1                                    
      {                                                               
        if (fd->blocks[block].segment == sc)                          
    55e4:	e1550001 	cmp	r5, r1                                        
          count++;                                                    
    55e8:	028cc001 	addeq	ip, ip, #1                                  
                                page, block);                         
        }                                                             
      }                                                               
                                                                      
      count = 0;                                                      
      for (block = 0; block < fd->block_count; block++)               
    55ec:	e1530002 	cmp	r3, r2                                        
    55f0:	1afffff9 	bne	55dc <bsp_section_rodata_size+0x6d8>          
                          " u:%3ld/%3ld e:%3ld/%3ld br:%ld",          
                          seg, queues,                                
                          sc->pages, sc->pages_active, active,        
                          sc->pages_used, used, erased,               
                          sc->pages - (sc->pages_active +             
                                       sc->pages_used + sc->pages_bad),
    55f4:	e285201c 	add	r2, r5, #28                                   
    55f8:	e892000c 	ldm	r2, {r2, r3}                                  
      {                                                               
        if (fd->blocks[block].segment == sc)                          
          count++;                                                    
      }                                                               
                                                                      
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
    55fc:	e59d102c 	ldr	r1, [sp, #44]	; 0x2c                          
    5600:	e88d0405 	stm	sp, {r0, r2, sl}                              
    5604:	e58d300c 	str	r3, [sp, #12]                                 
    5608:	e58d9010 	str	r9, [sp, #16]                                 
    560c:	e58d1014 	str	r1, [sp, #20]                                 
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
    5610:	e5951024 	ldr	r1, [r5, #36]	; 0x24                          
    5614:	e0822001 	add	r2, r2, r1                                    
    5618:	e0823003 	add	r3, r2, r3                                    
      {                                                               
        if (fd->blocks[block].segment == sc)                          
          count++;                                                    
      }                                                               
                                                                      
      rtems_fdisk_printf (fd, "  %3ld %s p:%3ld a:%3ld/%3ld" \        
    561c:	e063e000 	rsb	lr, r3, r0                                    
    5620:	e1a0200b 	mov	r2, fp                                        
    5624:	e28d3060 	add	r3, sp, #96	; 0x60                            
    5628:	e1a00006 	mov	r0, r6                                        
    562c:	e59f1790 	ldr	r1, [pc, #1936]	; 5dc4 <bsp_section_rodata_size+0xec0>
    5630:	e58dc01c 	str	ip, [sp, #28]                                 
    5634:	e58de018 	str	lr, [sp, #24]                                 
    5638:	ebfff91f 	bl	3abc <rtems_fdisk_printf>                      
                                                                      
    rtems_fdisk_printf (fd, " Device\t\t%ld", device);                
    rtems_fdisk_printf (fd, "  Segment count\t%ld",                   
                        fd->devices[device].segment_count);           
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    563c:	e59dc034 	ldr	ip, [sp, #52]	; 0x34                          
    5640:	e596302c 	ldr	r3, [r6, #44]	; 0x2c                          
    5644:	e083300c 	add	r3, r3, ip                                    
    5648:	e5932004 	ldr	r2, [r3, #4]                                  
    564c:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    5650:	e28bb001 	add	fp, fp, #1                                    
    5654:	e28cc030 	add	ip, ip, #48	; 0x30                            
    5658:	e15b0002 	cmp	fp, r2                                        
    565c:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
    5660:	3affff9a 	bcc	54d0 <bsp_section_rodata_size+0x5cc>          
  rtems_fdisk_printf (fd, "Queue total\t%ld of %ld, %s", total, count,
                      total == count ? "ok" : "MISSING");             
                                                                      
  rtems_fdisk_printf (fd, "Device count\t%d", fd->device_count);      
                                                                      
  for (device = 0; device < fd->device_count; device++)               
    5664:	e59dc03c 	ldr	ip, [sp, #60]	; 0x3c                          
    5668:	e5963030 	ldr	r3, [r6, #48]	; 0x30                          
    566c:	e28cc001 	add	ip, ip, #1                                    
    5670:	e58dc03c 	str	ip, [sp, #60]	; 0x3c                          
    5674:	e15c0003 	cmp	ip, r3                                        
    5678:	e59dc034 	ldr	ip, [sp, #52]	; 0x34                          
    567c:	e28cc00c 	add	ip, ip, #12                                   
    5680:	e58dc034 	str	ip, [sp, #52]	; 0x34                          
    5684:	3affff7d 	bcc	5480 <bsp_section_rodata_size+0x57c>          
                          count);                                     
    }                                                                 
  }                                                                   
                                                                      
  {                                                                   
    rtems_fdisk_segment_ctl* sc = fd->used.head;                      
    5688:	e5964040 	ldr	r4, [r6, #64]	; 0x40                          
    int count = 0;                                                    
    rtems_fdisk_printf (fd, "Used List:");                            
    568c:	e1a00006 	mov	r0, r6                                        
    5690:	e59f1730 	ldr	r1, [pc, #1840]	; 5dc8 <bsp_section_rodata_size+0xec4>
    5694:	ebfff908 	bl	3abc <rtems_fdisk_printf>                      
    while (sc)                                                        
    5698:	e3540000 	cmp	r4, #0                                        
    569c:	0a00000d 	beq	56d8 <bsp_section_rodata_size+0x7d4>          
    56a0:	e3a05000 	mov	r5, #0                                        
    {                                                                 
      rtems_fdisk_printf (fd, "  %3d %02d:%03d u:%3ld",               
    56a4:	e594200c 	ldr	r2, [r4, #12]                                 
    56a8:	e5943008 	ldr	r3, [r4, #8]                                  
    56ac:	e58d2000 	str	r2, [sp]                                      
    56b0:	e594c020 	ldr	ip, [r4, #32]                                 
    56b4:	e1a02005 	mov	r2, r5                                        
    56b8:	e1a00006 	mov	r0, r6                                        
    56bc:	e59f1708 	ldr	r1, [pc, #1800]	; 5dcc <bsp_section_rodata_size+0xec8>
    56c0:	e58dc004 	str	ip, [sp, #4]                                  
    56c4:	ebfff8fc 	bl	3abc <rtems_fdisk_printf>                      
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
    56c8:	e5944000 	ldr	r4, [r4]                                      
                                                                      
  {                                                                   
    rtems_fdisk_segment_ctl* sc = fd->used.head;                      
    int count = 0;                                                    
    rtems_fdisk_printf (fd, "Used List:");                            
    while (sc)                                                        
    56cc:	e3540000 	cmp	r4, #0                                        
    {                                                                 
      rtems_fdisk_printf (fd, "  %3d %02d:%03d u:%3ld",               
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
      count++;                                                        
    56d0:	e2855001 	add	r5, r5, #1                                    
                                                                      
  {                                                                   
    rtems_fdisk_segment_ctl* sc = fd->used.head;                      
    int count = 0;                                                    
    rtems_fdisk_printf (fd, "Used List:");                            
    while (sc)                                                        
    56d4:	1afffff2 	bne	56a4 <bsp_section_rodata_size+0x7a0>          
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
      count++;                                                        
    }                                                                 
  }                                                                   
  fd->info_level = current_info_level;                                
    56d8:	e59dc044 	ldr	ip, [sp, #68]	; 0x44                          
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
    56dc:	e59f0684 	ldr	r0, [pc, #1668]	; 5d68 <bsp_section_rodata_size+0xe64>
                          count, sc->device, sc->segment, sc->pages_used);
      sc = sc->next;                                                  
      count++;                                                        
    }                                                                 
  }                                                                   
  fd->info_level = current_info_level;                                
    56e0:	e586c06c 	str	ip, [r6, #108]	; 0x6c                         
      case RTEMS_FDISK_IOCTL_INFO_LEVEL:                              
        rtems_flashdisks[minor].info_level = (uintptr_t) argp;        
        break;                                                        
                                                                      
      case RTEMS_FDISK_IOCTL_PRINT_STATUS:                            
        errno = rtems_fdisk_print_status (&rtems_flashdisks[minor]);  
    56e4:	e5901000 	ldr	r1, [r0]                                      
    56e8:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          
    56ec:	e59dc040 	ldr	ip, [sp, #64]	; 0x40                          
    56f0:	e3a03000 	mov	r3, #0                                        
    56f4:	e0811006 	add	r1, r1, r6                                    
    56f8:	e58c3000 	str	r3, [ip]                                      
        break;                                                        
    56fc:	eafffe95 	b	5158 <bsp_section_rodata_size+0x254>            
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    5700:	e591c004 	ldr	ip, [r1, #4]                                  
    5704:	e37c0001 	cmn	ip, #1                                        
    5708:	1affff86 	bne	5528 <bsp_section_rodata_size+0x624>          
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
      {                                                               
        if (rtems_fdisk_page_desc_erased (&sc->page_descriptors[page]))
          erased++;                                                   
    570c:	e59dc02c 	ldr	ip, [sp, #44]	; 0x2c                          
    5710:	e28cc001 	add	ip, ip, #1                                    
    5714:	e58dc02c 	str	ip, [sp, #44]	; 0x2c                          
    5718:	eaffff89 	b	5544 <bsp_section_rodata_size+0x640>            
      bool                     is_active = false;                     
      char                     queues[5];                             
                                                                      
      rtems_fdisk_queue_status (fd, sc, queues);                      
                                                                      
      for (page = 0; page < sc->pages; page++)                        
    571c:	e596201c 	ldr	r2, [r6, #28]                                 <== NOT EXECUTED
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
      uint32_t                 active = 0;                            
    5720:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
      uint32_t                 used = 0;                              
    5724:	e1a09000 	mov	r9, r0                                        <== NOT EXECUTED
                                                                      
    for (seg = 0; seg < fd->devices[device].segment_count; seg++)     
    {                                                                 
      rtems_fdisk_segment_ctl* sc = &fd->devices[device].segments[seg];
      uint32_t                 page;                                  
      uint32_t                 erased = 0;                            
    5728:	e58d002c 	str	r0, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    572c:	eaffffa4 	b	55c4 <bsp_section_rodata_size+0x6c0>            <== NOT EXECUTED
    {                                                                 
      case RTEMS_BLKIO_REQUEST:                                       
        if ((minor >= rtems_flashdisk_count) ||                       
            (rtems_flashdisks[minor].device_count == 0))              
        {                                                             
          errno = ENODEV;                                             
    5730:	eb006797 	bl	1f594 <__errno>                                <== NOT EXECUTED
    5734:	e59f262c 	ldr	r2, [pc, #1580]	; 5d68 <bsp_section_rodata_size+0xe64><== NOT EXECUTED
    5738:	e59d6038 	ldr	r6, [sp, #56]	; 0x38                          <== NOT EXECUTED
    573c:	e5921000 	ldr	r1, [r2]                                      <== NOT EXECUTED
    5740:	e3a03013 	mov	r3, #19                                       <== NOT EXECUTED
    5744:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    5748:	e0811006 	add	r1, r1, r6                                    <== NOT EXECUTED
    574c:	eafffe81 	b	5158 <bsp_section_rodata_size+0x254>            <== NOT EXECUTED
        else                                                          
        {                                                             
          switch (r->req)                                             
          {                                                           
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
    5750:	eb00678f 	bl	1f594 <__errno>                                
    5754:	e59fc60c 	ldr	ip, [pc, #1548]	; 5d68 <bsp_section_rodata_size+0xe64>
    5758:	e59c6000 	ldr	r6, [ip]                                      
    575c:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
    5760:	e58d003c 	str	r0, [sp, #60]	; 0x3c                          
 * @retval 0 Always.  The request done callback contains the status.  
 */                                                                   
static int                                                            
rtems_fdisk_read (rtems_flashdisk* fd, rtems_blkdev_request* req)     
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
    5764:	e5954010 	ldr	r4, [r5, #16]                                 
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
    5768:	e58d7030 	str	r7, [sp, #48]	; 0x30                          
    576c:	e58d502c 	str	r5, [sp, #44]	; 0x2c                          
 * @retval 0 Always.  The request done callback contains the status.  
 */                                                                   
static int                                                            
rtems_fdisk_read (rtems_flashdisk* fd, rtems_blkdev_request* req)     
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
    5770:	e2859018 	add	r9, r5, #24                                   
        else                                                          
        {                                                             
          switch (r->req)                                             
          {                                                           
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
    5774:	e086600c 	add	r6, r6, ip                                    
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
    5778:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    577c:	e15c0004 	cmp	ip, r4                                        
    5780:	2a0000b0 	bcs	5a48 <bsp_section_rodata_size+0xb44>          
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    5784:	e5990004 	ldr	r0, [r9, #4]                                  
    5788:	e5961014 	ldr	r1, [r6, #20]                                 
    578c:	ebfff0c5 	bl	1aa8 <__aeabi_uidiv>                           
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    5790:	e3500000 	cmp	r0, #0                                        
    5794:	e58d0040 	str	r0, [sp, #64]	; 0x40                          
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    5798:	e5995008 	ldr	r5, [r9, #8]                                  
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    579c:	0a000095 	beq	59f8 <bsp_section_rodata_size+0xaf4>          
    57a0:	e3a0b000 	mov	fp, #0                                        
    {                                                                 
      ret = rtems_fdisk_read_block (fd, sg->block + b, data);         
    57a4:	e5997000 	ldr	r7, [r9]                                      
    57a8:	e08b7007 	add	r7, fp, r7                                    
  rtems_fdisk_block_ctl*   bc;                                        
  rtems_fdisk_segment_ctl* sc;                                        
  rtems_fdisk_page_desc*   pd;                                        
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "read-block:%d", block);                      
    57ac:	e1a00006 	mov	r0, r6                                        
    57b0:	e59f1618 	ldr	r1, [pc, #1560]	; 5dd0 <bsp_section_rodata_size+0xecc>
    57b4:	e1a02007 	mov	r2, r7                                        
    57b8:	ebfff89b 	bl	3a2c <rtems_fdisk_info>                        
                                                                      
  /*                                                                  
   * Broken out to allow info messages when testing.                  
   */                                                                 
                                                                      
  if (block >= (fd->block_count - fd->unavail_blocks))                
    57bc:	e286001c 	add	r0, r6, #28                                   
    57c0:	e8900009 	ldm	r0, {r0, r3}                                  
    57c4:	e0403003 	sub	r3, r0, r3                                    
    57c8:	e1570003 	cmp	r7, r3                                        
    57cc:	2a000074 	bcs	59a4 <bsp_section_rodata_size+0xaa0>          
  {                                                                   
    rtems_fdisk_error ("read-block: block out of range: %d", block);  
    return EIO;                                                       
  }                                                                   
                                                                      
  bc = &fd->blocks[block];                                            
    57d0:	e5968018 	ldr	r8, [r6, #24]                                 
                                                                      
  if (!bc->segment)                                                   
    57d4:	e7984187 	ldr	r4, [r8, r7, lsl #3]                          
    57d8:	e3540000 	cmp	r4, #0                                        
  {                                                                   
    rtems_fdisk_error ("read-block: block out of range: %d", block);  
    return EIO;                                                       
  }                                                                   
                                                                      
  bc = &fd->blocks[block];                                            
    57dc:	e0888187 	add	r8, r8, r7, lsl #3                            
                                                                      
  if (!bc->segment)                                                   
    57e0:	0a000074 	beq	59b8 <bsp_section_rodata_size+0xab4>          
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    57e4:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
    57e8:	e594101c 	ldr	r1, [r4, #28]                                 
    57ec:	e58d3048 	str	r3, [sp, #72]	; 0x48                          
    57f0:	e5943000 	ldr	r3, [r4]                                      
    57f4:	e58d104c 	str	r1, [sp, #76]	; 0x4c                          
    57f8:	e59f1600 	ldr	r1, [pc, #1536]	; 5e00 <bsp_section_rodata_size+0xefc>
    57fc:	e3530000 	cmp	r3, #0                                        
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
    5800:	e5982004 	ldr	r2, [r8, #4]                                  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    5804:	e594e014 	ldr	lr, [r4, #20]                                 
    5808:	e59f05f4 	ldr	r0, [pc, #1524]	; 5e04 <bsp_section_rodata_size+0xf00>
    580c:	11a00001 	movne	r0, r1                                      
    5810:	e594100c 	ldr	r1, [r4, #12]                                 
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
    5814:	e594c010 	ldr	ip, [r4, #16]                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    5818:	e594a020 	ldr	sl, [r4, #32]                                 
    581c:	e5943008 	ldr	r3, [r4, #8]                                  
    5820:	e58d0044 	str	r0, [sp, #68]	; 0x44                          
    5824:	e88d4006 	stm	sp, {r1, r2, lr}                              
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
    5828:	e1a00182 	lsl	r0, r2, #3                                    
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    582c:	e59d204c 	ldr	r2, [sp, #76]	; 0x4c                          
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
    5830:	e58d0034 	str	r0, [sp, #52]	; 0x34                          
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    5834:	e59d1044 	ldr	r1, [sp, #68]	; 0x44                          
    5838:	e59d0048 	ldr	r0, [sp, #72]	; 0x48                          
    583c:	e58d200c 	str	r2, [sp, #12]                                 
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
    5840:	e59d2034 	ldr	r2, [sp, #52]	; 0x34                          
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    5844:	e58da010 	str	sl, [sp, #16]                                 
    5848:	e58d0014 	str	r0, [sp, #20]                                 
    584c:	e58d1018 	str	r1, [sp, #24]                                 
    memset (buffer, 0xff, fd->block_size);                            
    return 0;                                                         
  }                                                                   
                                                                      
  sc = fd->blocks[block].segment;                                     
  pd = &sc->page_descriptors[bc->page];                               
    5850:	e08ca002 	add	sl, ip, r2                                    
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd,                                               
    5854:	e1da20b2 	ldrh	r2, [sl, #2]                                 
    5858:	e59d0034 	ldr	r0, [sp, #52]	; 0x34                          
    585c:	e58d201c 	str	r2, [sp, #28]                                 
    5860:	e19c20b0 	ldrh	r2, [ip, r0]                                 
    5864:	e58d2020 	str	r2, [sp, #32]                                 
    5868:	e59ae004 	ldr	lr, [sl, #4]                                  
    586c:	e1a00006 	mov	r0, r6                                        
    5870:	e59f155c 	ldr	r1, [pc, #1372]	; 5dd4 <bsp_section_rodata_size+0xed0>
    5874:	e1a02007 	mov	r2, r7                                        
    5878:	e58de024 	str	lr, [sp, #36]	; 0x24                          
    587c:	e58dc028 	str	ip, [sp, #40]	; 0x28                          
    5880:	ebfff869 	bl	3a2c <rtems_fdisk_info>                        
 * only set a flag by changing it from 1 to 0.                        
 */                                                                   
static bool                                                           
rtems_fdisk_page_desc_flags_set (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  return (pd->flags & flags) == 0 ? true : false;                     
    5884:	e1da30b2 	ldrh	r3, [sl, #2]                                 
                    sc->pages, sc->pages_active, sc->pages_used, sc->pages_bad,
                    sc->next ? "set" : "null",                        
                    pd->flags, pd->crc, pd->block);                   
#endif                                                                
                                                                      
  if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))  
    5888:	e3130001 	tst	r3, #1                                        
    588c:	1a000015 	bne	58e8 <bsp_section_rodata_size+0x9e4>          
  {                                                                   
    if (rtems_fdisk_page_desc_flags_clear (pd, RTEMS_FDISK_PAGE_USED))
    5890:	e3130002 	tst	r3, #2                                        
    5894:	1a00001c 	bne	590c <bsp_section_rodata_size+0xa08>          
      rtems_fdisk_error ("read-block: crc failure: %d: buffer:%04x page:%04x",
                         block, cs, pd->crc);                         
    }                                                                 
    else                                                              
    {                                                                 
      rtems_fdisk_error ("read-block: block points to used page: %d: %d-%d-%d",
    5898:	e2842008 	add	r2, r4, #8                                    <== NOT EXECUTED
    589c:	e598c004 	ldr	ip, [r8, #4]                                  <== NOT EXECUTED
    58a0:	e892000c 	ldm	r2, {r2, r3}                                  <== NOT EXECUTED
    58a4:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    58a8:	e59f0528 	ldr	r0, [pc, #1320]	; 5dd8 <bsp_section_rodata_size+0xed4><== NOT EXECUTED
    58ac:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    58b0:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    58b4:	ebfff95d 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
    58b8:	e3a0101b 	mov	r1, #27                                       <== NOT EXECUTED
static inline void rtems_blkdev_request_done(                         
  rtems_blkdev_request *req,                                          
  rtems_status_code status                                            
)                                                                     
{                                                                     
  (*req->done)(req, status);                                          
    58bc:	e1a00005 	mov	r0, r5                                        
    58c0:	e1a0e00f 	mov	lr, pc                                        
    58c4:	e595f004 	ldr	pc, [r5, #4]                                  
        else                                                          
        {                                                             
          switch (r->req)                                             
          {                                                           
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
    58c8:	e59f0498 	ldr	r0, [pc, #1176]	; 5d68 <bsp_section_rodata_size+0xe64>
    58cc:	e59d603c 	ldr	r6, [sp, #60]	; 0x3c                          
    58d0:	e5901000 	ldr	r1, [r0]                                      
    58d4:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
    58d8:	e3a03000 	mov	r3, #0                                        
    58dc:	e5863000 	str	r3, [r6]                                      
    58e0:	e081100c 	add	r1, r1, ip                                    
              break;                                                  
    58e4:	eafffe1b 	b	5158 <bsp_section_rodata_size+0x254>            
                         block, sc->device, sc->segment, bc->page);   
    }                                                                 
  }                                                                   
  else                                                                
  {                                                                   
    rtems_fdisk_error ("read-block: block page not active: %d: %d-%d-%d",
    58e8:	e2842008 	add	r2, r4, #8                                    <== NOT EXECUTED
    58ec:	e598c004 	ldr	ip, [r8, #4]                                  <== NOT EXECUTED
    58f0:	e892000c 	ldm	r2, {r2, r3}                                  <== NOT EXECUTED
    58f4:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    58f8:	e59f04dc 	ldr	r0, [pc, #1244]	; 5ddc <bsp_section_rodata_size+0xed8><== NOT EXECUTED
    58fc:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    5900:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    5904:	ebfff949 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    5908:	eaffffea 	b	58b8 <bsp_section_rodata_size+0x9b4>            <== NOT EXECUTED
                                                                      
      /*                                                              
       * We use the segment page offset not the page number used in the
       * driver. This skips the page descriptors.                     
       */                                                             
      int ret = rtems_fdisk_seg_read_page (fd, sc,                    
    590c:	e5983004 	ldr	r3, [r8, #4]                                  
    5910:	e5942018 	ldr	r2, [r4, #24]                                 
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
                               page * fd->block_size, buffer, fd->block_size);
    5914:	e596e014 	ldr	lr, [r6, #20]                                 
                                                                      
      /*                                                              
       * We use the segment page offset not the page number used in the
       * driver. This skips the page descriptors.                     
       */                                                             
      int ret = rtems_fdisk_seg_read_page (fd, sc,                    
    5918:	e0822003 	add	r2, r2, r3                                    
rtems_fdisk_seg_read_page (const rtems_flashdisk*   fd,               
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
    591c:	e1a00006 	mov	r0, r6                                        
    5920:	e1a03005 	mov	r3, r5                                        
    5924:	e1a01004 	mov	r1, r4                                        
    5928:	e002029e 	mul	r2, lr, r2                                    
    592c:	e58de000 	str	lr, [sp]                                      
    5930:	ebfff885 	bl	3b4c <rtems_fdisk_seg_read>                    
       * driver. This skips the page descriptors.                     
       */                                                             
      int ret = rtems_fdisk_seg_read_page (fd, sc,                    
                                           bc->page + sc->pages_desc, buffer);
                                                                      
      if (ret)                                                        
    5934:	e2503000 	subs	r3, r0, #0                                   
    5938:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
    593c:	1a000032 	bne	5a0c <bsp_section_rodata_size+0xb08>          
                          strerror (ret), ret);                       
#endif                                                                
        return ret;                                                   
      }                                                               
                                                                      
      cs = rtems_fdisk_page_checksum (buffer, fd->block_size);        
    5940:	e5961014 	ldr	r1, [r6, #20]                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    5944:	e3510000 	cmp	r1, #0                                        
 * Calculate the checksum of a page in a segment.                     
 */                                                                   
static uint16_t                                                       
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
    5948:	059f24ac 	ldreq	r2, [pc, #1196]	; 5dfc <bsp_section_rodata_size+0xef8>
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    594c:	0a00000b 	beq	5980 <bsp_section_rodata_size+0xa7c>          
    5950:	e59f2410 	ldr	r2, [pc, #1040]	; 5d68 <bsp_section_rodata_size+0xe64>
    5954:	e592e008 	ldr	lr, [r2, #8]                                  
 * Calculate the checksum of a page in a segment.                     
 */                                                                   
static uint16_t                                                       
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
    5958:	e59f249c 	ldr	r2, [pc, #1180]	; 5dfc <bsp_section_rodata_size+0xef8>
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
    595c:	e0850001 	add	r0, r5, r1                                    
    5960:	e1a03005 	mov	r3, r5                                        
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
    5964:	e4d34001 	ldrb	r4, [r3], #1                                 
    5968:	e0242002 	eor	r2, r4, r2                                    
    596c:	e20220ff 	and	r2, r2, #255	; 0xff                           
    5970:	e1a02082 	lsl	r2, r2, #1                                    
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    5974:	e1530000 	cmp	r3, r0                                        
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
    5978:	e19e20b2 	ldrh	r2, [lr, r2]                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    597c:	1afffff8 	bne	5964 <bsp_section_rodata_size+0xa60>          
        return ret;                                                   
      }                                                               
                                                                      
      cs = rtems_fdisk_page_checksum (buffer, fd->block_size);        
                                                                      
      if (cs == pd->crc)                                              
    5980:	e59d0034 	ldr	r0, [sp, #52]	; 0x34                          
    5984:	e19c30b0 	ldrh	r3, [ip, r0]                                 
    5988:	e1520003 	cmp	r2, r3                                        
    598c:	0a000012 	beq	59dc <bsp_section_rodata_size+0xad8>          
        return 0;                                                     
                                                                      
      rtems_fdisk_error ("read-block: crc failure: %d: buffer:%04x page:%04x",
    5990:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    5994:	e59f0444 	ldr	r0, [pc, #1092]	; 5de0 <bsp_section_rodata_size+0xedc><== NOT EXECUTED
    5998:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    599c:	ebfff923 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    59a0:	eaffffc4 	b	58b8 <bsp_section_rodata_size+0x9b4>            <== NOT EXECUTED
   * Broken out to allow info messages when testing.                  
   */                                                                 
                                                                      
  if (block >= (fd->block_count - fd->unavail_blocks))                
  {                                                                   
    rtems_fdisk_error ("read-block: block out of range: %d", block);  
    59a4:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    59a8:	e59f0434 	ldr	r0, [pc, #1076]	; 5de4 <bsp_section_rodata_size+0xee0><== NOT EXECUTED
    59ac:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    59b0:	ebfff91e 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    59b4:	eaffffbf 	b	58b8 <bsp_section_rodata_size+0x9b4>            <== NOT EXECUTED
  bc = &fd->blocks[block];                                            
                                                                      
  if (!bc->segment)                                                   
  {                                                                   
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, "read-block: no segment mapping: %d", block);
    59b8:	e59f1428 	ldr	r1, [pc, #1064]	; 5de8 <bsp_section_rodata_size+0xee4>
    59bc:	e1a02007 	mov	r2, r7                                        
    59c0:	e1a00006 	mov	r0, r6                                        
    59c4:	ebfff818 	bl	3a2c <rtems_fdisk_info>                        
#endif                                                                
    memset (buffer, 0xff, fd->block_size);                            
    59c8:	e3a010ff 	mov	r1, #255	; 0xff                               
    59cc:	e1a00005 	mov	r0, r5                                        
    59d0:	e5962014 	ldr	r2, [r6, #20]                                 
    59d4:	eb006a41 	bl	202e0 <memset>                                 
    59d8:	e5961014 	ldr	r1, [r6, #20]                                 
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    59dc:	e59dc040 	ldr	ip, [sp, #64]	; 0x40                          
    59e0:	e28bb001 	add	fp, fp, #1                                    
    59e4:	e15b000c 	cmp	fp, ip                                        
    59e8:	e0855001 	add	r5, r5, r1                                    
    59ec:	1affff6c 	bne	57a4 <bsp_section_rodata_size+0x8a0>          
    59f0:	e59dc02c 	ldr	ip, [sp, #44]	; 0x2c                          
    59f4:	e59c4010 	ldr	r4, [ip, #16]                                 
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
    59f8:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    59fc:	e28cc001 	add	ip, ip, #1                                    
    5a00:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
    5a04:	e2899010 	add	r9, r9, #16                                   
    5a08:	eaffff5a 	b	5778 <bsp_section_rodata_size+0x874>            
    5a0c:	e1a0b003 	mov	fp, r3                                        <== NOT EXECUTED
                                           bc->page + sc->pages_desc, buffer);
                                                                      
      if (ret)                                                        
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd,                                         
    5a10:	e5947008 	ldr	r7, [r4, #8]                                  <== NOT EXECUTED
    5a14:	e5988004 	ldr	r8, [r8, #4]                                  <== NOT EXECUTED
    5a18:	e594400c 	ldr	r4, [r4, #12]                                 <== NOT EXECUTED
    5a1c:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    5a20:	eb006f4d 	bl	2175c <strerror>                               <== NOT EXECUTED
    5a24:	e59f13c0 	ldr	r1, [pc, #960]	; 5dec <bsp_section_rodata_size+0xee8><== NOT EXECUTED
    5a28:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
    5a2c:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
    5a30:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    5a34:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
    5a38:	e58d8000 	str	r8, [sp]                                      <== NOT EXECUTED
    5a3c:	e58db008 	str	fp, [sp, #8]                                  <== NOT EXECUTED
    5a40:	ebfff7f9 	bl	3a2c <rtems_fdisk_info>                        <== NOT EXECUTED
    5a44:	eaffff9b 	b	58b8 <bsp_section_rodata_size+0x9b4>            <== NOT EXECUTED
    5a48:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
    5a4c:	e3a01000 	mov	r1, #0                                        
    5a50:	eaffff99 	b	58bc <bsp_section_rodata_size+0x9b8>            
                                                                      
  ret = rtems_fdisk_erase_flash (fd);                                 
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    5a54:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    5a58:	0afffdfc 	beq	5250 <bsp_section_rodata_size+0x34c>          <== NOT EXECUTED
    {                                                                 
      if (!fd->devices[device].segments)                              
    5a5c:	e595302c 	ldr	r3, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    5a60:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
    5a64:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    5a68:	13a0600c 	movne	r6, #12                                     <== NOT EXECUTED
    5a6c:	11a04000 	movne	r4, r0                                      <== NOT EXECUTED
    5a70:	1a000008 	bne	5a98 <bsp_section_rodata_size+0xb94>          <== NOT EXECUTED
    5a74:	ea0001ce 	b	61b4 <bsp_section_rodata_size+0x12b0>           <== NOT EXECUTED
                                                                      
  ret = rtems_fdisk_erase_flash (fd);                                 
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    5a78:	e5953030 	ldr	r3, [r5, #48]	; 0x30                          <== NOT EXECUTED
    5a7c:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    5a80:	2afffdf2 	bcs	5250 <bsp_section_rodata_size+0x34c>          <== NOT EXECUTED
    {                                                                 
      if (!fd->devices[device].segments)                              
    5a84:	e595302c 	ldr	r3, [r5, #44]	; 0x2c                          <== NOT EXECUTED
    5a88:	e7933006 	ldr	r3, [r3, r6]                                  <== NOT EXECUTED
    5a8c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    5a90:	e286600c 	add	r6, r6, #12                                   <== NOT EXECUTED
    5a94:	0a0001c6 	beq	61b4 <bsp_section_rodata_size+0x12b0>         <== NOT EXECUTED
        return ENOMEM;                                                
                                                                      
      ret = rtems_fdisk_recover_block_mappings (fd);                  
    5a98:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    5a9c:	ebfffbd2 	bl	49ec <rtems_fdisk_recover_block_mappings>      <== NOT EXECUTED
      if (ret)                                                        
    5aa0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                                                                      
  ret = rtems_fdisk_erase_flash (fd);                                 
                                                                      
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    5aa4:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
    {                                                                 
      if (!fd->devices[device].segments)                              
        return ENOMEM;                                                
                                                                      
      ret = rtems_fdisk_recover_block_mappings (fd);                  
      if (ret)                                                        
    5aa8:	0afffff2 	beq	5a78 <bsp_section_rodata_size+0xb74>          <== NOT EXECUTED
    5aac:	eafffde7 	b	5250 <bsp_section_rodata_size+0x34c>            <== NOT EXECUTED
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
    5ab0:	eb0066b7 	bl	1f594 <__errno>                                
    5ab4:	e58d0058 	str	r0, [sp, #88]	; 0x58                          
    5ab8:	e59f02a8 	ldr	r0, [pc, #680]	; 5d68 <bsp_section_rodata_size+0xe64>
    5abc:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
    5ac0:	e5904000 	ldr	r4, [r0]                                      
    5ac4:	e084400c 	add	r4, r4, ip                                    
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
    5ac8:	e285c028 	add	ip, r5, #40	; 0x28                            
    5acc:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
    5ad0:	e3a0c001 	mov	ip, #1                                        
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
    5ad4:	e5956010 	ldr	r6, [r5, #16]                                 
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
    5ad8:	e58dc040 	str	ip, [sp, #64]	; 0x40                          
    5adc:	e58d502c 	str	r5, [sp, #44]	; 0x2c                          
{                                                                     
  rtems_blkdev_sg_buffer* sg = req->bufs;                             
  uint32_t                buf;                                        
  int                     ret = 0;                                    
                                                                      
  for (buf = 0; (ret == 0) && (buf < req->bufnum); buf++, sg++)       
    5ae0:	e59dc040 	ldr	ip, [sp, #64]	; 0x40                          
    5ae4:	e24c3001 	sub	r3, ip, #1                                    
    5ae8:	e1530006 	cmp	r3, r6                                        
    5aec:	2a0001ad 	bcs	61a8 <bsp_section_rodata_size+0x12a4>         
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    5af0:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    5af4:	e5941014 	ldr	r1, [r4, #20]                                 
    5af8:	e51c000c 	ldr	r0, [ip, #-12]                                
    5afc:	ebffefe9 	bl	1aa8 <__aeabi_uidiv>                           
    data = sg->buffer;                                                
    5b00:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    5b04:	e3500000 	cmp	r0, #0                                        
    5b08:	e58d005c 	str	r0, [sp, #92]	; 0x5c                          
  {                                                                   
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    5b0c:	e51cb008 	ldr	fp, [ip, #-8]                                 
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    5b10:	0a000139 	beq	5ffc <bsp_section_rodata_size+0x10f8>         
    5b14:	e3a06000 	mov	r6, #0                                        
    5b18:	e58d6034 	str	r6, [sp, #52]	; 0x34                          
    {                                                                 
      ret = rtems_fdisk_write_block (fd, sg->block + b, data);        
    5b1c:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    5b20:	e59d6034 	ldr	r6, [sp, #52]	; 0x34                          
    5b24:	e51ca010 	ldr	sl, [ip, #-16]                                
    5b28:	e086a00a 	add	sl, r6, sl                                    
  rtems_fdisk_page_desc*   pd;                                        
  uint32_t                 page;                                      
  int                      ret;                                       
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, "write-block:%d", block);                     
    5b2c:	e1a00004 	mov	r0, r4                                        
    5b30:	e59f12b8 	ldr	r1, [pc, #696]	; 5df0 <bsp_section_rodata_size+0xeec>
    5b34:	e1a0200a 	mov	r2, sl                                        
    5b38:	ebfff7bb 	bl	3a2c <rtems_fdisk_info>                        
                                                                      
  /*                                                                  
   * Broken out to allow info messages when testing.                  
   */                                                                 
                                                                      
  if (block >= (fd->block_count - fd->unavail_blocks))                
    5b3c:	e284c01c 	add	ip, r4, #28                                   
    5b40:	e89c1008 	ldm	ip, {r3, ip}                                  
    5b44:	e043300c 	sub	r3, r3, ip                                    
    5b48:	e15a0003 	cmp	sl, r3                                        
    5b4c:	2a000131 	bcs	6018 <bsp_section_rodata_size+0x1114>         
  {                                                                   
    rtems_fdisk_error ("write-block: block out of range: %d", block); 
    return EIO;                                                       
  }                                                                   
                                                                      
  bc = &fd->blocks[block];                                            
    5b50:	e5946018 	ldr	r6, [r4, #24]                                 
                                                                      
  /*                                                                  
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
    5b54:	e796518a 	ldr	r5, [r6, sl, lsl #3]                          
    5b58:	e3550000 	cmp	r5, #0                                        
  {                                                                   
    rtems_fdisk_error ("write-block: block out of range: %d", block); 
    return EIO;                                                       
  }                                                                   
                                                                      
  bc = &fd->blocks[block];                                            
    5b5c:	e58d6044 	str	r6, [sp, #68]	; 0x44                          
    5b60:	e086818a 	add	r8, r6, sl, lsl #3                            
                                                                      
  /*                                                                  
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
    5b64:	0a000061 	beq	5cf0 <bsp_section_rodata_size+0xdec>          
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
    5b68:	e598c004 	ldr	ip, [r8, #4]                                  
    5b6c:	e5956010 	ldr	r6, [r5, #16]                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
    5b70:	e2852008 	add	r2, r5, #8                                    
    5b74:	e892000c 	ldm	r2, {r2, r3}                                  
    5b78:	e59f1274 	ldr	r1, [pc, #628]	; 5df4 <bsp_section_rodata_size+0xef0>
    5b7c:	e1a00004 	mov	r0, r4                                        
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
    5b80:	e58dc048 	str	ip, [sp, #72]	; 0x48                          
    5b84:	e58d6050 	str	r6, [sp, #80]	; 0x50                          
                                                                      
#if RTEMS_FDISK_TRACE                                                 
    rtems_fdisk_info (fd, " write:%02d-%03d-%03d: flag used",         
    5b88:	e58dc000 	str	ip, [sp]                                      
    5b8c:	ebfff7a6 	bl	3a2c <rtems_fdisk_info>                        
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
    5b90:	e5952018 	ldr	r2, [r5, #24]                                 
    5b94:	e5983004 	ldr	r3, [r8, #4]                                  
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
                                 page * fd->block_size, buffer, fd->block_size);
    5b98:	e594c014 	ldr	ip, [r4, #20]                                 
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
    5b9c:	e0823003 	add	r3, r2, r3                                    
                             uint32_t               device,           
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
    5ba0:	e006039c 	mul	r6, ip, r3                                    
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
    5ba4:	e5957008 	ldr	r7, [r5, #8]                                  
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    5ba8:	e594302c 	ldr	r3, [r4, #44]	; 0x2c                          
    5bac:	e0872087 	add	r2, r7, r7, lsl #1                            
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
    5bb0:	e595900c 	ldr	r9, [r5, #12]                                 
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    5bb4:	e7931102 	ldr	r1, [r3, r2, lsl #2]                          
    5bb8:	e0833102 	add	r3, r3, r2, lsl #2                            
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
                                 page * fd->block_size, buffer, fd->block_size);
    5bbc:	e58dc03c 	str	ip, [sp, #60]	; 0x3c                          
                        uint32_t               size)                  
{                                                                     
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
    5bc0:	e593c008 	ldr	ip, [r3, #8]                                  
                             uint32_t               device,           
                             uint32_t               segment,          
                             uint32_t               page,             
                             const void*            buffer)           
{                                                                     
  return rtems_fdisk_seg_verify (fd, device, segment,                 
    5bc4:	e58d604c 	str	r6, [sp, #76]	; 0x4c                          
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    5bc8:	e0890089 	add	r0, r9, r9, lsl #1                            
                        uint32_t               size)                  
{                                                                     
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
    5bcc:	e59c6008 	ldr	r6, [ip, #8]                                  
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    5bd0:	e0811200 	add	r1, r1, r0, lsl #4                            
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
    5bd4:	e59dc04c 	ldr	ip, [sp, #76]	; 0x4c                          
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    5bd8:	e5911004 	ldr	r1, [r1, #4]                                  
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
    5bdc:	e58dc000 	str	ip, [sp]                                      
    5be0:	e59dc03c 	ldr	ip, [sp, #60]	; 0x3c                          
static const rtems_fdisk_segment_desc*                                
rtems_fdisk_seg_descriptor (const rtems_flashdisk* fd,                
                            uint32_t               device,            
                            uint32_t               segment)           
{                                                                     
  return fd->devices[device].segments[segment].descriptor;            
    5be4:	e58d1054 	str	r1, [sp, #84]	; 0x54                          
  const rtems_fdisk_segment_desc*    sd;                              
  const rtems_fdisk_driver_handlers* ops;                             
  sd  = rtems_fdisk_seg_descriptor (fd, device, segment);             
  ops = fd->devices[device].descriptor->flash_ops;                    
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-verify: %02d-%03d: o=%08x s=%d",     
    5be8:	e1a02007 	mov	r2, r7                                        
    5bec:	e59f1204 	ldr	r1, [pc, #516]	; 5df8 <bsp_section_rodata_size+0xef4>
    5bf0:	e1a03009 	mov	r3, r9                                        
    5bf4:	e1a00004 	mov	r0, r4                                        
    5bf8:	e58dc004 	str	ip, [sp, #4]                                  
    5bfc:	ebfff7ae 	bl	3abc <rtems_fdisk_printf>                      
                      device, segment, offset, size);                 
#endif                                                                
  return ops->verify (sd, device, segment, offset, buffer, size);     
    5c00:	e59dc03c 	ldr	ip, [sp, #60]	; 0x3c                          
    5c04:	e58db000 	str	fp, [sp]                                      
    5c08:	e58dc004 	str	ip, [sp, #4]                                  
    5c0c:	e59d0054 	ldr	r0, [sp, #84]	; 0x54                          
    5c10:	e1a01007 	mov	r1, r7                                        
    5c14:	e1a02009 	mov	r2, r9                                        
    5c18:	e59d304c 	ldr	r3, [sp, #76]	; 0x4c                          
    5c1c:	e1a0e00f 	mov	lr, pc                                        
    5c20:	e596f00c 	ldr	pc, [r6, #12]                                 
#endif                                                                
                                                                      
    /*                                                                
     * The page exists in flash so see if the page has been changed.  
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
    5c24:	e3500000 	cmp	r0, #0                                        
    5c28:	0a000115 	beq	6084 <bsp_section_rodata_size+0x1180>         
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
    5c2c:	e59d6050 	ldr	r6, [sp, #80]	; 0x50                          
    5c30:	e59dc048 	ldr	ip, [sp, #72]	; 0x48                          
     * matches the flash device.                                      
     */                                                               
                                                                      
    rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);      
                                                                      
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
    5c34:	e5989004 	ldr	r9, [r8, #4]                                  
   * Does the page exist in flash ?                                   
   */                                                                 
  if (bc->segment)                                                    
  {                                                                   
    sc = bc->segment;                                                 
    pd = &sc->page_descriptors[bc->page];                             
    5c38:	e086718c 	add	r7, r6, ip, lsl #3                            
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5c3c:	e1d720b2 	ldrh	r2, [r7, #2]                                 
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
                     ((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
    5c40:	e5941008 	ldr	r1, [r4, #8]                                  
rtems_fdisk_seg_write_page_desc_flags (const rtems_flashdisk*       fd,
                                       rtems_fdisk_segment_ctl*     sc,
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
    5c44:	e1a03189 	lsl	r3, r9, #3                                    
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5c48:	e3c22002 	bic	r2, r2, #2                                    
                                       rtems_fdisk_segment_ctl*     sc,
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
                     ((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
    5c4c:	e2833002 	add	r3, r3, #2                                    
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
    5c50:	e3110008 	tst	r1, #8                                        
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5c54:	e1c720b2 	strh	r2, [r7, #2]                                 
                                       rtems_fdisk_segment_ctl*     sc,
                                       uint32_t                     page,
                                       const rtems_fdisk_page_desc* page_desc)
{                                                                     
  uint32_t offset = ((page * sizeof (rtems_fdisk_page_desc)) +        
                     ((uint8_t*) &page_desc->flags) - ((uint8_t*) page_desc));
    5c58:	e58d303c 	str	r3, [sp, #60]	; 0x3c                          
  if ((fd->flags & RTEMS_FDISK_BLANK_CHECK_BEFORE_WRITE))             
    5c5c:	0a00000d 	beq	5c98 <bsp_section_rodata_size+0xd94>          
  {                                                                   
    uint16_t flash_flags;                                             
    int      ret;                                                     
    ret = rtems_fdisk_seg_read (fd, sc, offset,                       
    5c60:	e1a02003 	mov	r2, r3                                        
    5c64:	e3a0c002 	mov	ip, #2                                        
    5c68:	e1a00004 	mov	r0, r4                                        
    5c6c:	e1a01005 	mov	r1, r5                                        
    5c70:	e28d3066 	add	r3, sp, #102	; 0x66                           
    5c74:	e58dc000 	str	ip, [sp]                                      
    5c78:	ebfff7b3 	bl	3b4c <rtems_fdisk_seg_read>                    
                                &flash_flags, sizeof (flash_flags));  
    if (ret)                                                          
    5c7c:	e2506000 	subs	r6, r0, #0                                   
    5c80:	1a00012e 	bne	6140 <bsp_section_rodata_size+0x123c>         
      return ret;                                                     
    if ((flash_flags & page_desc->flags) != page_desc->flags)         
    5c84:	e1d7c0b2 	ldrh	ip, [r7, #2]                                 
    5c88:	e1dde6b6 	ldrh	lr, [sp, #102]	; 0x66                        
    5c8c:	e00e300c 	and	r3, lr, ip                                    
    5c90:	e15c0003 	cmp	ip, r3                                        
    5c94:	1a000148 	bne	61bc <bsp_section_rodata_size+0x12b8>         
                         sc->device, sc->segment, page,               
                         flash_flags, page_desc->flags);              
      return ret;                                                     
    }                                                                 
  }                                                                   
  return rtems_fdisk_seg_write (fd, sc, offset,                       
    5c98:	e3a0c002 	mov	ip, #2                                        
    5c9c:	e1a00004 	mov	r0, r4                                        
    5ca0:	e1a01005 	mov	r1, r5                                        
    5ca4:	e59d203c 	ldr	r2, [sp, #60]	; 0x3c                          
    5ca8:	e2873002 	add	r3, r7, #2                                    
    5cac:	e58dc000 	str	ip, [sp]                                      
    5cb0:	ebfff7e5 	bl	3c4c <rtems_fdisk_seg_write>                   
                                                                      
    rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);      
                                                                      
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    5cb4:	e2506000 	subs	r6, r0, #0                                   
    5cb8:	1a000120 	bne	6140 <bsp_section_rodata_size+0x123c>         
#endif                                                                
    }                                                                 
    else                                                              
    {                                                                 
      sc->pages_active--;                                             
      sc->pages_used++;                                               
    5cbc:	e285201c 	add	r2, r5, #28                                   
    5cc0:	e892000c 	ldm	r2, {r2, r3}                                  
                        strerror (ret), ret);                         
#endif                                                                
    }                                                                 
    else                                                              
    {                                                                 
      sc->pages_active--;                                             
    5cc4:	e2422001 	sub	r2, r2, #1                                    
      sc->pages_used++;                                               
    5cc8:	e2833001 	add	r3, r3, #1                                    
                        strerror (ret), ret);                         
#endif                                                                
    }                                                                 
    else                                                              
    {                                                                 
      sc->pages_active--;                                             
    5ccc:	e585201c 	str	r2, [r5, #28]                                 
      sc->pages_used++;                                               
    5cd0:	e5853020 	str	r3, [r5, #32]                                 
    /*                                                                
     * If possible reuse this segment. This will mean the segment     
     * needs to be removed from the available list and placed         
     * back if space is still available.                              
     */                                                               
    rtems_fdisk_queue_segment (fd, sc);                               
    5cd4:	e1a00004 	mov	r0, r4                                        
    5cd8:	e1a01005 	mov	r1, r5                                        
    5cdc:	ebfff8eb 	bl	4090 <rtems_fdisk_queue_segment>               
    /*                                                                
     * If no background compacting then compact in the forground.     
     * If we compact we ignore the error as there is little we        
     * can do from here. The write may will work.                     
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT) == 0)            
    5ce0:	e5943008 	ldr	r3, [r4, #8]                                  
    5ce4:	e3130002 	tst	r3, #2                                        
      rtems_fdisk_compact (fd);                                       
    5ce8:	01a00004 	moveq	r0, r4                                      
    5cec:	0bfffa96 	bleq	474c <rtems_fdisk_compact>                   
 * Count the number of elements on the list.                          
 */                                                                   
static uint32_t                                                       
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
    5cf0:	e5946034 	ldr	r6, [r4, #52]	; 0x34                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5cf4:	e3560000 	cmp	r6, #0                                        
    5cf8:	0a000104 	beq	6110 <bsp_section_rodata_size+0x120c>         
    5cfc:	e1a03006 	mov	r3, r6                                        
    5d00:	e3a02000 	mov	r2, #0                                        
  {                                                                   
    count++;                                                          
    sc = sc->next;                                                    
    5d04:	e5933000 	ldr	r3, [r3]                                      
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5d08:	e3530000 	cmp	r3, #0                                        
  {                                                                   
    count++;                                                          
    5d0c:	e2822001 	add	r2, r2, #1                                    
rtems_fdisk_segment_count_queue (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  rtems_fdisk_segment_ctl* sc = queue->head;                          
  uint32_t                 count = 0;                                 
                                                                      
  while (sc)                                                          
    5d10:	1afffffb 	bne	5d04 <bsp_section_rodata_size+0xe00>          
  /*                                                                  
   * Is it time to compact the disk ?                                 
   *                                                                  
   * We override the background compaction configruation.             
   */                                                                 
  if (rtems_fdisk_segment_count_queue (&fd->available) <=             
    5d14:	e5943010 	ldr	r3, [r4, #16]                                 
    5d18:	e1530002 	cmp	r3, r2                                        
    5d1c:	2a0000fb 	bcs	6110 <bsp_section_rodata_size+0x120c>         
{                                                                     
  if (queue->head)                                                    
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    5d20:	e5963000 	ldr	r3, [r6]                                      
    if (!queue->head)                                                 
    5d24:	e3530000 	cmp	r3, #0                                        
      queue->tail = 0;                                                
    5d28:	05843038 	streq	r3, [r4, #56]	; 0x38                        
{                                                                     
  if (queue->head)                                                    
  {                                                                   
    rtems_fdisk_segment_ctl* sc = queue->head;                        
                                                                      
    queue->head = sc->next;                                           
    5d2c:	e5843034 	str	r3, [r4, #52]	; 0x34                          
    if (!queue->head)                                                 
      queue->tail = 0;                                                
                                                                      
    queue->count--;                                                   
    5d30:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          
    5d34:	e2433001 	sub	r3, r3, #1                                    
    5d38:	e584303c 	str	r3, [r4, #60]	; 0x3c                          
                                                                      
    sc->next = 0;                                                     
    5d3c:	e3a03000 	mov	r3, #0                                        
    5d40:	e5863000 	str	r3, [r6]                                      
      return ENOSPC;                                                  
    }                                                                 
  }                                                                   
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
    5d44:	e594306c 	ldr	r3, [r4, #108]	; 0x6c                         
    5d48:	e3530002 	cmp	r3, #2                                        
    5d4c:	8a0000e1 	bhi	60d8 <bsp_section_rodata_size+0x11d4>         
   * Find the next avaliable page in the segment.                     
   */                                                                 
                                                                      
  pd = sc->page_descriptors;                                          
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
    5d50:	e596e014 	ldr	lr, [r6, #20]                                 
    5d54:	e35e0000 	cmp	lr, #0                                        
                                                                      
  /*                                                                  
   * Find the next avaliable page in the segment.                     
   */                                                                 
                                                                      
  pd = sc->page_descriptors;                                          
    5d58:	e5965010 	ldr	r5, [r6, #16]                                 
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
    5d5c:	0a0000bd 	beq	6058 <bsp_section_rodata_size+0x1154>         
    5d60:	e3a07000 	mov	r7, #0                                        
    5d64:	ea000036 	b	5e44 <bsp_section_rodata_size+0xf40>            
    5d68:	00044ccc 	.word	0x00044ccc                                  
    5d6c:	20004283 	.word	0x20004283                                  <== NOT EXECUTED
    5d70:	20004285 	.word	0x20004285                                  <== NOT EXECUTED
    5d74:	c0184201 	.word	0xc0184201                                  <== NOT EXECUTED
    5d78:	000304e8 	.word	0x000304e8                                  <== NOT EXECUTED
    5d7c:	000304f4 	.word	0x000304f4                                  <== NOT EXECUTED
    5d80:	00030508 	.word	0x00030508                                  <== NOT EXECUTED
    5d84:	0003051c 	.word	0x0003051c                                  <== NOT EXECUTED
    5d88:	00030540 	.word	0x00030540                                  <== NOT EXECUTED
    5d8c:	00030550 	.word	0x00030550                                  <== NOT EXECUTED
    5d90:	00030564 	.word	0x00030564                                  <== NOT EXECUTED
    5d94:	0003057c 	.word	0x0003057c                                  <== NOT EXECUTED
    5d98:	0003058c 	.word	0x0003058c                                  <== NOT EXECUTED
    5d9c:	000305a8 	.word	0x000305a8                                  <== NOT EXECUTED
    5da0:	000305c0 	.word	0x000305c0                                  <== NOT EXECUTED
    5da4:	000305d8 	.word	0x000305d8                                  <== NOT EXECUTED
    5da8:	000300f4 	.word	0x000300f4                                  <== NOT EXECUTED
    5dac:	000300f8 	.word	0x000300f8                                  <== NOT EXECUTED
    5db0:	000305f0 	.word	0x000305f0                                  <== NOT EXECUTED
    5db4:	0003060c 	.word	0x0003060c                                  <== NOT EXECUTED
    5db8:	0003061c 	.word	0x0003061c                                  <== NOT EXECUTED
    5dbc:	0003062c 	.word	0x0003062c                                  <== NOT EXECUTED
    5dc0:	00030640 	.word	0x00030640                                  <== NOT EXECUTED
    5dc4:	00030670 	.word	0x00030670                                  <== NOT EXECUTED
    5dc8:	000306ac 	.word	0x000306ac                                  <== NOT EXECUTED
    5dcc:	000306b8 	.word	0x000306b8                                  <== NOT EXECUTED
    5dd0:	00030100 	.word	0x00030100                                  <== NOT EXECUTED
    5dd4:	00030158 	.word	0x00030158                                  <== NOT EXECUTED
    5dd8:	0003020c 	.word	0x0003020c                                  <== NOT EXECUTED
    5ddc:	00030240 	.word	0x00030240                                  <== NOT EXECUTED
    5de0:	000301d8 	.word	0x000301d8                                  <== NOT EXECUTED
    5de4:	00030110 	.word	0x00030110                                  <== NOT EXECUTED
    5de8:	00030134 	.word	0x00030134                                  <== NOT EXECUTED
    5dec:	000301a0 	.word	0x000301a0                                  <== NOT EXECUTED
    5df0:	00030270 	.word	0x00030270                                  <== NOT EXECUTED
    5df4:	000302a4 	.word	0x000302a4                                  <== NOT EXECUTED
    5df8:	000302c8 	.word	0x000302c8                                  <== NOT EXECUTED
    5dfc:	0000ffff 	.word	0x0000ffff                                  <== NOT EXECUTED
    5e00:	0002fd30 	.word	0x0002fd30                                  <== NOT EXECUTED
    5e04:	0002fd34 	.word	0x0002fd34                                  <== NOT EXECUTED
    5e08:	000303f0 	.word	0x000303f0                                  <== NOT EXECUTED
    5e0c:	00030440 	.word	0x00030440                                  <== NOT EXECUTED
    5e10:	00030280 	.word	0x00030280                                  <== NOT EXECUTED
    5e14:	00044ccc 	.word	0x00044ccc                                  <== NOT EXECUTED
    5e18:	000304b4 	.word	0x000304b4                                  <== NOT EXECUTED
    5e1c:	000302f0 	.word	0x000302f0                                  <== NOT EXECUTED
    5e20:	000303c8 	.word	0x000303c8                                  <== NOT EXECUTED
    5e24:	000303a8 	.word	0x000303a8                                  <== NOT EXECUTED
    5e28:	0003036c 	.word	0x0003036c                                  <== NOT EXECUTED
    5e2c:	00030478 	.word	0x00030478                                  <== NOT EXECUTED
    5e30:	00030320 	.word	0x00030320                                  <== NOT EXECUTED
    5e34:	e2877001 	add	r7, r7, #1                                    
    5e38:	e157000e 	cmp	r7, lr                                        
    5e3c:	e2855008 	add	r5, r5, #8                                    
    5e40:	0a000084 	beq	6058 <bsp_section_rodata_size+0x1154>         
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    5e44:	e5953000 	ldr	r3, [r5]                                      
    5e48:	e3730001 	cmn	r3, #1                                        
    5e4c:	1afffff8 	bne	5e34 <bsp_section_rodata_size+0xf30>          
    5e50:	e5953004 	ldr	r3, [r5, #4]                                  
    5e54:	e3730001 	cmn	r3, #1                                        
    5e58:	1afffff5 	bne	5e34 <bsp_section_rodata_size+0xf30>          
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
  {                                                                   
    if (rtems_fdisk_page_desc_erased (pd))                            
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
    5e5c:	e5940014 	ldr	r0, [r4, #20]                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    5e60:	e3500000 	cmp	r0, #0                                        
    5e64:	051f9070 	ldreq	r9, [pc, #-112]	; 5dfc <bsp_section_rodata_size+0xef8>
 * Calculate the checksum of a page in a segment.                     
 */                                                                   
static uint16_t                                                       
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
    5e68:	01a03009 	moveq	r3, r9                                      
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    5e6c:	0a00000c 	beq	5ea4 <bsp_section_rodata_size+0xfa0>          
    5e70:	e51f1064 	ldr	r1, [pc, #-100]	; 5e14 <bsp_section_rodata_size+0xf10>
    5e74:	e591c008 	ldr	ip, [r1, #8]                                  
 * Calculate the checksum of a page in a segment.                     
 */                                                                   
static uint16_t                                                       
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
    5e78:	e2833801 	add	r3, r3, #65536	; 0x10000                      
 * @param req IOCTL request code.                                     
 * @param argp IOCTL argument.                                        
 * @retval The IOCTL return value                                     
 */                                                                   
static int                                                            
rtems_fdisk_ioctl (rtems_disk_device *dd, uint32_t req, void* argp)   
    5e7c:	e08b0000 	add	r0, fp, r0                                    
    5e80:	e1a0200b 	mov	r2, fp                                        
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
    5e84:	e4d21001 	ldrb	r1, [r2], #1                                 
    5e88:	e0213003 	eor	r3, r1, r3                                    
    5e8c:	e20330ff 	and	r3, r3, #255	; 0xff                           
    5e90:	e1a03083 	lsl	r3, r3, #1                                    
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    5e94:	e1520000 	cmp	r2, r0                                        
    cs = rtems_fdisk_calc_crc16 (cs, *buffer);                        
    5e98:	e19c30b3 	ldrh	r3, [ip, r3]                                 
rtems_fdisk_page_checksum (const uint8_t* buffer, uint32_t page_size) 
{                                                                     
  uint16_t cs = 0xffff;                                               
  uint32_t i;                                                         
                                                                      
  for (i = 0; i < page_size; i++, buffer++)                           
    5e9c:	1afffff8 	bne	5e84 <bsp_section_rodata_size+0xf80>          
    5ea0:	e1a09003 	mov	r9, r3                                        
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
    5ea4:	e596c000 	ldr	ip, [r6]                                      
    5ea8:	e596101c 	ldr	r1, [r6, #28]                                 
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5eac:	e1d520b2 	ldrh	r2, [r5, #2]                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
    5eb0:	e35c0000 	cmp	ip, #0                                        
    5eb4:	e58d104c 	str	r1, [sp, #76]	; 0x4c                          
    if (rtems_fdisk_page_desc_erased (pd))                            
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
      pd->block = block;                                              
                                                                      
      bc->segment = sc;                                               
    5eb8:	e59dc044 	ldr	ip, [sp, #68]	; 0x44                          
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
    5ebc:	e5961020 	ldr	r1, [r6, #32]                                 
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5ec0:	e3c22001 	bic	r2, r2, #1                                    
    5ec4:	e58d203c 	str	r2, [sp, #60]	; 0x3c                          
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
    5ec8:	e5960008 	ldr	r0, [r6, #8]                                  
    5ecc:	e58d1050 	str	r1, [sp, #80]	; 0x50                          
    5ed0:	e5961024 	ldr	r1, [r6, #36]	; 0x24                          
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
  {                                                                   
    if (rtems_fdisk_page_desc_erased (pd))                            
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
    5ed4:	e1c530b0 	strh	r3, [r5]                                     
      pd->block = block;                                              
    5ed8:	e585a004 	str	sl, [r5, #4]                                  
                                                                      
      bc->segment = sc;                                               
    5edc:	e78c618a 	str	r6, [ip, sl, lsl #3]                          
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5ee0:	e59dc03c 	ldr	ip, [sp, #60]	; 0x3c                          
    {                                                                 
      pd->crc   = rtems_fdisk_page_checksum (buffer, fd->block_size); 
      pd->block = block;                                              
                                                                      
      bc->segment = sc;                                               
      bc->page    = page;                                             
    5ee4:	e5887004 	str	r7, [r8, #4]                                  
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    5ee8:	e1c5c0b2 	strh	ip, [r5, #2]                                 
      bc->page    = page;                                             
                                                                      
      rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_ACTIVE);  
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%d=>%02d-%03d-%03d: write: " \    
    5eec:	e596c00c 	ldr	ip, [r6, #12]                                 
    5ef0:	e58dc000 	str	ip, [sp]                                      
    5ef4:	e59dc04c 	ldr	ip, [sp, #76]	; 0x4c                          
    5ef8:	e51f3100 	ldr	r3, [pc, #-256]	; 5e00 <bsp_section_rodata_size+0xefc>
    5efc:	e58dc00c 	str	ip, [sp, #12]                                 
    5f00:	e59dc050 	ldr	ip, [sp, #80]	; 0x50                          
    5f04:	e58d1054 	str	r1, [sp, #84]	; 0x54                          
    5f08:	e51f210c 	ldr	r2, [pc, #-268]	; 5e04 <bsp_section_rodata_size+0xf00>
    5f0c:	e58dc010 	str	ip, [sp, #16]                                 
    5f10:	11a02003 	movne	r2, r3                                      
    5f14:	e59dc054 	ldr	ip, [sp, #84]	; 0x54                          
    5f18:	e58d2048 	str	r2, [sp, #72]	; 0x48                          
    5f1c:	e58dc014 	str	ip, [sp, #20]                                 
    5f20:	e59dc048 	ldr	ip, [sp, #72]	; 0x48                          
    5f24:	e58dc018 	str	ip, [sp, #24]                                 
    5f28:	e59dc03c 	ldr	ip, [sp, #60]	; 0x3c                          
    5f2c:	e1a0200a 	mov	r2, sl                                        
    5f30:	e1a03000 	mov	r3, r0                                        
    5f34:	e51f1134 	ldr	r1, [pc, #-308]	; 5e08 <bsp_section_rodata_size+0xf04>
    5f38:	e1a00004 	mov	r0, r4                                        
    5f3c:	e98d4080 	stmib	sp, {r7, lr}                                
    5f40:	e58dc01c 	str	ip, [sp, #28]                                 
    5f44:	e58d9020 	str	r9, [sp, #32]                                 
    5f48:	e58da024 	str	sl, [sp, #36]	; 0x24                          
    5f4c:	ebfff6b6 	bl	3a2c <rtems_fdisk_info>                        
                                                                      
      /*                                                              
       * We use the segment page offset not the page number used in the
       * driver. This skips the page descriptors.                     
       */                                                             
      ret = rtems_fdisk_seg_write_page (fd, sc, page + sc->pages_desc, buffer);
    5f50:	e5962018 	ldr	r2, [r6, #24]                                 
    5f54:	e1a00004 	mov	r0, r4                                        
    5f58:	e1a01006 	mov	r1, r6                                        
    5f5c:	e0872002 	add	r2, r7, r2                                    
    5f60:	e1a0300b 	mov	r3, fp                                        
    5f64:	ebfff774 	bl	3d3c <rtems_fdisk_seg_write_page>              
      if (ret)                                                        
    5f68:	e250a000 	subs	sl, r0, #0                                   
    5f6c:	0a00004e 	beq	60ac <bsp_section_rodata_size+0x11a8>         
      {                                                               
#if RTEMS_FDISK_TRACE                                                 
        rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: write page failed: " \
    5f70:	e5968008 	ldr	r8, [r6, #8]                                  <== NOT EXECUTED
    5f74:	e596500c 	ldr	r5, [r6, #12]                                 <== NOT EXECUTED
    5f78:	eb006df7 	bl	2175c <strerror>                               <== NOT EXECUTED
    5f7c:	e51f1178 	ldr	r1, [pc, #-376]	; 5e0c <bsp_section_rodata_size+0xf08><== NOT EXECUTED
    5f80:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
    5f84:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
    5f88:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    5f8c:	e1a03005 	mov	r3, r5                                        <== NOT EXECUTED
    5f90:	e58d7000 	str	r7, [sp]                                      <== NOT EXECUTED
    5f94:	e58da008 	str	sl, [sp, #8]                                  <== NOT EXECUTED
    5f98:	ebfff6a3 	bl	3a2c <rtems_fdisk_info>                        <== NOT EXECUTED
        {                                                             
          sc->pages_active++;                                         
        }                                                             
      }                                                               
                                                                      
      rtems_fdisk_queue_segment (fd, sc);                             
    5f9c:	e1a00004 	mov	r0, r4                                        
    5fa0:	e1a01006 	mov	r1, r6                                        
    5fa4:	ebfff839 	bl	4090 <rtems_fdisk_queue_segment>               
static bool                                                           
rtems_fdisk_is_erased_blocks_starvation (rtems_flashdisk* fd)         
{                                                                     
  bool starvation = fd->erased_blocks < fd->starvation_threshold;     
                                                                      
  if (starvation)                                                     
    5fa8:	e5942028 	ldr	r2, [r4, #40]	; 0x28                          
    5fac:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
    5fb0:	e1520003 	cmp	r2, r3                                        
    5fb4:	2a000004 	bcs	5fcc <bsp_section_rodata_size+0x10c8>         
    fd->starvations++;                                                
    5fb8:	e5943070 	ldr	r3, [r4, #112]	; 0x70                         
    5fbc:	e2833001 	add	r3, r3, #1                                    
    5fc0:	e5843070 	str	r3, [r4, #112]	; 0x70                         
      }                                                               
                                                                      
      rtems_fdisk_queue_segment (fd, sc);                             
                                                                      
      if (rtems_fdisk_is_erased_blocks_starvation (fd))               
        rtems_fdisk_compact (fd);                                     
    5fc4:	e1a00004 	mov	r0, r4                                        
    5fc8:	ebfff9df 	bl	474c <rtems_fdisk_compact>                     
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    {                                                                 
      ret = rtems_fdisk_write_block (fd, sg->block + b, data);        
      if (ret)                                                        
    5fcc:	e35a0000 	cmp	sl, #0                                        
    5fd0:	1a000072 	bne	61a0 <bsp_section_rodata_size+0x129c>         
    uint8_t* data;                                                    
    uint32_t fb;                                                      
    uint32_t b;                                                       
    fb = sg->length / fd->block_size;                                 
    data = sg->buffer;                                                
    for (b = 0; b < fb; b++, data += fd->block_size)                  
    5fd4:	e59d6034 	ldr	r6, [sp, #52]	; 0x34                          
    5fd8:	e59dc05c 	ldr	ip, [sp, #92]	; 0x5c                          
    5fdc:	e2866001 	add	r6, r6, #1                                    
    5fe0:	e5943014 	ldr	r3, [r4, #20]                                 
    5fe4:	e156000c 	cmp	r6, ip                                        
    5fe8:	e58d6034 	str	r6, [sp, #52]	; 0x34                          
    5fec:	e08bb003 	add	fp, fp, r3                                    
    5ff0:	1afffec9 	bne	5b1c <bsp_section_rodata_size+0xc18>          
    5ff4:	e59dc02c 	ldr	ip, [sp, #44]	; 0x2c                          
    5ff8:	e59c6010 	ldr	r6, [ip, #16]                                 
    5ffc:	e59dc030 	ldr	ip, [sp, #48]	; 0x30                          
    6000:	e28cc010 	add	ip, ip, #16                                   
    6004:	e58dc030 	str	ip, [sp, #48]	; 0x30                          
    6008:	e59dc040 	ldr	ip, [sp, #64]	; 0x40                          
    600c:	e28cc001 	add	ip, ip, #1                                    
    6010:	e58dc040 	str	ip, [sp, #64]	; 0x40                          
    6014:	eafffeb1 	b	5ae0 <bsp_section_rodata_size+0xbdc>            
   * Broken out to allow info messages when testing.                  
   */                                                                 
                                                                      
  if (block >= (fd->block_count - fd->unavail_blocks))                
  {                                                                   
    rtems_fdisk_error ("write-block: block out of range: %d", block); 
    6018:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
    601c:	e51f0214 	ldr	r0, [pc, #-532]	; 5e10 <bsp_section_rodata_size+0xf0c><== NOT EXECUTED
    6020:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    6024:	ebfff781 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
    6028:	e3a0101b 	mov	r1, #27                                       <== NOT EXECUTED
    602c:	e1a00005 	mov	r0, r5                                        
    6030:	e1a0e00f 	mov	lr, pc                                        
    6034:	e595f004 	ldr	pc, [r5, #4]                                  
            case RTEMS_BLKDEV_REQ_READ:                               
              errno = rtems_fdisk_read (&rtems_flashdisks[minor], r); 
              break;                                                  
                                                                      
            case RTEMS_BLKDEV_REQ_WRITE:                              
              errno = rtems_fdisk_write (&rtems_flashdisks[minor], r);
    6038:	e51f022c 	ldr	r0, [pc, #-556]	; 5e14 <bsp_section_rodata_size+0xf10>
    603c:	e59d6058 	ldr	r6, [sp, #88]	; 0x58                          
    6040:	e5901000 	ldr	r1, [r0]                                      
    6044:	e59dc038 	ldr	ip, [sp, #56]	; 0x38                          
    6048:	e3a03000 	mov	r3, #0                                        
    604c:	e5863000 	str	r3, [r6]                                      
    6050:	e081100c 	add	r1, r1, ip                                    
              break;                                                  
    6054:	eafffc3f 	b	5158 <bsp_section_rodata_size+0x254>            
                                                                      
      return ret;                                                     
    }                                                                 
  }                                                                   
                                                                      
  rtems_fdisk_error ("write-block: no erased page descs in segment: %d-%d",
    6058:	e2861008 	add	r1, r6, #8                                    <== NOT EXECUTED
    605c:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
    6060:	e51f0250 	ldr	r0, [pc, #-592]	; 5e18 <bsp_section_rodata_size+0xf14><== NOT EXECUTED
    6064:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    6068:	ebfff770 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                     sc->device, sc->segment);                        
                                                                      
  sc->failed = true;                                                  
    606c:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
    6070:	e5863028 	str	r3, [r6, #40]	; 0x28                          <== NOT EXECUTED
  rtems_fdisk_queue_segment (fd, sc);                                 
    6074:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    6078:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
    607c:	ebfff803 	bl	4090 <rtems_fdisk_queue_segment>               <== NOT EXECUTED
    6080:	eaffffe8 	b	6028 <bsp_section_rodata_size+0x1124>           <== NOT EXECUTED
     */                                                               
    if (rtems_fdisk_seg_verify_page (fd, sc->device, sc->segment,     
                                     bc->page + sc->pages_desc, buffer) == 0)
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "write-block:%d=>%02d-%03d-%03d: page verified",
    6084:	e595200c 	ldr	r2, [r5, #12]                                 
    6088:	e5953008 	ldr	r3, [r5, #8]                                  
    608c:	e58d2000 	str	r2, [sp]                                      
    6090:	e598c004 	ldr	ip, [r8, #4]                                  
    6094:	e1a00004 	mov	r0, r4                                        
    6098:	e51f1284 	ldr	r1, [pc, #-644]	; 5e1c <bsp_section_rodata_size+0xf18>
    609c:	e1a0200a 	mov	r2, sl                                        
    60a0:	e58dc004 	str	ip, [sp, #4]                                  
    60a4:	ebfff660 	bl	3a2c <rtems_fdisk_info>                        
    60a8:	eaffffc9 	b	5fd4 <bsp_section_rodata_size+0x10d0>           
                          strerror (ret), ret);                       
#endif                                                                
      }                                                               
      else                                                            
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
    60ac:	e1a00004 	mov	r0, r4                                        
    60b0:	e1a01006 	mov	r1, r6                                        
    60b4:	e1a02007 	mov	r2, r7                                        
    60b8:	e1a03005 	mov	r3, r5                                        
    60bc:	ebfff707 	bl	3ce0 <rtems_fdisk_seg_write_page_desc>         
        if (ret)                                                      
    60c0:	e250a000 	subs	sl, r0, #0                                   
    60c4:	1a00002d 	bne	6180 <bsp_section_rodata_size+0x127c>         
                            strerror (ret), ret);                     
#endif                                                                
        }                                                             
        else                                                          
        {                                                             
          sc->pages_active++;                                         
    60c8:	e596301c 	ldr	r3, [r6, #28]                                 
    60cc:	e2833001 	add	r3, r3, #1                                    
    60d0:	e586301c 	str	r3, [r6, #28]                                 
    60d4:	eaffffb0 	b	5f9c <bsp_section_rodata_size+0x1098>           
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  if (fd->info_level >= 3)                                            
  {                                                                   
    char queues[5];                                                   
    rtems_fdisk_queue_status (fd, sc, queues);                        
    60d8:	e28d5060 	add	r5, sp, #96	; 0x60                            <== NOT EXECUTED
    60dc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    60e0:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
    60e4:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
    60e8:	ebfff5fc 	bl	38e0 <rtems_fdisk_queue_status>                <== NOT EXECUTED
    rtems_fdisk_info (fd, " write:%d=>%02d-%03d: queue check: %s",    
    60ec:	e2863008 	add	r3, r6, #8                                    <== NOT EXECUTED
    60f0:	e8931008 	ldm	r3, {r3, ip}                                  <== NOT EXECUTED
    60f4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    60f8:	e51f12e0 	ldr	r1, [pc, #-736]	; 5e20 <bsp_section_rodata_size+0xf1c><== NOT EXECUTED
    60fc:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
    6100:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    6104:	e58d5004 	str	r5, [sp, #4]                                  <== NOT EXECUTED
    6108:	ebfff647 	bl	3a2c <rtems_fdisk_info>                        <== NOT EXECUTED
    610c:	eaffff0f 	b	5d50 <bsp_section_rodata_size+0xe4c>            <== NOT EXECUTED
   *                                                                  
   * We override the background compaction configruation.             
   */                                                                 
  if (rtems_fdisk_segment_count_queue (&fd->available) <=             
      fd->avail_compact_segs)                                         
    rtems_fdisk_compact (fd);                                         
    6110:	e1a00004 	mov	r0, r4                                        
    6114:	ebfff98c 	bl	474c <rtems_fdisk_compact>                     
    6118:	e5946034 	ldr	r6, [r4, #52]	; 0x34                          
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    611c:	e3560000 	cmp	r6, #0                                        
    6120:	1afffefe 	bne	5d20 <bsp_section_rodata_size+0xe1c>          
  {                                                                   
    /*                                                                
     * If compacting is configured for the background do it now       
     * to see if we can get some space back.                          
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT))                 
    6124:	e5943008 	ldr	r3, [r4, #8]                                  <== NOT EXECUTED
    6128:	e3130002 	tst	r3, #2                                        <== NOT EXECUTED
    612c:	1a00002a 	bne	61dc <bsp_section_rodata_size+0x12d8>         <== NOT EXECUTED
     */                                                               
    sc = rtems_fdisk_segment_queue_pop_head (&fd->available);         
                                                                      
    if (!sc)                                                          
    {                                                                 
      rtems_fdisk_error ("write-block: no available pages");          
    6130:	e51f0314 	ldr	r0, [pc, #-788]	; 5e24 <bsp_section_rodata_size+0xf20><== NOT EXECUTED
    6134:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    6138:	ebfff73c 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    613c:	eaffffb9 	b	6028 <bsp_section_rodata_size+0x1124>           <== NOT EXECUTED
    ret = rtems_fdisk_seg_write_page_desc_flags (fd, sc, bc->page, pd);
                                                                      
    if (ret)                                                          
    {                                                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, " write:%02d-%03d-%03d: "      \          
    6140:	e598c004 	ldr	ip, [r8, #4]                                  <== NOT EXECUTED
    6144:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    6148:	e5959008 	ldr	r9, [r5, #8]                                  <== NOT EXECUTED
    614c:	e595700c 	ldr	r7, [r5, #12]                                 <== NOT EXECUTED
    6150:	e58dc028 	str	ip, [sp, #40]	; 0x28                          <== NOT EXECUTED
    6154:	eb006d80 	bl	2175c <strerror>                               <== NOT EXECUTED
    6158:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          <== NOT EXECUTED
    615c:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
    6160:	e51f1340 	ldr	r1, [pc, #-832]	; 5e28 <bsp_section_rodata_size+0xf24><== NOT EXECUTED
    6164:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    6168:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    616c:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
    6170:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    6174:	e58d6008 	str	r6, [sp, #8]                                  <== NOT EXECUTED
    6178:	ebfff62b 	bl	3a2c <rtems_fdisk_info>                        <== NOT EXECUTED
    617c:	eafffed4 	b	5cd4 <bsp_section_rodata_size+0xdd0>            <== NOT EXECUTED
      {                                                               
        ret = rtems_fdisk_seg_write_page_desc (fd, sc, page, pd);     
        if (ret)                                                      
        {                                                             
#if RTEMS_FDISK_TRACE                                                 
          rtems_fdisk_info (fd, "write-block:%02d-%03d-%03d: "  \     
    6180:	e5969008 	ldr	r9, [r6, #8]                                  <== NOT EXECUTED
    6184:	e596500c 	ldr	r5, [r6, #12]                                 <== NOT EXECUTED
    6188:	e5987004 	ldr	r7, [r8, #4]                                  <== NOT EXECUTED
    618c:	eb006d72 	bl	2175c <strerror>                               <== NOT EXECUTED
    6190:	e51f136c 	ldr	r1, [pc, #-876]	; 5e2c <bsp_section_rodata_size+0xf28><== NOT EXECUTED
    6194:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
    6198:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    619c:	eaffff79 	b	5f88 <bsp_section_rodata_size+0x1084>           <== NOT EXECUTED
    61a0:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          <== NOT EXECUTED
    61a4:	eaffff9f 	b	6028 <bsp_section_rodata_size+0x1124>           <== NOT EXECUTED
    61a8:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          
      if (ret)                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_blkdev_request_done (req, ret ? RTEMS_IO_ERROR : RTEMS_SUCCESSFUL);
    61ac:	e3a01000 	mov	r1, #0                                        
    61b0:	eaffff9d 	b	602c <bsp_section_rodata_size+0x1128>           
  if (ret == 0)                                                       
  {                                                                   
    for (device = 0; device < fd->device_count; device++)             
    {                                                                 
      if (!fd->devices[device].segments)                              
        return ENOMEM;                                                
    61b4:	e3a0000c 	mov	r0, #12                                       <== NOT EXECUTED
    61b8:	eafffc24 	b	5250 <bsp_section_rodata_size+0x34c>            <== NOT EXECUTED
                                &flash_flags, sizeof (flash_flags));  
    if (ret)                                                          
      return ret;                                                     
    if ((flash_flags & page_desc->flags) != page_desc->flags)         
    {                                                                 
      rtems_fdisk_error ("  seg-write-page-flags: %02d-%03d-%03d: "   
    61bc:	e2851008 	add	r1, r5, #8                                    <== NOT EXECUTED
    61c0:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
    61c4:	e1a03009 	mov	r3, r9                                        <== NOT EXECUTED
    61c8:	e51f03a0 	ldr	r0, [pc, #-928]	; 5e30 <bsp_section_rodata_size+0xf2c><== NOT EXECUTED
    61cc:	e58de000 	str	lr, [sp]                                      <== NOT EXECUTED
    61d0:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
    61d4:	ebfff715 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    61d8:	eafffeb7 	b	5cbc <bsp_section_rodata_size+0xdb8>            <== NOT EXECUTED
    /*                                                                
     * If compacting is configured for the background do it now       
     * to see if we can get some space back.                          
     */                                                               
    if ((fd->flags & RTEMS_FDISK_BACKGROUND_COMPACT))                 
      rtems_fdisk_compact (fd);                                       
    61dc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    61e0:	ebfff959 	bl	474c <rtems_fdisk_compact>                     <== NOT EXECUTED
    61e4:	e5946034 	ldr	r6, [r4, #52]	; 0x34                          <== NOT EXECUTED
 * Pop the head of the segment control queue.                         
 */                                                                   
static rtems_fdisk_segment_ctl*                                       
rtems_fdisk_segment_queue_pop_head (rtems_fdisk_segment_ctl_queue* queue)
{                                                                     
  if (queue->head)                                                    
    61e8:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
    61ec:	1afffecb 	bne	5d20 <bsp_section_rodata_size+0xe1c>          <== NOT EXECUTED
    61f0:	eaffffce 	b	6130 <bsp_section_rodata_size+0x122c>           <== NOT EXECUTED
                                                                      

00004090 <rtems_fdisk_queue_segment>: * @param fd The flash disk control table. * @param sc The segment control table to be reallocated */ static void rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc) {
    4090:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
    4094:	e5915028 	ldr	r5, [r1, #40]	; 0x28                          
    4098:	e5918000 	ldr	r8, [r1]                                      
    409c:	e591a014 	ldr	sl, [r1, #20]                                 
    40a0:	e591701c 	ldr	r7, [r1, #28]                                 
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
    40a4:	e1a04001 	mov	r4, r1                                        
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
    40a8:	e2812008 	add	r2, r1, #8                                    
    40ac:	e2816020 	add	r6, r1, #32                                   
    40b0:	e59f126c 	ldr	r1, [pc, #620]	; 4324 <rtems_fdisk_queue_segment+0x294>
    40b4:	e3550000 	cmp	r5, #0                                        
    40b8:	e59fc268 	ldr	ip, [pc, #616]	; 4328 <rtems_fdisk_queue_segment+0x298>
    40bc:	e59f5268 	ldr	r5, [pc, #616]	; 432c <rtems_fdisk_queue_segment+0x29c>
    40c0:	11a0c001 	movne	ip, r1                                      
    40c4:	e59f1264 	ldr	r1, [pc, #612]	; 4330 <rtems_fdisk_queue_segment+0x2a0>
    40c8:	e8964040 	ldm	r6, {r6, lr}                                  
    40cc:	e3580000 	cmp	r8, #0                                        
    40d0:	e892000c 	ldm	r2, {r2, r3}                                  
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
    40d4:	e24dd018 	sub	sp, sp, #24                                   
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
    40d8:	01a08005 	moveq	r8, r5                                      
    40dc:	11a08001 	movne	r8, r1                                      
    40e0:	e59f124c 	ldr	r1, [pc, #588]	; 4334 <rtems_fdisk_queue_segment+0x2a4>
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
{                                                                     
    40e4:	e1a05000 	mov	r5, r0                                        
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_info (fd, " queue-seg:%02d-%03d: p=%d a=%d u=%d b=%d f=%s n=%s",
    40e8:	e58da000 	str	sl, [sp]                                      
    40ec:	e58d7004 	str	r7, [sp, #4]                                  
    40f0:	e58d6008 	str	r6, [sp, #8]                                  
    40f4:	e58de00c 	str	lr, [sp, #12]                                 
    40f8:	e58dc010 	str	ip, [sp, #16]                                 
    40fc:	e58d8014 	str	r8, [sp, #20]                                 
    4100:	ebfffe49 	bl	3a2c <rtems_fdisk_info>                        
                                                                      
  /*                                                                  
   * If the segment has failed then check the failed queue and append 
   * if not failed.                                                   
   */                                                                 
  if (sc->failed)                                                     
    4104:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
    4108:	e3530000 	cmp	r3, #0                                        
    410c:	0a000012 	beq	415c <rtems_fdisk_queue_segment+0xcc>         
 */                                                                   
static bool                                                           
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
    4110:	e5953058 	ldr	r3, [r5, #88]	; 0x58                          <== NOT EXECUTED
                                                                      
  while (it)                                                          
    4114:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    4118:	1a000003 	bne	412c <rtems_fdisk_queue_segment+0x9c>         <== NOT EXECUTED
    411c:	ea00006a 	b	42cc <rtems_fdisk_queue_segment+0x23c>          <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
      return true;                                                    
    it = it->next;                                                    
    4120:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    4124:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    4128:	0a000003 	beq	413c <rtems_fdisk_queue_segment+0xac>         <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
    412c:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    4130:	1afffffa 	bne	4120 <rtems_fdisk_queue_segment+0x90>         <== NOT EXECUTED
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
    4134:	e28dd018 	add	sp, sp, #24                                   
    4138:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    413c:	e595205c 	ldr	r2, [r5, #92]	; 0x5c                          <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    4140:	e5843000 	str	r3, [r4]                                      <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    4144:	e5824000 	str	r4, [r2]                                      <== NOT EXECUTED
      queue->tail       = sc;                                         
    4148:	e585405c 	str	r4, [r5, #92]	; 0x5c                          <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    414c:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          <== NOT EXECUTED
    4150:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    4154:	e5853060 	str	r3, [r5, #96]	; 0x60                          <== NOT EXECUTED
    4158:	eafffff5 	b	4134 <rtems_fdisk_queue_segment+0xa4>           <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Remove the queue from the available or used queue.               
   */                                                                 
  rtems_fdisk_segment_queue_remove (&fd->available, sc);              
    415c:	e2856034 	add	r6, r5, #52	; 0x34                            
    4160:	e1a00006 	mov	r0, r6                                        
    4164:	e1a01004 	mov	r1, r4                                        
  rtems_fdisk_segment_queue_remove (&fd->used, sc);                   
    4168:	e2857040 	add	r7, r5, #64	; 0x40                            
  }                                                                   
                                                                      
  /*                                                                  
   * Remove the queue from the available or used queue.               
   */                                                                 
  rtems_fdisk_segment_queue_remove (&fd->available, sc);              
    416c:	ebfffdb8 	bl	3854 <rtems_fdisk_segment_queue_remove>        
  rtems_fdisk_segment_queue_remove (&fd->used, sc);                   
    4170:	e1a00007 	mov	r0, r7                                        
    4174:	e1a01004 	mov	r1, r4                                        
    4178:	ebfffdb5 	bl	3854 <rtems_fdisk_segment_queue_remove>        
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    417c:	e284101c 	add	r1, r4, #28                                   
    4180:	e891000a 	ldm	r1, {r1, r3}                                  
    4184:	e5942024 	ldr	r2, [r4, #36]	; 0x24                          
    4188:	e594c014 	ldr	ip, [r4, #20]                                 
    418c:	e0830001 	add	r0, r3, r1                                    
    4190:	e0802002 	add	r2, r0, r2                                    
   * If they are and the driver has been configured to background     
   * erase place the segment on the used queue. If not configured     
   * to background erase perform the erase now.                       
   *                                                                  
   */                                                                 
  if (rtems_fdisk_seg_pages_available (sc) == 0)                      
    4194:	e15c0002 	cmp	ip, r2                                        
    4198:	0a000025 	beq	4234 <rtems_fdisk_queue_segment+0x1a4>        
     * bit is cleared for that segment. When 32 erasers               
     * has occurred the page is re-written to the flash               
     * with all the counters updated with the number of               
     * bits cleared and all bits set back to 1.                       
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
    419c:	e5951034 	ldr	r1, [r5, #52]	; 0x34                          
                                                                      
    while (seg)                                                       
    41a0:	e3510000 	cmp	r1, #0                                        
    41a4:	0a000051 	beq	42f0 <rtems_fdisk_queue_segment+0x260>        
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
    41a8:	e591001c 	ldr	r0, [r1, #28]                                 
    41ac:	e5913024 	ldr	r3, [r1, #36]	; 0x24                          
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    41b0:	e5917014 	ldr	r7, [r1, #20]                                 
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
    41b4:	e0803003 	add	r3, r0, r3                                    
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    41b8:	e5910020 	ldr	r0, [r1, #32]                                 
    41bc:	e0633007 	rsb	r3, r3, r7                                    
    41c0:	e062c00c 	rsb	ip, r2, ip                                    
    41c4:	e0603003 	rsb	r3, r0, r3                                    
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
                                                                      
    while (seg)                                                       
    {                                                                 
      if (rtems_fdisk_seg_pages_available (sc) <                      
    41c8:	e15c0003 	cmp	ip, r3                                        
    41cc:	2a00000d 	bcs	4208 <rtems_fdisk_queue_segment+0x178>        
        break;                                                        
      seg = seg->next;                                                
    }                                                                 
                                                                      
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    41d0:	e1a00006 	mov	r0, r6                                        
    41d4:	e1a02004 	mov	r2, r4                                        
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
    41d8:	e28dd018 	add	sp, sp, #24                                   
    41dc:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  
        break;                                                        
      seg = seg->next;                                                
    }                                                                 
                                                                      
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    41e0:	eaffff86 	b	4000 <rtems_fdisk_segment_queue_insert_before>  
 *                                                                    
 * @param fd The flash disk control table.                            
 * @param sc The segment control table to be reallocated              
 */                                                                   
static void                                                           
rtems_fdisk_queue_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* sc)
    41e4:	e281201c 	add	r2, r1, #28                                   
    41e8:	e892000c 	ldm	r2, {r2, r3}                                  
    41ec:	e0823003 	add	r3, r2, r3                                    
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    41f0:	e5910014 	ldr	r0, [r1, #20]                                 
    41f4:	e5912024 	ldr	r2, [r1, #36]	; 0x24                          
    41f8:	e0633000 	rsb	r3, r3, r0                                    
    41fc:	e0623003 	rsb	r3, r2, r3                                    
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
                                                                      
    while (seg)                                                       
    {                                                                 
      if (rtems_fdisk_seg_pages_available (sc) <                      
    4200:	e15c0003 	cmp	ip, r3                                        
    4204:	3afffff1 	bcc	41d0 <rtems_fdisk_queue_segment+0x140>        
          rtems_fdisk_seg_pages_available (seg))                      
        break;                                                        
      seg = seg->next;                                                
    4208:	e5911000 	ldr	r1, [r1]                                      
     * with all the counters updated with the number of               
     * bits cleared and all bits set back to 1.                       
     */                                                               
    rtems_fdisk_segment_ctl* seg = fd->available.head;                
                                                                      
    while (seg)                                                       
    420c:	e3510000 	cmp	r1, #0                                        
    4210:	1afffff3 	bne	41e4 <rtems_fdisk_queue_segment+0x154>        
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    4214:	e5953038 	ldr	r3, [r5, #56]	; 0x38                          
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    4218:	e5841000 	str	r1, [r4]                                      
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    421c:	e5834000 	str	r4, [r3]                                      
      queue->tail       = sc;                                         
    4220:	e5854038 	str	r4, [r5, #56]	; 0x38                          
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    4224:	e595303c 	ldr	r3, [r5, #60]	; 0x3c                          
    4228:	e2833001 	add	r3, r3, #1                                    
    422c:	e585303c 	str	r3, [r5, #60]	; 0x3c                          
    4230:	eaffffbf 	b	4134 <rtems_fdisk_queue_segment+0xa4>           
   * to background erase perform the erase now.                       
   *                                                                  
   */                                                                 
  if (rtems_fdisk_seg_pages_available (sc) == 0)                      
  {                                                                   
    if (sc->pages_active)                                             
    4234:	e3510000 	cmp	r1, #0                                        
    4238:	0a000014 	beq	4290 <rtems_fdisk_queue_segment+0x200>        
      /*                                                              
       * Keep the used queue sorted by the most number of used        
       * pages. When we compact we want to move the pages into        
       * a new segment and cover more than one segment.               
       */                                                             
      rtems_fdisk_segment_ctl* seg = fd->used.head;                   
    423c:	e5951040 	ldr	r1, [r5, #64]	; 0x40                          
                                                                      
      while (seg)                                                     
    4240:	e3510000 	cmp	r1, #0                                        
    4244:	0a000032 	beq	4314 <rtems_fdisk_queue_segment+0x284>        
      {                                                               
        if (sc->pages_used > seg->pages_used)                         
    4248:	e5912020 	ldr	r2, [r1, #32]                                 
    424c:	e1530002 	cmp	r3, r2                                        
    4250:	9a000003 	bls	4264 <rtems_fdisk_queue_segment+0x1d4>        
    4254:	ea000020 	b	42dc <rtems_fdisk_queue_segment+0x24c>          
    4258:	e5912020 	ldr	r2, [r1, #32]                                 
    425c:	e1520003 	cmp	r2, r3                                        
    4260:	3a00001d 	bcc	42dc <rtems_fdisk_queue_segment+0x24c>        
          break;                                                      
        seg = seg->next;                                              
    4264:	e5911000 	ldr	r1, [r1]                                      
       * pages. When we compact we want to move the pages into        
       * a new segment and cover more than one segment.               
       */                                                             
      rtems_fdisk_segment_ctl* seg = fd->used.head;                   
                                                                      
      while (seg)                                                     
    4268:	e3510000 	cmp	r1, #0                                        
    426c:	1afffff9 	bne	4258 <rtems_fdisk_queue_segment+0x1c8>        
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    4270:	e5953044 	ldr	r3, [r5, #68]	; 0x44                          
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    4274:	e5841000 	str	r1, [r4]                                      
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    4278:	e5834000 	str	r4, [r3]                                      
      queue->tail       = sc;                                         
    427c:	e5854044 	str	r4, [r5, #68]	; 0x44                          
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    4280:	e5953048 	ldr	r3, [r5, #72]	; 0x48                          
    4284:	e2833001 	add	r3, r3, #1                                    
    4288:	e5853048 	str	r3, [r5, #72]	; 0x48                          
    428c:	eaffffa8 	b	4134 <rtems_fdisk_queue_segment+0xa4>           
      else                                                            
        rtems_fdisk_segment_queue_push_tail (&fd->used, sc);          
    }                                                                 
    else                                                              
    {                                                                 
      if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))                 
    4290:	e5953008 	ldr	r3, [r5, #8]                                  <== NOT EXECUTED
    4294:	e3130001 	tst	r3, #1                                        <== NOT EXECUTED
    4298:	0a000018 	beq	4300 <rtems_fdisk_queue_segment+0x270>        <== NOT EXECUTED
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    429c:	e595304c 	ldr	r3, [r5, #76]	; 0x4c                          <== NOT EXECUTED
    42a0:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    {                                                                 
      queue->tail->next = sc;                                         
    42a4:	15953050 	ldrne	r3, [r5, #80]	; 0x50                        <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    42a8:	e5841000 	str	r1, [r4]                                      <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    42ac:	15834000 	strne	r4, [r3]                                    <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    42b0:	e5953054 	ldr	r3, [r5, #84]	; 0x54                          <== NOT EXECUTED
    42b4:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    42b8:	15854050 	strne	r4, [r5, #80]	; 0x50                        <== NOT EXECUTED
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    42bc:	05854050 	streq	r4, [r5, #80]	; 0x50                        <== NOT EXECUTED
    42c0:	0585404c 	streq	r4, [r5, #76]	; 0x4c                        <== NOT EXECUTED
    }                                                                 
                                                                      
    queue->count++;                                                   
    42c4:	e5853054 	str	r3, [r5, #84]	; 0x54                          <== NOT EXECUTED
    42c8:	eaffff99 	b	4134 <rtems_fdisk_queue_segment+0xa4>           <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    42cc:	e5843000 	str	r3, [r4]                                      <== NOT EXECUTED
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    42d0:	e585405c 	str	r4, [r5, #92]	; 0x5c                          <== NOT EXECUTED
    42d4:	e5854058 	str	r4, [r5, #88]	; 0x58                          <== NOT EXECUTED
    42d8:	eaffff9b 	b	414c <rtems_fdisk_queue_segment+0xbc>           <== NOT EXECUTED
          break;                                                      
        seg = seg->next;                                              
      }                                                               
                                                                      
      if (seg)                                                        
        rtems_fdisk_segment_queue_insert_before (&fd->used, seg, sc); 
    42dc:	e1a00007 	mov	r0, r7                                        
    42e0:	e1a02004 	mov	r2, r4                                        
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
    42e4:	e28dd018 	add	sp, sp, #24                                   
    42e8:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  
          break;                                                      
        seg = seg->next;                                              
      }                                                               
                                                                      
      if (seg)                                                        
        rtems_fdisk_segment_queue_insert_before (&fd->used, seg, sc); 
    42ec:	eaffff43 	b	4000 <rtems_fdisk_segment_queue_insert_before>  
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    42f0:	e5841000 	str	r1, [r4]                                      
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    42f4:	e5854038 	str	r4, [r5, #56]	; 0x38                          
    42f8:	e5854034 	str	r4, [r5, #52]	; 0x34                          
    42fc:	eaffffc8 	b	4224 <rtems_fdisk_queue_segment+0x194>          
    else                                                              
    {                                                                 
      if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))                 
        rtems_fdisk_segment_queue_push_tail (&fd->erase, sc);         
      else                                                            
        rtems_fdisk_erase_segment (fd, sc);                           
    4300:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    4304:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    if (seg)                                                          
      rtems_fdisk_segment_queue_insert_before (&fd->available, seg, sc);
    else                                                              
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
    4308:	e28dd018 	add	sp, sp, #24                                   <== NOT EXECUTED
    430c:	e8bd45f0 	pop	{r4, r5, r6, r7, r8, sl, lr}                  <== NOT EXECUTED
    else                                                              
    {                                                                 
      if ((fd->flags & RTEMS_FDISK_BACKGROUND_ERASE))                 
        rtems_fdisk_segment_queue_push_tail (&fd->erase, sc);         
      else                                                            
        rtems_fdisk_erase_segment (fd, sc);                           
    4310:	eafffee6 	b	3eb0 <rtems_fdisk_erase_segment>                <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    4314:	e5841000 	str	r1, [r4]                                      
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    4318:	e5854044 	str	r4, [r5, #68]	; 0x44                          
    431c:	e5854040 	str	r4, [r5, #64]	; 0x40                          
    4320:	eaffffd6 	b	4280 <rtems_fdisk_queue_segment+0x1f0>          
                                                                      

000038e0 <rtems_fdisk_queue_status>: */ static bool rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue, rtems_fdisk_segment_ctl* sc) { rtems_fdisk_segment_ctl* it = queue->head;
    38e0:	e5903034 	ldr	r3, [r0, #52]	; 0x34                          
                                                                      
  while (it)                                                          
    38e4:	e3530000 	cmp	r3, #0                                        
    38e8:	1a000003 	bne	38fc <rtems_fdisk_queue_status+0x1c>          
    38ec:	ea000006 	b	390c <rtems_fdisk_queue_status+0x2c>            <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
      return true;                                                    
    it = it->next;                                                    
    38f0:	e5933000 	ldr	r3, [r3]                                      
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    38f4:	e3530000 	cmp	r3, #0                                        
    38f8:	0a000003 	beq	390c <rtems_fdisk_queue_status+0x2c>          
  {                                                                   
    if (it == sc)                                                     
    38fc:	e1510003 	cmp	r1, r3                                        
    3900:	1afffffa 	bne	38f0 <rtems_fdisk_queue_status+0x10>          
static void                                                           
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
    3904:	e3a03041 	mov	r3, #65	; 0x41                                
    3908:	ea000000 	b	3910 <rtems_fdisk_queue_status+0x30>            
    390c:	e3a0302d 	mov	r3, #45	; 0x2d                                
    3910:	e5c23000 	strb	r3, [r2]                                     
 */                                                                   
static bool                                                           
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
    3914:	e5903040 	ldr	r3, [r0, #64]	; 0x40                          
                                                                      
  while (it)                                                          
    3918:	e3530000 	cmp	r3, #0                                        
    391c:	1a000003 	bne	3930 <rtems_fdisk_queue_status+0x50>          
    3920:	ea000006 	b	3940 <rtems_fdisk_queue_status+0x60>            <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
      return true;                                                    
    it = it->next;                                                    
    3924:	e5933000 	ldr	r3, [r3]                                      
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    3928:	e3530000 	cmp	r3, #0                                        
    392c:	0a000003 	beq	3940 <rtems_fdisk_queue_status+0x60>          
  {                                                                   
    if (it == sc)                                                     
    3930:	e1510003 	cmp	r1, r3                                        
    3934:	1afffffa 	bne	3924 <rtems_fdisk_queue_status+0x44>          
rtems_fdisk_queue_status (rtems_flashdisk*         fd,                
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
    3938:	e3a03055 	mov	r3, #85	; 0x55                                
    393c:	ea000000 	b	3944 <rtems_fdisk_queue_status+0x64>            
    3940:	e3a0302d 	mov	r3, #45	; 0x2d                                
    3944:	e5c23001 	strb	r3, [r2, #1]                                 
 */                                                                   
static bool                                                           
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
    3948:	e590304c 	ldr	r3, [r0, #76]	; 0x4c                          
                                                                      
  while (it)                                                          
    394c:	e3530000 	cmp	r3, #0                                        
    3950:	1a000003 	bne	3964 <rtems_fdisk_queue_status+0x84>          
    3954:	ea000006 	b	3974 <rtems_fdisk_queue_status+0x94>            
  {                                                                   
    if (it == sc)                                                     
      return true;                                                    
    it = it->next;                                                    
    3958:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    395c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    3960:	0a000003 	beq	3974 <rtems_fdisk_queue_status+0x94>          <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
    3964:	e1510003 	cmp	r1, r3                                        <== NOT EXECUTED
    3968:	1afffffa 	bne	3958 <rtems_fdisk_queue_status+0x78>          <== NOT EXECUTED
                          rtems_fdisk_segment_ctl* sc,                
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
    396c:	e3a03045 	mov	r3, #69	; 0x45                                <== NOT EXECUTED
    3970:	ea000000 	b	3978 <rtems_fdisk_queue_status+0x98>            <== NOT EXECUTED
    3974:	e3a0302d 	mov	r3, #45	; 0x2d                                
    3978:	e5c23002 	strb	r3, [r2, #2]                                 
 */                                                                   
static bool                                                           
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
    397c:	e5903058 	ldr	r3, [r0, #88]	; 0x58                          
                                                                      
  while (it)                                                          
    3980:	e3530000 	cmp	r3, #0                                        
    3984:	1a000003 	bne	3998 <rtems_fdisk_queue_status+0xb8>          
    3988:	ea000009 	b	39b4 <rtems_fdisk_queue_status+0xd4>            
  {                                                                   
    if (it == sc)                                                     
      return true;                                                    
    it = it->next;                                                    
    398c:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_fdisk_segment_queue_present (rtems_fdisk_segment_ctl_queue* queue,
                                   rtems_fdisk_segment_ctl*       sc) 
{                                                                     
  rtems_fdisk_segment_ctl*  it = queue->head;                         
                                                                      
  while (it)                                                          
    3990:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    3994:	0a000006 	beq	39b4 <rtems_fdisk_queue_status+0xd4>          <== NOT EXECUTED
  {                                                                   
    if (it == sc)                                                     
    3998:	e1510003 	cmp	r1, r3                                        <== NOT EXECUTED
    399c:	1afffffa 	bne	398c <rtems_fdisk_queue_status+0xac>          <== NOT EXECUTED
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
  queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc)    ? 'F' : '-';
    39a0:	e3a03046 	mov	r3, #70	; 0x46                                <== NOT EXECUTED
    39a4:	e5c23003 	strb	r3, [r2, #3]                                 <== NOT EXECUTED
  queues[4] = '\0';                                                   
    39a8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    39ac:	e5c23004 	strb	r3, [r2, #4]                                 <== NOT EXECUTED
}                                                                     
    39b0:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                          char                     queues[5])         
{                                                                     
  queues[0] = rtems_fdisk_segment_queue_present (&fd->available, sc) ? 'A' : '-';
  queues[1] = rtems_fdisk_segment_queue_present (&fd->used, sc)      ? 'U' : '-';
  queues[2] = rtems_fdisk_segment_queue_present (&fd->erase, sc)     ? 'E' : '-';
  queues[3] = rtems_fdisk_segment_queue_present (&fd->failed, sc)    ? 'F' : '-';
    39b4:	e3a0302d 	mov	r3, #45	; 0x2d                                
    39b8:	e5c23003 	strb	r3, [r2, #3]                                 
  queues[4] = '\0';                                                   
    39bc:	e3a03000 	mov	r3, #0                                        
    39c0:	e5c23004 	strb	r3, [r2, #4]                                 
}                                                                     
    39c4:	e12fff1e 	bx	lr                                             
                                                                      

000049ec <rtems_fdisk_recover_block_mappings>: /** * Recover the block mappings from the devices. */ static int rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd) {
    49ec:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_fdisk_segment_queue_init (&fd->failed);                       
                                                                      
  /*                                                                  
   * Clear the lock mappings.                                         
   */                                                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
    49f0:	e590201c 	ldr	r2, [r0, #28]                                 
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
    49f4:	e3a04000 	mov	r4, #0                                        
/**                                                                   
 * Recover the block mappings from the devices.                       
 */                                                                   
static int                                                            
rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd)              
{                                                                     
    49f8:	e1a07000 	mov	r7, r0                                        
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
    49fc:	e5804038 	str	r4, [r0, #56]	; 0x38                          
    4a00:	e5804034 	str	r4, [r0, #52]	; 0x34                          
  queue->count = 0;                                                   
    4a04:	e580403c 	str	r4, [r0, #60]	; 0x3c                          
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
    4a08:	e5804044 	str	r4, [r0, #68]	; 0x44                          
    4a0c:	e5804040 	str	r4, [r0, #64]	; 0x40                          
  queue->count = 0;                                                   
    4a10:	e5804048 	str	r4, [r0, #72]	; 0x48                          
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
    4a14:	e5804050 	str	r4, [r0, #80]	; 0x50                          
    4a18:	e580404c 	str	r4, [r0, #76]	; 0x4c                          
  queue->count = 0;                                                   
    4a1c:	e5804054 	str	r4, [r0, #84]	; 0x54                          
 * Initialise the segment control queue.                              
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_init (rtems_fdisk_segment_ctl_queue* queue) 
{                                                                     
  queue->head = queue->tail = 0;                                      
    4a20:	e580405c 	str	r4, [r0, #92]	; 0x5c                          
    4a24:	e5804058 	str	r4, [r0, #88]	; 0x58                          
  queue->count = 0;                                                   
    4a28:	e5804060 	str	r4, [r0, #96]	; 0x60                          
/**                                                                   
 * Recover the block mappings from the devices.                       
 */                                                                   
static int                                                            
rtems_fdisk_recover_block_mappings (rtems_flashdisk* fd)              
{                                                                     
    4a2c:	e24dd010 	sub	sp, sp, #16                                   
  rtems_fdisk_segment_queue_init (&fd->failed);                       
                                                                      
  /*                                                                  
   * Clear the lock mappings.                                         
   */                                                                 
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
    4a30:	e5900018 	ldr	r0, [r0, #24]                                 
    4a34:	e1a01004 	mov	r1, r4                                        
    4a38:	e1a02182 	lsl	r2, r2, #3                                    
    4a3c:	eb006e27 	bl	202e0 <memset>                                 
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
    4a40:	e5975030 	ldr	r5, [r7, #48]	; 0x30                          
    4a44:	e1550004 	cmp	r5, r4                                        
  memset (fd->blocks, 0, fd->block_count * sizeof (rtems_fdisk_block_ctl));
                                                                      
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
    4a48:	e5874028 	str	r4, [r7, #40]	; 0x28                          
  fd->starvation_threshold = 0;                                       
    4a4c:	e5874024 	str	r4, [r7, #36]	; 0x24                          
  for (device = 0; device < fd->device_count; device++)               
    4a50:	0a000071 	beq	4c1c <rtems_fdisk_recover_block_mappings+0x230>
    4a54:	e58d400c 	str	r4, [sp, #12]                                 
    4a58:	e597202c 	ldr	r2, [r7, #44]	; 0x2c                          
    4a5c:	e1a09004 	mov	r9, r4                                        
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
    4a60:	e1a0a004 	mov	sl, r4                                        
    4a64:	e59d100c 	ldr	r1, [sp, #12]                                 
    4a68:	e0823001 	add	r3, r2, r1                                    
    4a6c:	e5931004 	ldr	r1, [r3, #4]                                  
    4a70:	e3510000 	cmp	r1, #0                                        
    4a74:	13a0b000 	movne	fp, #0                                      
    4a78:	11a0800b 	movne	r8, fp                                      
    4a7c:	0a00005f 	beq	4c00 <rtems_fdisk_recover_block_mappings+0x214>
    {                                                                 
      rtems_fdisk_segment_ctl*        sc = &fd->devices[device].segments[segment];
    4a80:	e5936000 	ldr	r6, [r3]                                      
      rtems_fdisk_page_desc*          pd;                             
      uint32_t                        page;                           
      int                             ret;                            
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
    4a84:	e1a02009 	mov	r2, r9                                        
  for (device = 0; device < fd->device_count; device++)               
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
    {                                                                 
      rtems_fdisk_segment_ctl*        sc = &fd->devices[device].segments[segment];
    4a88:	e086600b 	add	r6, r6, fp                                    
      rtems_fdisk_page_desc*          pd;                             
      uint32_t                        page;                           
      int                             ret;                            
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
    4a8c:	e1a03008 	mov	r3, r8                                        
    4a90:	e59f12dc 	ldr	r1, [pc, #732]	; 4d74 <rtems_fdisk_recover_block_mappings+0x388>
    4a94:	e1a00007 	mov	r0, r7                                        
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
    {                                                                 
      rtems_fdisk_segment_ctl*        sc = &fd->devices[device].segments[segment];
      const rtems_fdisk_segment_desc* sd = sc->descriptor;            
    4a98:	e5964004 	ldr	r4, [r6, #4]                                  
      rtems_fdisk_page_desc*          pd;                             
      uint32_t                        page;                           
      int                             ret;                            
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
    4a9c:	ebfffbe2 	bl	3a2c <rtems_fdisk_info>                        
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
    4aa0:	e5975014 	ldr	r5, [r7, #20]                                 
 */                                                                   
static uint32_t                                                       
rtems_fdisk_pages_in_segment (const rtems_fdisk_segment_desc* sd,     
                              uint32_t                        page_size)
{                                                                     
  return sd->size / page_size;                                        
    4aa4:	e5940008 	ldr	r0, [r4, #8]                                  
    4aa8:	e1a01005 	mov	r1, r5                                        
    4aac:	ebfff3fd 	bl	1aa8 <__aeabi_uidiv>                           
    4ab0:	e1a04000 	mov	r4, r0                                        
static uint32_t                                                       
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
    4ab4:	e1a00180 	lsl	r0, r0, #3                                    
  return ((bytes - 1) / page_size) + 1;                               
    4ab8:	e1a01005 	mov	r1, r5                                        
    4abc:	e2400001 	sub	r0, r0, #1                                    
    4ac0:	ebfff3f8 	bl	1aa8 <__aeabi_uidiv>                           
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
      if (sc->pages > fd->starvation_threshold)                       
    4ac4:	e5973024 	ldr	r3, [r7, #36]	; 0x24                          
rtems_fdisk_page_desc_pages (const rtems_fdisk_segment_desc* sd,      
                             uint32_t                        page_size)
{                                                                     
  uint32_t pages = rtems_fdisk_pages_in_segment (sd, page_size);      
  uint32_t bytes = pages * sizeof (rtems_fdisk_page_desc);            
  return ((bytes - 1) / page_size) + 1;                               
    4ac8:	e2800001 	add	r0, r0, #1                                    
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
    4acc:	e0604004 	rsb	r4, r0, r4                                    
      if (sc->pages > fd->starvation_threshold)                       
    4ad0:	e1540003 	cmp	r4, r3                                        
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
      sc->pages =                                                     
    4ad4:	e5864014 	str	r4, [r6, #20]                                 
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recover-block-mappings:%02d-%03d", device, segment);
#endif                                                                
                                                                      
      sc->pages_desc = rtems_fdisk_page_desc_pages (sd, fd->block_size);
    4ad8:	e5860018 	str	r0, [r6, #24]                                 
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
      if (sc->pages > fd->starvation_threshold)                       
        fd->starvation_threshold = sc->pages;                         
    4adc:	85874024 	strhi	r4, [r7, #36]	; 0x24                        
      sc->pages_used   = 0;                                           
      sc->pages_bad    = 0;                                           
                                                                      
      sc->failed = false;                                             
                                                                      
      if (!sc->page_descriptors)                                      
    4ae0:	e5964010 	ldr	r4, [r6, #16]                                 
    4ae4:	e3540000 	cmp	r4, #0                                        
        sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
    4ae8:	e0050590 	mul	r5, r0, r5                                    
      sc->pages =                                                     
        rtems_fdisk_pages_in_segment (sd, fd->block_size) - sc->pages_desc;
      if (sc->pages > fd->starvation_threshold)                       
        fd->starvation_threshold = sc->pages;                         
                                                                      
      sc->pages_active = 0;                                           
    4aec:	e586a01c 	str	sl, [r6, #28]                                 
      sc->pages_used   = 0;                                           
    4af0:	e586a020 	str	sl, [r6, #32]                                 
      sc->pages_bad    = 0;                                           
    4af4:	e586a024 	str	sl, [r6, #36]	; 0x24                          
                                                                      
      sc->failed = false;                                             
    4af8:	e586a028 	str	sl, [r6, #40]	; 0x28                          
                                                                      
      if (!sc->page_descriptors)                                      
    4afc:	0a00008c 	beq	4d34 <rtems_fdisk_recover_block_mappings+0x348>
       * descriptors.                                                 
       *                                                              
       * @todo It may be better to ask the driver to get these value  
       *       so NAND flash could be better supported.               
       */                                                             
      ret = rtems_fdisk_seg_read (fd, sc, 0, (void*) pd,              
    4b00:	e1a00007 	mov	r0, r7                                        
    4b04:	e1a01006 	mov	r1, r6                                        
    4b08:	e3a02000 	mov	r2, #0                                        
    4b0c:	e1a03004 	mov	r3, r4                                        
    4b10:	e58d5000 	str	r5, [sp]                                      
    4b14:	ebfffc0c 	bl	3b4c <rtems_fdisk_seg_read>                    
                                  sc->pages_desc * fd->block_size);   
                                                                      
      if (ret)                                                        
    4b18:	e2505000 	subs	r5, r0, #0                                   
    4b1c:	1a00008c 	bne	4d54 <rtems_fdisk_recover_block_mappings+0x368>
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
    4b20:	e5962014 	ldr	r2, [r6, #20]                                 
    4b24:	e3520000 	cmp	r2, #0                                        
    4b28:	1a000007 	bne	4b4c <rtems_fdisk_recover_block_mappings+0x160>
    4b2c:	ea000027 	b	4bd0 <rtems_fdisk_recover_block_mappings+0x1e4> <== NOT EXECUTED
        }                                                             
        else                                                          
        {                                                             
          if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
          {                                                           
            sc->pages_used++;                                         
    4b30:	e5963020 	ldr	r3, [r6, #32]                                 <== NOT EXECUTED
    4b34:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    4b38:	e5863020 	str	r3, [r6, #32]                                 <== NOT EXECUTED
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
    4b3c:	e2855001 	add	r5, r5, #1                                    
    4b40:	e1520005 	cmp	r2, r5                                        
    4b44:	e2844008 	add	r4, r4, #8                                    
    4b48:	9a000020 	bls	4bd0 <rtems_fdisk_recover_block_mappings+0x1e4>
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    4b4c:	e5943000 	ldr	r3, [r4]                                      
    4b50:	e3730001 	cmn	r3, #1                                        
    4b54:	0a000033 	beq	4c28 <rtems_fdisk_recover_block_mappings+0x23c>
 * only set a flag by changing it from 1 to 0.                        
 */                                                                   
static bool                                                           
rtems_fdisk_page_desc_flags_set (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  return (pd->flags & flags) == 0 ? true : false;                     
    4b58:	e1d430b2 	ldrh	r3, [r4, #2]                                 <== NOT EXECUTED
            sc->pages_used++;                                         
          }                                                           
        }                                                             
        else                                                          
        {                                                             
          if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_USED))
    4b5c:	e3130002 	tst	r3, #2                                        <== NOT EXECUTED
    4b60:	0afffff2 	beq	4b30 <rtems_fdisk_recover_block_mappings+0x144><== NOT EXECUTED
          {                                                           
            sc->pages_used++;                                         
          }                                                           
          else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
    4b64:	e3130001 	tst	r3, #1                                        <== NOT EXECUTED
    4b68:	1a00003f 	bne	4c6c <rtems_fdisk_recover_block_mappings+0x280><== NOT EXECUTED
          {                                                           
            if (pd->block >= fd->block_count)                         
    4b6c:	e594c004 	ldr	ip, [r4, #4]                                  <== NOT EXECUTED
    4b70:	e597301c 	ldr	r3, [r7, #28]                                 <== NOT EXECUTED
    4b74:	e15c0003 	cmp	ip, r3                                        <== NOT EXECUTED
    4b78:	2a000056 	bcs	4cd8 <rtems_fdisk_recover_block_mappings+0x2ec><== NOT EXECUTED
                                   "invalid block number: %d-%d-%d: block: %d",
                                   device, segment, page, pd->block); 
#endif                                                                
              sc->pages_bad++;                                        
            }                                                         
            else if (fd->blocks[pd->block].segment)                   
    4b7c:	e5971018 	ldr	r1, [r7, #24]                                 <== NOT EXECUTED
    4b80:	e791018c 	ldr	r0, [r1, ip, lsl #3]                          <== NOT EXECUTED
    4b84:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    4b88:	e081318c 	add	r3, r1, ip, lsl #3                            <== NOT EXECUTED
    4b8c:	0a00005c 	beq	4d04 <rtems_fdisk_recover_block_mappings+0x318><== NOT EXECUTED
               * each block so we can tell which is the later block when
               * duplicates appear. A power down with a failed wirte could cause
               * a duplicate.                                         
               */                                                     
              const rtems_fdisk_segment_ctl* bsc = fd->blocks[pd->block].segment;
              rtems_fdisk_error ("duplicate block: %d-%d-%d: " \      
    4b90:	e2801008 	add	r1, r0, #8                                    <== NOT EXECUTED
    4b94:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
    4b98:	e5933004 	ldr	r3, [r3, #4]                                  <== NOT EXECUTED
    4b9c:	e59f01d4 	ldr	r0, [pc, #468]	; 4d78 <rtems_fdisk_recover_block_mappings+0x38c><== NOT EXECUTED
    4ba0:	e58d5008 	str	r5, [sp, #8]                                  <== NOT EXECUTED
    4ba4:	e58d9000 	str	r9, [sp]                                      <== NOT EXECUTED
    4ba8:	e58d8004 	str	r8, [sp, #4]                                  <== NOT EXECUTED
    4bac:	ebfffc9f 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                                 "duplicate: %d-%d-%d",               
                                 bsc->device, bsc->segment,           
                                 fd->blocks[pd->block].page,          
                                 device, segment, page);              
              sc->pages_bad++;                                        
    4bb0:	e5963024 	ldr	r3, [r6, #36]	; 0x24                          <== NOT EXECUTED
    4bb4:	e5962014 	ldr	r2, [r6, #20]                                 <== NOT EXECUTED
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
    4bb8:	e2855001 	add	r5, r5, #1                                    <== NOT EXECUTED
              rtems_fdisk_error ("duplicate block: %d-%d-%d: " \      
                                 "duplicate: %d-%d-%d",               
                                 bsc->device, bsc->segment,           
                                 fd->blocks[pd->block].page,          
                                 device, segment, page);              
              sc->pages_bad++;                                        
    4bbc:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
    4bc0:	e1520005 	cmp	r2, r5                                        <== NOT EXECUTED
              rtems_fdisk_error ("duplicate block: %d-%d-%d: " \      
                                 "duplicate: %d-%d-%d",               
                                 bsc->device, bsc->segment,           
                                 fd->blocks[pd->block].page,          
                                 device, segment, page);              
              sc->pages_bad++;                                        
    4bc4:	e5863024 	str	r3, [r6, #36]	; 0x24                          <== NOT EXECUTED
       * are active and how many are used.                            
       *                                                              
       * If the page is active see if the block is with-in range and  
       * if the block is a duplicate.                                 
       */                                                             
      for (page = 0; page < sc->pages; page++, pd++)                  
    4bc8:	e2844008 	add	r4, r4, #8                                    <== NOT EXECUTED
    4bcc:	8affffde 	bhi	4b4c <rtems_fdisk_recover_block_mappings+0x160><== NOT EXECUTED
      }                                                               
                                                                      
      /*                                                              
       * Place the segment on to the correct queue.                   
       */                                                             
      rtems_fdisk_queue_segment (fd, sc);                             
    4bd0:	e1a01006 	mov	r1, r6                                        
    4bd4:	e1a00007 	mov	r0, r7                                        
    4bd8:	ebfffd2c 	bl	4090 <rtems_fdisk_queue_segment>               
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
  {                                                                   
    uint32_t segment;                                                 
    for (segment = 0; segment < fd->devices[device].segment_count; segment++)
    4bdc:	e59d100c 	ldr	r1, [sp, #12]                                 
    4be0:	e597202c 	ldr	r2, [r7, #44]	; 0x2c                          
    4be4:	e0823001 	add	r3, r2, r1                                    
    4be8:	e5931004 	ldr	r1, [r3, #4]                                  
    4bec:	e2888001 	add	r8, r8, #1                                    
    4bf0:	e1510008 	cmp	r1, r8                                        
    4bf4:	e28bb030 	add	fp, fp, #48	; 0x30                            
    4bf8:	8affffa0 	bhi	4a80 <rtems_fdisk_recover_block_mappings+0x94>
    4bfc:	e5975030 	ldr	r5, [r7, #48]	; 0x30                          
  /*                                                                  
   * Scan each segment or each device recovering the valid pages.     
   */                                                                 
  fd->erased_blocks = 0;                                              
  fd->starvation_threshold = 0;                                       
  for (device = 0; device < fd->device_count; device++)               
    4c00:	e59d300c 	ldr	r3, [sp, #12]                                 
    4c04:	e2899001 	add	r9, r9, #1                                    
    4c08:	e283300c 	add	r3, r3, #12                                   
    4c0c:	e1550009 	cmp	r5, r9                                        
    4c10:	e58d300c 	str	r3, [sp, #12]                                 
    4c14:	8affff92 	bhi	4a64 <rtems_fdisk_recover_block_mappings+0x78>
       */                                                             
      rtems_fdisk_queue_segment (fd, sc);                             
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
    4c18:	e3a05000 	mov	r5, #0                                        
}                                                                     
    4c1c:	e1a00005 	mov	r0, r5                                        
    4c20:	e28dd010 	add	sp, sp, #16                                   
    4c24:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    4c28:	e5943004 	ldr	r3, [r4, #4]                                  
    4c2c:	e3730001 	cmn	r3, #1                                        
    4c30:	1affffc8 	bne	4b58 <rtems_fdisk_recover_block_mappings+0x16c>
        if (rtems_fdisk_page_desc_erased (pd))                        
        {                                                             
          /*                                                          
           * Is the page erased ?                                     
           */                                                         
          ret = rtems_fdisk_seg_blank_check_page (fd, sc,             
    4c34:	e5962018 	ldr	r2, [r6, #24]                                 
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk*   fd,        
                                  rtems_fdisk_segment_ctl* sc,        
                                  uint32_t                 page)      
{                                                                     
  return rtems_fdisk_seg_blank_check (fd, sc,                         
                                      page * fd->block_size, fd->block_size);
    4c38:	e5973014 	ldr	r3, [r7, #20]                                 
        if (rtems_fdisk_page_desc_erased (pd))                        
        {                                                             
          /*                                                          
           * Is the page erased ?                                     
           */                                                         
          ret = rtems_fdisk_seg_blank_check_page (fd, sc,             
    4c3c:	e0852002 	add	r2, r5, r2                                    
static int                                                            
rtems_fdisk_seg_blank_check_page (const rtems_flashdisk*   fd,        
                                  rtems_fdisk_segment_ctl* sc,        
                                  uint32_t                 page)      
{                                                                     
  return rtems_fdisk_seg_blank_check (fd, sc,                         
    4c40:	e1a00007 	mov	r0, r7                                        
    4c44:	e1a01006 	mov	r1, r6                                        
    4c48:	e0020293 	mul	r2, r3, r2                                    
    4c4c:	ebfffbde 	bl	3bcc <rtems_fdisk_seg_blank_check>             
           * Is the page erased ?                                     
           */                                                         
          ret = rtems_fdisk_seg_blank_check_page (fd, sc,             
                                                  page + sc->pages_desc);
                                                                      
          if (ret == 0)                                               
    4c50:	e3500000 	cmp	r0, #0                                        
    4c54:	1a000008 	bne	4c7c <rtems_fdisk_recover_block_mappings+0x290>
          {                                                           
            ++fd->erased_blocks;                                      
    4c58:	e5973028 	ldr	r3, [r7, #40]	; 0x28                          
    4c5c:	e2833001 	add	r3, r3, #1                                    
    4c60:	e5873028 	str	r3, [r7, #40]	; 0x28                          
    4c64:	e5962014 	ldr	r2, [r6, #20]                                 
    4c68:	eaffffb3 	b	4b3c <rtems_fdisk_recover_block_mappings+0x150> 
               */                                                     
              sc->pages_active++;                                     
            }                                                         
          }                                                           
          else                                                        
            sc->pages_bad++;                                          
    4c6c:	e5963024 	ldr	r3, [r6, #36]	; 0x24                          <== NOT EXECUTED
    4c70:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    4c74:	e5863024 	str	r3, [r6, #36]	; 0x24                          <== NOT EXECUTED
    4c78:	eaffffaf 	b	4b3c <rtems_fdisk_recover_block_mappings+0x150> <== NOT EXECUTED
            ++fd->erased_blocks;                                      
          }                                                           
          else                                                        
          {                                                           
#if RTEMS_FDISK_TRACE                                                 
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
    4c7c:	e58d5000 	str	r5, [sp]                                      <== NOT EXECUTED
    4c80:	e594c004 	ldr	ip, [r4, #4]                                  <== NOT EXECUTED
    4c84:	e59f10f0 	ldr	r1, [pc, #240]	; 4d7c <rtems_fdisk_recover_block_mappings+0x390><== NOT EXECUTED
    4c88:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    4c8c:	e1a03008 	mov	r3, r8                                        <== NOT EXECUTED
    4c90:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    4c94:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
    4c98:	ebfffc41 	bl	3da4 <rtems_fdisk_warning>                     <== NOT EXECUTED
 * Set the flags. Setting means clear the bit to 0.                   
 */                                                                   
static void                                                           
rtems_fdisk_page_desc_set_flags (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  pd->flags &= ~flags;                                                
    4c9c:	e1d430b2 	ldrh	r3, [r4, #2]                                 <== NOT EXECUTED
    4ca0:	e3c33002 	bic	r3, r3, #2                                    <== NOT EXECUTED
    4ca4:	e1c430b2 	strh	r3, [r4, #2]                                 <== NOT EXECUTED
            rtems_fdisk_warning (fd, "page not blank: %d-%d-%d",      
                                 device, segment, page, pd->block);   
#endif                                                                
            rtems_fdisk_page_desc_set_flags (pd, RTEMS_FDISK_PAGE_USED);
                                                                      
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
    4ca8:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    4cac:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
    4cb0:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
    4cb4:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
    4cb8:	ebfffc08 	bl	3ce0 <rtems_fdisk_seg_write_page_desc>         <== NOT EXECUTED
                                                   page, pd);         
                                                                      
            if (ret)                                                  
    4cbc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    4cc0:	1a000015 	bne	4d1c <rtems_fdisk_recover_block_mappings+0x330><== NOT EXECUTED
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
                                 device, segment, page);              
            }                                                         
                                                                      
            sc->pages_used++;                                         
    4cc4:	e5963020 	ldr	r3, [r6, #32]                                 <== NOT EXECUTED
    4cc8:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    4ccc:	e5863020 	str	r3, [r6, #32]                                 <== NOT EXECUTED
    4cd0:	e5962014 	ldr	r2, [r6, #20]                                 <== NOT EXECUTED
    4cd4:	eaffff98 	b	4b3c <rtems_fdisk_recover_block_mappings+0x150> <== NOT EXECUTED
          else if (rtems_fdisk_page_desc_flags_set (pd, RTEMS_FDISK_PAGE_ACTIVE))
          {                                                           
            if (pd->block >= fd->block_count)                         
            {                                                         
#if RTEMS_FDISK_TRACE                                                 
              rtems_fdisk_warning (fd,                                
    4cd8:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    4cdc:	e1a03008 	mov	r3, r8                                        <== NOT EXECUTED
    4ce0:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    4ce4:	e59f1094 	ldr	r1, [pc, #148]	; 4d80 <rtems_fdisk_recover_block_mappings+0x394><== NOT EXECUTED
    4ce8:	e88d1020 	stm	sp, {r5, ip}                                  <== NOT EXECUTED
    4cec:	ebfffc2c 	bl	3da4 <rtems_fdisk_warning>                     <== NOT EXECUTED
                                   "invalid block number: %d-%d-%d: block: %d",
                                   device, segment, page, pd->block); 
#endif                                                                
              sc->pages_bad++;                                        
    4cf0:	e5963024 	ldr	r3, [r6, #36]	; 0x24                          <== NOT EXECUTED
    4cf4:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    4cf8:	e5863024 	str	r3, [r6, #36]	; 0x24                          <== NOT EXECUTED
    4cfc:	e5962014 	ldr	r2, [r6, #20]                                 <== NOT EXECUTED
    4d00:	eaffff8d 	b	4b3c <rtems_fdisk_recover_block_mappings+0x150> <== NOT EXECUTED
              fd->blocks[pd->block].page    = page;                   
                                                                      
              /*                                                      
               * The page is active.                                  
               */                                                     
              sc->pages_active++;                                     
    4d04:	e596001c 	ldr	r0, [r6, #28]                                 <== NOT EXECUTED
    4d08:	e2800001 	add	r0, r0, #1                                    <== NOT EXECUTED
            {                                                         
              /**                                                     
               * @todo                                                
               * Add start up crc checks here.                        
               */                                                     
              fd->blocks[pd->block].segment = sc;                     
    4d0c:	e781618c 	str	r6, [r1, ip, lsl #3]                          <== NOT EXECUTED
              fd->blocks[pd->block].page    = page;                   
    4d10:	e5835004 	str	r5, [r3, #4]                                  <== NOT EXECUTED
                                                                      
              /*                                                      
               * The page is active.                                  
               */                                                     
              sc->pages_active++;                                     
    4d14:	e586001c 	str	r0, [r6, #28]                                 <== NOT EXECUTED
    4d18:	eaffff87 	b	4b3c <rtems_fdisk_recover_block_mappings+0x150> <== NOT EXECUTED
            ret = rtems_fdisk_seg_write_page_desc (fd, sc,            
                                                   page, pd);         
                                                                      
            if (ret)                                                  
            {                                                         
              rtems_fdisk_error ("forcing page to used failed: %d-%d-%d",
    4d1c:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
    4d20:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
    4d24:	e1a03005 	mov	r3, r5                                        <== NOT EXECUTED
    4d28:	e59f0054 	ldr	r0, [pc, #84]	; 4d84 <rtems_fdisk_recover_block_mappings+0x398><== NOT EXECUTED
    4d2c:	ebfffc3f 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    4d30:	eaffffe3 	b	4cc4 <rtems_fdisk_recover_block_mappings+0x2d8> <== NOT EXECUTED
      sc->pages_bad    = 0;                                           
                                                                      
      sc->failed = false;                                             
                                                                      
      if (!sc->page_descriptors)                                      
        sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
    4d34:	e1a00005 	mov	r0, r5                                        
    4d38:	eb000abd 	bl	7834 <malloc>                                  
                                                                      
      if (!sc->page_descriptors)                                      
    4d3c:	e3500000 	cmp	r0, #0                                        
      sc->pages_bad    = 0;                                           
                                                                      
      sc->failed = false;                                             
                                                                      
      if (!sc->page_descriptors)                                      
        sc->page_descriptors = malloc (sc->pages_desc * fd->block_size);
    4d40:	e1a04000 	mov	r4, r0                                        
    4d44:	e5860010 	str	r0, [r6, #16]                                 
                                                                      
      if (!sc->page_descriptors)                                      
    4d48:	1affff6c 	bne	4b00 <rtems_fdisk_recover_block_mappings+0x114>
        rtems_fdisk_abort ("no memory for page descriptors");         
    4d4c:	e59f0034 	ldr	r0, [pc, #52]	; 4d88 <rtems_fdisk_recover_block_mappings+0x39c><== NOT EXECUTED
    4d50:	ebffee50 	bl	698 <rtems_fdisk_abort>                        <== NOT EXECUTED
      ret = rtems_fdisk_seg_read (fd, sc, 0, (void*) pd,              
                                  sc->pages_desc * fd->block_size);   
                                                                      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recover-block-mappings:%02d-%03d: " \     
    4d54:	eb007280 	bl	2175c <strerror>                               <== NOT EXECUTED
    4d58:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
    4d5c:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
    4d60:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
    4d64:	e59f0020 	ldr	r0, [pc, #32]	; 4d8c <rtems_fdisk_recover_block_mappings+0x3a0><== NOT EXECUTED
    4d68:	e58d5000 	str	r5, [sp]                                      <== NOT EXECUTED
    4d6c:	ebfffc2f 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                           "read page desc failed: %s (%d)",          
                           device, segment, strerror (ret), ret);     
        return ret;                                                   
    4d70:	eaffffa9 	b	4c1c <rtems_fdisk_recover_block_mappings+0x230> <== NOT EXECUTED
                                                                      

00004338 <rtems_fdisk_recycle_segment>: static int rtems_fdisk_recycle_segment (rtems_flashdisk* fd, rtems_fdisk_segment_ctl* ssc, rtems_fdisk_segment_ctl* dsc, uint32_t *pages) {
    4338:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    433c:	e1a06001 	mov	r6, r1                                        
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
    4340:	e5911014 	ldr	r1, [r1, #20]                                 
static int                                                            
rtems_fdisk_recycle_segment (rtems_flashdisk*         fd,             
                                    rtems_fdisk_segment_ctl* ssc,     
                                    rtems_fdisk_segment_ctl* dsc,     
                                    uint32_t *pages)                  
{                                                                     
    4344:	e24dd030 	sub	sp, sp, #48	; 0x30                            
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
    4348:	e3510000 	cmp	r1, #0                                        
static int                                                            
rtems_fdisk_recycle_segment (rtems_flashdisk*         fd,             
                                    rtems_fdisk_segment_ctl* ssc,     
                                    rtems_fdisk_segment_ctl* dsc,     
                                    uint32_t *pages)                  
{                                                                     
    434c:	e1a08000 	mov	r8, r0                                        
    4350:	e1a05002 	mov	r5, r2                                        
    4354:	e58d3028 	str	r3, [sp, #40]	; 0x28                          
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
    4358:	0a0000f0 	beq	4720 <rtems_fdisk_recycle_segment+0x3e8>      
    435c:	e3a0c000 	mov	ip, #0                                        
    4360:	e58dc020 	str	ip, [sp, #32]                                 
    4364:	e1a0900c 	mov	r9, ip                                        
    4368:	e1a0700c 	mov	r7, ip                                        
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
        dsc = rtems_fdisk_seg_most_available (&fd->available);        
    436c:	e280c034 	add	ip, r0, #52	; 0x34                            
    4370:	e58dc02c 	str	ip, [sp, #44]	; 0x2c                          
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
                                                                      
    if (!dsc && ssc->pages_active > 0)                                
    4374:	e3550000 	cmp	r5, #0                                        
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
    4378:	e5962010 	ldr	r2, [r6, #16]                                 
                                                                      
    if (!dsc && ssc->pages_active > 0)                                
    437c:	0a000080 	beq	4584 <rtems_fdisk_recycle_segment+0x24c>      
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
    4380:	e1a00187 	lsl	r0, r7, #3                                    
    4384:	e082a000 	add	sl, r2, r0                                    
 * only set a flag by changing it from 1 to 0.                        
 */                                                                   
static bool                                                           
rtems_fdisk_page_desc_flags_set (rtems_fdisk_page_desc* pd, uint16_t flags)
{                                                                     
  return (pd->flags & flags) == 0 ? true : false;                     
    4388:	e1da30b2 	ldrh	r3, [sl, #2]                                 
    {                                                                 
      rtems_fdisk_error ("recycle: no available dst segment");        
      return EIO;                                                     
    }                                                                 
                                                                      
    if (rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_ACTIVE) &&
    438c:	e2134001 	ands	r4, r3, #1                                   
    4390:	1a00005b 	bne	4504 <rtems_fdisk_recycle_segment+0x1cc>      
    4394:	e3130002 	tst	r3, #2                                        
    4398:	0a000059 	beq	4504 <rtems_fdisk_recycle_segment+0x1cc>      
rtems_fdisk_seg_next_available_page (rtems_fdisk_segment_ctl* sc)     
{                                                                     
  rtems_fdisk_page_desc* pd = &sc->page_descriptors[0];               
  uint32_t               page;                                        
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
    439c:	e5953014 	ldr	r3, [r5, #20]                                 
 * Find the next available page in a segment.                         
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_next_available_page (rtems_fdisk_segment_ctl* sc)     
{                                                                     
  rtems_fdisk_page_desc* pd = &sc->page_descriptors[0];               
    43a0:	e595c010 	ldr	ip, [r5, #16]                                 
  uint32_t               page;                                        
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
    43a4:	e3530000 	cmp	r3, #0                                        
 * Find the next available page in a segment.                         
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_next_available_page (rtems_fdisk_segment_ctl* sc)     
{                                                                     
  rtems_fdisk_page_desc* pd = &sc->page_descriptors[0];               
    43a8:	e58dc01c 	str	ip, [sp, #28]                                 
  uint32_t               page;                                        
                                                                      
  for (page = 0; page < sc->pages; page++, pd++)                      
    43ac:	0a0000b5 	beq	4688 <rtems_fdisk_recycle_segment+0x350>      
    43b0:	e1a0200c 	mov	r2, ip                                        
    43b4:	ea000003 	b	43c8 <rtems_fdisk_recycle_segment+0x90>         
    43b8:	e2844001 	add	r4, r4, #1                                    
    43bc:	e1540003 	cmp	r4, r3                                        
    43c0:	e2822008 	add	r2, r2, #8                                    
    43c4:	0a0000af 	beq	4688 <rtems_fdisk_recycle_segment+0x350>      
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    43c8:	e5921000 	ldr	r1, [r2]                                      
    43cc:	e3710001 	cmn	r1, #1                                        
    43d0:	1afffff8 	bne	43b8 <rtems_fdisk_recycle_segment+0x80>       
    43d4:	e5921004 	ldr	r1, [r2, #4]                                  
    43d8:	e3710001 	cmn	r1, #1                                        
    43dc:	1afffff5 	bne	43b8 <rtems_fdisk_recycle_segment+0x80>       
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
                                                                      
      active++;                                                       
                                                                      
      if (dpage >= dsc->pages)                                        
    43e0:	e1530004 	cmp	r3, r4                                        
    43e4:	9a0000a7 	bls	4688 <rtems_fdisk_recycle_segment+0x350>      
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return EIO;                                                   
      }                                                               
                                                                      
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
    43e8:	e58d7000 	str	r7, [sp]                                      
    43ec:	e5953008 	ldr	r3, [r5, #8]                                  
    43f0:	e58d3004 	str	r3, [sp, #4]                                  
    43f4:	e2862008 	add	r2, r6, #8                                    
    43f8:	e595c00c 	ldr	ip, [r5, #12]                                 
    43fc:	e892000c 	ldm	r2, {r2, r3}                                  
    4400:	e59f1324 	ldr	r1, [pc, #804]	; 472c <rtems_fdisk_recycle_segment+0x3f4>
    4404:	e1a00008 	mov	r0, r8                                        
    4408:	e58dc008 	str	ip, [sp, #8]                                  
    440c:	e58d400c 	str	r4, [sp, #12]                                 
    4410:	ebfffd85 	bl	3a2c <rtems_fdisk_info>                        
                        ssc->device, ssc->segment, spage,             
                        dsc->device, dsc->segment, dpage);            
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
    4414:	e596b018 	ldr	fp, [r6, #24]                                 
    4418:	e087b00b 	add	fp, r7, fp                                    
    441c:	e5951018 	ldr	r1, [r5, #24]                                 
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
    4420:	e58db000 	str	fp, [sp]                                      
    4424:	e5953008 	ldr	r3, [r5, #8]                                  
    4428:	e58d3004 	str	r3, [sp, #4]                                  
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
                        ssc->device, ssc->segment, spage,             
                        dsc->device, dsc->segment, dpage);            
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
    442c:	e0841001 	add	r1, r4, r1                                    
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
    4430:	e595c00c 	ldr	ip, [r5, #12]                                 
#if RTEMS_FDISK_TRACE                                                 
      rtems_fdisk_info (fd, "recycle: %02d-%03d-%03d=>%02d-%03d-%03d",
                        ssc->device, ssc->segment, spage,             
                        dsc->device, dsc->segment, dpage);            
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
    4434:	e58d1024 	str	r1, [sp, #36]	; 0x24                          
                           rtems_fdisk_segment_ctl* dst_sc,           
                           uint32_t                 dst_page)         
{                                                                     
  int ret;                                                            
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "  seg-copy-page: %02d-%03d~%03d=>%02d-%03d~%03d",
    4438:	e2862008 	add	r2, r6, #8                                    
    443c:	e892000c 	ldm	r2, {r2, r3}                                  
    4440:	e58dc008 	str	ip, [sp, #8]                                  
    4444:	e59dc024 	ldr	ip, [sp, #36]	; 0x24                          
    4448:	e59f12e0 	ldr	r1, [pc, #736]	; 4730 <rtems_fdisk_recycle_segment+0x3f8>
    444c:	e1a00008 	mov	r0, r8                                        
    4450:	e58dc00c 	str	ip, [sp, #12]                                 
    4454:	ebfffd98 	bl	3abc <rtems_fdisk_printf>                      
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
                               page * fd->block_size, buffer, fd->block_size);
    4458:	e598c014 	ldr	ip, [r8, #20]                                 
rtems_fdisk_seg_read_page (const rtems_flashdisk*   fd,               
                           rtems_fdisk_segment_ctl* sc,               
                           uint32_t                 page,             
                           void*                    buffer)           
{                                                                     
  return rtems_fdisk_seg_read (fd, sc,                                
    445c:	e5983068 	ldr	r3, [r8, #104]	; 0x68                         
    4460:	e0020b9c 	mul	r2, ip, fp                                    
    4464:	e1a00008 	mov	r0, r8                                        
    4468:	e1a01006 	mov	r1, r6                                        
    446c:	e58dc000 	str	ip, [sp]                                      
    4470:	ebfffdb5 	bl	3b4c <rtems_fdisk_seg_read>                    
                      src_sc->device, src_sc->segment, src_page,      
                      dst_sc->device, dst_sc->segment, dst_page);     
#endif                                                                
  ret = rtems_fdisk_seg_read_page (fd, src_sc, src_page,              
                                   fd->copy_buffer);                  
  if (ret)                                                            
    4474:	e250b000 	subs	fp, r0, #0                                   
    4478:	0a000048 	beq	45a0 <rtems_fdisk_recycle_segment+0x268>      
                                       spage + ssc->pages_desc,       
                                       dsc,                           
                                       dpage + dsc->pages_desc);      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d-%03d=>" \              
    447c:	e2859008 	add	r9, r5, #8                                    <== NOT EXECUTED
    4480:	e596200c 	ldr	r2, [r6, #12]                                 <== NOT EXECUTED
    4484:	e8991200 	ldm	r9, {r9, ip}                                  <== NOT EXECUTED
    4488:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
    448c:	e596a008 	ldr	sl, [r6, #8]                                  <== NOT EXECUTED
    4490:	e58d2018 	str	r2, [sp, #24]                                 <== NOT EXECUTED
    4494:	e58dc014 	str	ip, [sp, #20]                                 <== NOT EXECUTED
    4498:	eb0074af 	bl	2175c <strerror>                               <== NOT EXECUTED
    449c:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
    44a0:	e58d000c 	str	r0, [sp, #12]                                 <== NOT EXECUTED
    44a4:	e59f0288 	ldr	r0, [pc, #648]	; 4734 <rtems_fdisk_recycle_segment+0x3fc><== NOT EXECUTED
    44a8:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
                                             dsc,                     
                                             dpage, dpd);             
                                                                      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d-%03d=>"   \            
    44ac:	e59dc014 	ldr	ip, [sp, #20]                                 <== NOT EXECUTED
    44b0:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
    44b4:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
    44b8:	e58d9000 	str	r9, [sp]                                      <== NOT EXECUTED
    44bc:	e58d4008 	str	r4, [sp, #8]                                  <== NOT EXECUTED
    44c0:	e58db010 	str	fp, [sp, #16]                                 <== NOT EXECUTED
    44c4:	ebfffe59 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                           "%02d-%03d-%03d: copy pd failed: %s (%d)", 
                           ssc->device, ssc->segment, spage,          
                           dsc->device, dsc->segment, dpage,          
                           strerror (ret), ret);                      
        rtems_fdisk_queue_segment (fd, dsc);                          
    44c8:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
    44cc:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
    44d0:	ebfffeee 	bl	4090 <rtems_fdisk_queue_segment>               <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    44d4:	e5983040 	ldr	r3, [r8, #64]	; 0x40                          <== NOT EXECUTED
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
    44d8:	e5982044 	ldr	r2, [r8, #68]	; 0x44                          <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    44dc:	e5863000 	str	r3, [r6]                                      <== NOT EXECUTED
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
      queue->tail = sc;                                               
    queue->count++;                                                   
    44e0:	e5983048 	ldr	r3, [r8, #72]	; 0x48                          <== NOT EXECUTED
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
    44e4:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
      queue->tail = sc;                                               
    queue->count++;                                                   
    44e8:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    queue->head = sc;                                                 
    44ec:	e5886040 	str	r6, [r8, #64]	; 0x40                          <== NOT EXECUTED
                                                                      
    if (queue->tail == 0)                                             
      queue->tail = sc;                                               
    44f0:	05886044 	streq	r6, [r8, #68]	; 0x44                        <== NOT EXECUTED
    queue->count++;                                                   
    44f4:	e5883048 	str	r3, [r8, #72]	; 0x48                          <== NOT EXECUTED
  }                                                                   
                                                                      
  ret = rtems_fdisk_erase_segment (fd, ssc);                          
                                                                      
  return ret;                                                         
}                                                                     
    44f8:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
    44fc:	e28dd030 	add	sp, sp, #48	; 0x30                            <== NOT EXECUTED
    4500:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    4504:	e7923000 	ldr	r3, [r2, r0]                                  
    4508:	e3730001 	cmn	r3, #1                                        
    450c:	0a000015 	beq	4568 <rtems_fdisk_recycle_segment+0x230>      
    {                                                                 
      --fd->erased_blocks;                                            
    }                                                                 
    else                                                              
    {                                                                 
      used++;                                                         
    4510:	e2899001 	add	r9, r9, #1                                    
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
    4514:	e2877001 	add	r7, r7, #1                                    
    4518:	e1510007 	cmp	r1, r7                                        
    451c:	8affff94 	bhi	4374 <rtems_fdisk_recycle_segment+0x3c>       
      used++;                                                         
    }                                                                 
  }                                                                   
                                                                      
#if RTEMS_FDISK_TRACE                                                 
  rtems_fdisk_printf (fd, "ssc end: %d-%d: p=%ld, a=%ld, u=%ld",      
    4520:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
    4524:	e2862008 	add	r2, r6, #8                                    
    4528:	e892000c 	ldm	r2, {r2, r3}                                  
    452c:	e58dc000 	str	ip, [sp]                                      
    4530:	e59dc020 	ldr	ip, [sp, #32]                                 
    4534:	e59f11fc 	ldr	r1, [pc, #508]	; 4738 <rtems_fdisk_recycle_segment+0x400>
    4538:	e1a00008 	mov	r0, r8                                        
    453c:	e58dc004 	str	ip, [sp, #4]                                  
    4540:	e58d9008 	str	r9, [sp, #8]                                  
    4544:	ebfffd5c 	bl	3abc <rtems_fdisk_printf>                      
                      ssc->device, ssc->segment,                      
                      pages, active, used);                           
#endif                                                                
  if (ssc->pages_active != 0)                                         
    4548:	e596101c 	ldr	r1, [r6, #28]                                 
    454c:	e3510000 	cmp	r1, #0                                        
    4550:	1a000049 	bne	467c <rtems_fdisk_recycle_segment+0x344>      
  {                                                                   
    rtems_fdisk_error ("compacting: ssc pages not 0: %d",             
                       ssc->pages_active);                            
  }                                                                   
                                                                      
  ret = rtems_fdisk_erase_segment (fd, ssc);                          
    4554:	e1a00008 	mov	r0, r8                                        
    4558:	e1a01006 	mov	r1, r6                                        
                                                                      
  return ret;                                                         
}                                                                     
    455c:	e28dd030 	add	sp, sp, #48	; 0x30                            
    4560:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          
  {                                                                   
    rtems_fdisk_error ("compacting: ssc pages not 0: %d",             
                       ssc->pages_active);                            
  }                                                                   
                                                                      
  ret = rtems_fdisk_erase_segment (fd, ssc);                          
    4564:	eafffe51 	b	3eb0 <rtems_fdisk_erase_segment>                
static bool                                                           
rtems_fdisk_page_desc_erased (const rtems_fdisk_page_desc* pd)        
{                                                                     
  return ((pd->crc == 0xffff) &&                                      
          (pd->flags == 0xffff) &&                                    
          (pd->block == 0xffffffff)) ? true : false;                  
    4568:	e59a3004 	ldr	r3, [sl, #4]                                  <== NOT EXECUTED
    456c:	e3730001 	cmn	r3, #1                                        <== NOT EXECUTED
    4570:	1affffe6 	bne	4510 <rtems_fdisk_recycle_segment+0x1d8>      <== NOT EXECUTED
                                                                      
      (*pages)--;                                                     
    }                                                                 
    else if (rtems_fdisk_page_desc_erased (spd))                      
    {                                                                 
      --fd->erased_blocks;                                            
    4574:	e5983028 	ldr	r3, [r8, #40]	; 0x28                          <== NOT EXECUTED
    4578:	e2433001 	sub	r3, r3, #1                                    <== NOT EXECUTED
    457c:	e5883028 	str	r3, [r8, #40]	; 0x28                          <== NOT EXECUTED
    4580:	eaffffe3 	b	4514 <rtems_fdisk_recycle_segment+0x1dc>        <== NOT EXECUTED
                                                                      
  for (spage = 0; spage < ssc->pages; spage++)                        
  {                                                                   
    rtems_fdisk_page_desc* spd = &ssc->page_descriptors[spage];       
                                                                      
    if (!dsc && ssc->pages_active > 0)                                
    4584:	e596301c 	ldr	r3, [r6, #28]                                 
    4588:	e3530000 	cmp	r3, #0                                        
    458c:	0affff7b 	beq	4380 <rtems_fdisk_recycle_segment+0x48>       
    {                                                                 
      rtems_fdisk_error ("recycle: no available dst segment");        
    4590:	e59f01a4 	ldr	r0, [pc, #420]	; 473c <rtems_fdisk_recycle_segment+0x404><== NOT EXECUTED
    4594:	ebfffe25 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
      return EIO;                                                     
    4598:	e3a0b005 	mov	fp, #5                                        <== NOT EXECUTED
    459c:	eaffffd5 	b	44f8 <rtems_fdisk_recycle_segment+0x1c0>        <== NOT EXECUTED
#endif                                                                
  ret = rtems_fdisk_seg_read_page (fd, src_sc, src_page,              
                                   fd->copy_buffer);                  
  if (ret)                                                            
    return ret;                                                       
  return rtems_fdisk_seg_write_page (fd, dst_sc, dst_page,            
    45a0:	e1a00008 	mov	r0, r8                                        
    45a4:	e1a01005 	mov	r1, r5                                        
    45a8:	e59d2024 	ldr	r2, [sp, #36]	; 0x24                          
    45ac:	e5983068 	ldr	r3, [r8, #104]	; 0x68                         
    45b0:	ebfffde1 	bl	3d3c <rtems_fdisk_seg_write_page>              
#endif                                                                
      ret = rtems_fdisk_seg_copy_page (fd, ssc,                       
                                       spage + ssc->pages_desc,       
                                       dsc,                           
                                       dpage + dsc->pages_desc);      
      if (ret)                                                        
    45b4:	e250b000 	subs	fp, r0, #0                                   
    45b8:	1affffaf 	bne	447c <rtems_fdisk_recycle_segment+0x144>      
      uint32_t               dst_pages;                               
      rtems_fdisk_page_desc* dpd;                                     
      uint32_t               dpage;                                   
                                                                      
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
    45bc:	e59dc01c 	ldr	ip, [sp, #28]                                 
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      *dpd = *spd;                                                    
    45c0:	e89a0003 	ldm	sl, {r0, r1}                                  
      uint32_t               dst_pages;                               
      rtems_fdisk_page_desc* dpd;                                     
      uint32_t               dpage;                                   
                                                                      
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
    45c4:	e08c3184 	add	r3, ip, r4, lsl #3                            
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      *dpd = *spd;                                                    
    45c8:	e8830003 	stm	r3, {r0, r1}                                  
                                                                      
      ret = rtems_fdisk_seg_write_page_desc (fd,                      
    45cc:	e1a02004 	mov	r2, r4                                        
    45d0:	e1a00008 	mov	r0, r8                                        
    45d4:	e1a01005 	mov	r1, r5                                        
    45d8:	ebfffdc0 	bl	3ce0 <rtems_fdisk_seg_write_page_desc>         
                                             dsc,                     
                                             dpage, dpd);             
                                                                      
      if (ret)                                                        
    45dc:	e250b000 	subs	fp, r0, #0                                   
    45e0:	1a000042 	bne	46f0 <rtems_fdisk_recycle_segment+0x3b8>      
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return ret;                                                   
      }                                                               
                                                                      
      dsc->pages_active++;                                            
    45e4:	e595301c 	ldr	r3, [r5, #28]                                 
    45e8:	e2833001 	add	r3, r3, #1                                    
    45ec:	e585301c 	str	r3, [r5, #28]                                 
       */                                                             
                                                                      
      ssc->pages_active--;                                            
      ssc->pages_used++;                                              
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
    45f0:	e59a2004 	ldr	r2, [sl, #4]                                  
    45f4:	e5983018 	ldr	r3, [r8, #24]                                 
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
      ssc->pages_used++;                                              
    45f8:	e5960020 	ldr	r0, [r6, #32]                                 
       * segment will be erased. Power down could be a problem.       
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
    45fc:	e596c01c 	ldr	ip, [r6, #28]                                 
      ssc->pages_used++;                                              
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
    4600:	e0831182 	add	r1, r3, r2, lsl #3                            
       * segment will be erased. Power down could be a problem.       
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
    4604:	e24cc001 	sub	ip, ip, #1                                    
      ssc->pages_used++;                                              
    4608:	e2800001 	add	r0, r0, #1                                    
    460c:	e5860020 	str	r0, [r6, #32]                                 
       * segment will be erased. Power down could be a problem.       
       * We do the stats to make sure everything is as it should      
       * be.                                                          
       */                                                             
                                                                      
      ssc->pages_active--;                                            
    4610:	e586c01c 	str	ip, [r6, #28]                                 
      fd->blocks[spd->block].page    = dpage;                         
                                                                      
      /*                                                              
       * Place the segment on to the correct queue.                   
       */                                                             
      rtems_fdisk_queue_segment (fd, dsc);                            
    4614:	e1a00008 	mov	r0, r8                                        
       */                                                             
                                                                      
      ssc->pages_active--;                                            
      ssc->pages_used++;                                              
                                                                      
      fd->blocks[spd->block].segment = dsc;                           
    4618:	e7835182 	str	r5, [r3, r2, lsl #3]                          
      fd->blocks[spd->block].page    = dpage;                         
    461c:	e5814004 	str	r4, [r1, #4]                                  
                                                                      
      /*                                                              
       * Place the segment on to the correct queue.                   
       */                                                             
      rtems_fdisk_queue_segment (fd, dsc);                            
    4620:	e1a01005 	mov	r1, r5                                        
    4624:	ebfffe99 	bl	4090 <rtems_fdisk_queue_segment>               
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    4628:	e2852020 	add	r2, r5, #32                                   
    462c:	e8120006 	ldmda	r2, {r1, r2}                                
    4630:	e0821001 	add	r1, r2, r1                                    
    4634:	e5953024 	ldr	r3, [r5, #36]	; 0x24                          
                                                                      
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
    4638:	e5952014 	ldr	r2, [r5, #20]                                 
 * active, used and bad pages.                                        
 */                                                                   
static uint32_t                                                       
rtems_fdisk_seg_pages_available (const rtems_fdisk_segment_ctl* sc)   
{                                                                     
  return sc->pages - (sc->pages_active + sc->pages_used + sc->pages_bad);
    463c:	e0813003 	add	r3, r1, r3                                    
                                                                      
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
    4640:	e1520003 	cmp	r2, r3                                        
    4644:	0a000008 	beq	466c <rtems_fdisk_recycle_segment+0x334>      
        dsc = rtems_fdisk_seg_most_available (&fd->available);        
                                                                      
      (*pages)--;                                                     
    4648:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          
    464c:	e59c3000 	ldr	r3, [ip]                                      
    4650:	e2433001 	sub	r3, r3, #1                                    
    4654:	e58c3000 	str	r3, [ip]                                      
      uint32_t               dpage;                                   
                                                                      
      dpage = rtems_fdisk_seg_next_available_page (dsc);              
      dpd   = &dsc->page_descriptors[dpage];                          
                                                                      
      active++;                                                       
    4658:	e59dc020 	ldr	ip, [sp, #32]                                 
    465c:	e28cc001 	add	ip, ip, #1                                    
    4660:	e58dc020 	str	ip, [sp, #32]                                 
    4664:	e5961014 	ldr	r1, [r6, #20]                                 
      return EIO;                                                     
    }                                                                 
                                                                      
    if (rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_ACTIVE) &&
        !rtems_fdisk_page_desc_flags_set (spd, RTEMS_FDISK_PAGE_USED))
    {                                                                 
    4668:	eaffffa9 	b	4514 <rtems_fdisk_recycle_segment+0x1dc>        
      /*                                                              
       * Get new destination segment if necessary.                    
       */                                                             
      dst_pages = rtems_fdisk_seg_pages_available (dsc);              
      if (dst_pages == 0)                                             
        dsc = rtems_fdisk_seg_most_available (&fd->available);        
    466c:	e59d002c 	ldr	r0, [sp, #44]	; 0x2c                          
    4670:	ebfffcd4 	bl	39c8 <rtems_fdisk_seg_most_available>          
    4674:	e1a05000 	mov	r5, r0                                        
    4678:	eafffff2 	b	4648 <rtems_fdisk_recycle_segment+0x310>        
                      ssc->device, ssc->segment,                      
                      pages, active, used);                           
#endif                                                                
  if (ssc->pages_active != 0)                                         
  {                                                                   
    rtems_fdisk_error ("compacting: ssc pages not 0: %d",             
    467c:	e59f00bc 	ldr	r0, [pc, #188]	; 4740 <rtems_fdisk_recycle_segment+0x408><== NOT EXECUTED
    4680:	ebfffdea 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
    4684:	eaffffb2 	b	4554 <rtems_fdisk_recycle_segment+0x21c>        <== NOT EXECUTED
      rtems_fdisk_segment_queue_push_tail (&fd->available, sc);       
  }                                                                   
}                                                                     
                                                                      
static int                                                            
rtems_fdisk_recycle_segment (rtems_flashdisk*         fd,             
    4688:	e285101c 	add	r1, r5, #28                                   <== NOT EXECUTED
    468c:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
    4690:	e5950024 	ldr	r0, [r5, #36]	; 0x24                          <== NOT EXECUTED
    4694:	e0800001 	add	r0, r0, r1                                    <== NOT EXECUTED
    4698:	e0800002 	add	r0, r0, r2                                    <== NOT EXECUTED
                                                                      
      active++;                                                       
                                                                      
      if (dpage >= dsc->pages)                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d: " \                   
    469c:	e2851008 	add	r1, r5, #8                                    <== NOT EXECUTED
    46a0:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
    46a4:	e0603003 	rsb	r3, r0, r3                                    <== NOT EXECUTED
    46a8:	e59f0094 	ldr	r0, [pc, #148]	; 4744 <rtems_fdisk_recycle_segment+0x40c><== NOT EXECUTED
    46ac:	ebfffddf 	bl	3e30 <rtems_fdisk_error>                       <== NOT EXECUTED
                           "no page desc available: %d",              
                           dsc->device, dsc->segment,                 
                           rtems_fdisk_seg_pages_available (dsc));    
        dsc->failed = true;                                           
    46b0:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
    46b4:	e5853028 	str	r3, [r5, #40]	; 0x28                          <== NOT EXECUTED
        rtems_fdisk_queue_segment (fd, dsc);                          
    46b8:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
    46bc:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
    46c0:	ebfffe72 	bl	4090 <rtems_fdisk_queue_segment>               <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    46c4:	e5983040 	ldr	r3, [r8, #64]	; 0x40                          <== NOT EXECUTED
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
    46c8:	e5982044 	ldr	r2, [r8, #68]	; 0x44                          <== NOT EXECUTED
rtems_fdisk_segment_queue_push_head (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    46cc:	e5863000 	str	r3, [r6]                                      <== NOT EXECUTED
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
      queue->tail = sc;                                               
    queue->count++;                                                   
    46d0:	e5983048 	ldr	r3, [r8, #72]	; 0x48                          <== NOT EXECUTED
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    queue->head = sc;                                                 
                                                                      
    if (queue->tail == 0)                                             
    46d4:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
      queue->tail = sc;                                               
    queue->count++;                                                   
    46d8:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = queue->head;                                           
    queue->head = sc;                                                 
    46dc:	e5886040 	str	r6, [r8, #64]	; 0x40                          <== NOT EXECUTED
                                                                      
    if (queue->tail == 0)                                             
      queue->tail = sc;                                               
    46e0:	05886044 	streq	r6, [r8, #68]	; 0x44                        <== NOT EXECUTED
    queue->count++;                                                   
    46e4:	e5883048 	str	r3, [r8, #72]	; 0x48                          <== NOT EXECUTED
                           dsc->device, dsc->segment,                 
                           rtems_fdisk_seg_pages_available (dsc));    
        dsc->failed = true;                                           
        rtems_fdisk_queue_segment (fd, dsc);                          
        rtems_fdisk_segment_queue_push_head (&fd->used, ssc);         
        return EIO;                                                   
    46e8:	e3a0b005 	mov	fp, #5                                        <== NOT EXECUTED
    46ec:	eaffff81 	b	44f8 <rtems_fdisk_recycle_segment+0x1c0>        <== NOT EXECUTED
                                             dsc,                     
                                             dpage, dpd);             
                                                                      
      if (ret)                                                        
      {                                                               
        rtems_fdisk_error ("recycle: %02d-%03d-%03d=>"   \            
    46f0:	e2859008 	add	r9, r5, #8                                    <== NOT EXECUTED
    46f4:	e596200c 	ldr	r2, [r6, #12]                                 <== NOT EXECUTED
    46f8:	e8991200 	ldm	r9, {r9, ip}                                  <== NOT EXECUTED
    46fc:	e596a008 	ldr	sl, [r6, #8]                                  <== NOT EXECUTED
    4700:	e58d2018 	str	r2, [sp, #24]                                 <== NOT EXECUTED
    4704:	e58dc014 	str	ip, [sp, #20]                                 <== NOT EXECUTED
    4708:	eb007413 	bl	2175c <strerror>                               <== NOT EXECUTED
    470c:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
    4710:	e58d000c 	str	r0, [sp, #12]                                 <== NOT EXECUTED
    4714:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
    4718:	e59f0028 	ldr	r0, [pc, #40]	; 4748 <rtems_fdisk_recycle_segment+0x410><== NOT EXECUTED
    471c:	eaffff62 	b	44ac <rtems_fdisk_recycle_segment+0x174>        <== NOT EXECUTED
                                    uint32_t *pages)                  
{                                                                     
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
  uint32_t active = 0;                                                
    4720:	e58d1020 	str	r1, [sp, #32]                                 <== NOT EXECUTED
                                    rtems_fdisk_segment_ctl* dsc,     
                                    uint32_t *pages)                  
{                                                                     
  int      ret;                                                       
  uint32_t spage;                                                     
  uint32_t used = 0;                                                  
    4724:	e1a09001 	mov	r9, r1                                        <== NOT EXECUTED
    4728:	eaffff7c 	b	4520 <rtems_fdisk_recycle_segment+0x1e8>        <== NOT EXECUTED
                                                                      

00004000 <rtems_fdisk_segment_queue_insert_before>: static void rtems_fdisk_segment_queue_insert_before (rtems_fdisk_segment_ctl_queue* queue, rtems_fdisk_segment_ctl* item, rtems_fdisk_segment_ctl* sc) { if (item)
    4000:	e3510000 	cmp	r1, #0                                        
    4004:	0a00000c 	beq	403c <rtems_fdisk_segment_queue_insert_before+0x3c>
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    rtems_fdisk_segment_ctl*  it = queue->head;                       
    4008:	e5903000 	ldr	r3, [r0]                                      
                                                                      
    while (it)                                                        
    400c:	e3530000 	cmp	r3, #0                                        
    4010:	0a000009 	beq	403c <rtems_fdisk_segment_queue_insert_before+0x3c>
    {                                                                 
      if (item == it)                                                 
    4014:	e1510003 	cmp	r1, r3                                        
                                         rtems_fdisk_segment_ctl*       item,
                                         rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (item)                                                           
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    4018:	01a0c000 	moveq	ip, r0                                      
    rtems_fdisk_segment_ctl*  it = queue->head;                       
                                                                      
    while (it)                                                        
    {                                                                 
      if (item == it)                                                 
    401c:	1a000002 	bne	402c <rtems_fdisk_segment_queue_insert_before+0x2c>
    4020:	ea000014 	b	4078 <rtems_fdisk_segment_queue_insert_before+0x78>
    4024:	e1510003 	cmp	r1, r3                                        
    4028:	0a000012 	beq	4078 <rtems_fdisk_segment_queue_insert_before+0x78>
        *prev = sc;                                                   
        queue->count++;                                               
        return;                                                       
      }                                                               
                                                                      
      prev = &it->next;                                               
    402c:	e1a0c003 	mov	ip, r3                                        
      it = it->next;                                                  
    4030:	e5933000 	ldr	r3, [r3]                                      
  if (item)                                                           
  {                                                                   
    rtems_fdisk_segment_ctl** prev = &queue->head;                    
    rtems_fdisk_segment_ctl*  it = queue->head;                       
                                                                      
    while (it)                                                        
    4034:	e3530000 	cmp	r3, #0                                        
    4038:	1afffff9 	bne	4024 <rtems_fdisk_segment_queue_insert_before+0x24>
 */                                                                   
static void                                                           
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
    403c:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
    4040:	012fff1e 	bxeq	lr                                           <== NOT EXECUTED
  {                                                                   
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    4044:	e5903000 	ldr	r3, [r0]                                      <== NOT EXECUTED
    4048:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
rtems_fdisk_segment_queue_push_tail (rtems_fdisk_segment_ctl_queue* queue,
                                     rtems_fdisk_segment_ctl*       sc)
{                                                                     
  if (sc)                                                             
  {                                                                   
    sc->next = 0;                                                     
    404c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    4050:	e5823000 	str	r3, [r2]                                      <== NOT EXECUTED
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
    4054:	15903004 	ldrne	r3, [r0, #4]                                <== NOT EXECUTED
    4058:	15832000 	strne	r2, [r3]                                    <== NOT EXECUTED
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    }                                                                 
                                                                      
    queue->count++;                                                   
    405c:	e5903008 	ldr	r3, [r0, #8]                                  <== NOT EXECUTED
    4060:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
    sc->next = 0;                                                     
                                                                      
    if (queue->head)                                                  
    {                                                                 
      queue->tail->next = sc;                                         
      queue->tail       = sc;                                         
    4064:	15802004 	strne	r2, [r0, #4]                                <== NOT EXECUTED
    }                                                                 
    else                                                              
    {                                                                 
      queue->head = queue->tail = sc;                                 
    4068:	05802004 	streq	r2, [r0, #4]                                <== NOT EXECUTED
    406c:	05802000 	streq	r2, [r0]                                    <== NOT EXECUTED
    }                                                                 
                                                                      
    queue->count++;                                                   
    4070:	e5803008 	str	r3, [r0, #8]                                  <== NOT EXECUTED
    4074:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
    {                                                                 
      if (item == it)                                                 
      {                                                               
        sc->next = item;                                              
        *prev = sc;                                                   
        queue->count++;                                               
    4078:	e5903008 	ldr	r3, [r0, #8]                                  
    407c:	e2833001 	add	r3, r3, #1                                    
                                                                      
    while (it)                                                        
    {                                                                 
      if (item == it)                                                 
      {                                                               
        sc->next = item;                                              
    4080:	e5821000 	str	r1, [r2]                                      
        *prev = sc;                                                   
    4084:	e58c2000 	str	r2, [ip]                                      
        queue->count++;                                               
    4088:	e5803008 	str	r3, [r0, #8]                                  
        return;                                                       
    408c:	e12fff1e 	bx	lr                                             
                                                                      

00003da4 <rtems_fdisk_warning>: * @param ... The arguments for the format text. * @return int The number of bytes written to the output. */ static int rtems_fdisk_warning (const rtems_flashdisk* fd, const char *format, ...) {
    3da4:	e92d000e 	push	{r1, r2, r3}                                 <== NOT EXECUTED
    3da8:	e92d4030 	push	{r4, r5, lr}                                 <== NOT EXECUTED
  int ret = 0;                                                        
  if (fd->info_level >= 1)                                            
    3dac:	e590506c 	ldr	r5, [r0, #108]	; 0x6c                         <== NOT EXECUTED
    3db0:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
 * @param ... The arguments for the format text.                      
 * @return int The number of bytes written to the output.             
 */                                                                   
static int                                                            
rtems_fdisk_warning (const rtems_flashdisk* fd, const char *format, ...)
{                                                                     
    3db4:	e24dd004 	sub	sp, sp, #4                                    <== NOT EXECUTED
  int ret = 0;                                                        
  if (fd->info_level >= 1)                                            
    3db8:	0a000015 	beq	3e14 <rtems_fdisk_warning+0x70>               <== NOT EXECUTED
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:warning:");                               
    3dbc:	e59f4064 	ldr	r4, [pc, #100]	; 3e28 <rtems_fdisk_warning+0x84><== NOT EXECUTED
    3dc0:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
{                                                                     
  int ret = 0;                                                        
  if (fd->info_level >= 1)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    3dc4:	e28dc014 	add	ip, sp, #20                                   <== NOT EXECUTED
    fprintf (stdout, "fdisk:warning:");                               
    3dc8:	e5933008 	ldr	r3, [r3, #8]                                  <== NOT EXECUTED
    3dcc:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
    3dd0:	e3a0200e 	mov	r2, #14                                       <== NOT EXECUTED
    3dd4:	e59f0050 	ldr	r0, [pc, #80]	; 3e2c <rtems_fdisk_warning+0x88><== NOT EXECUTED
{                                                                     
  int ret = 0;                                                        
  if (fd->info_level >= 1)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    3dd8:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
    fprintf (stdout, "fdisk:warning:");                               
    3ddc:	eb007072 	bl	1ffac <fwrite>                                 <== NOT EXECUTED
    ret =  vfprintf (stdout, format, args);                           
    3de0:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    3de4:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
    3de8:	e59d2000 	ldr	r2, [sp]                                      <== NOT EXECUTED
    3dec:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    3df0:	eb009190 	bl	28438 <vfprintf>                               <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
    3df4:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
  if (fd->info_level >= 1)                                            
  {                                                                   
    va_list args;                                                     
    va_start (args, format);                                          
    fprintf (stdout, "fdisk:warning:");                               
    ret =  vfprintf (stdout, format, args);                           
    3df8:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
    fprintf (stdout, "\n");                                           
    3dfc:	e5931008 	ldr	r1, [r3, #8]                                  <== NOT EXECUTED
    3e00:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
    3e04:	eb006fec 	bl	1fdbc <fputc>                                  <== NOT EXECUTED
    fflush (stdout);                                                  
    3e08:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    3e0c:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
    3e10:	eb006edc 	bl	1f988 <fflush>                                 <== NOT EXECUTED
    va_end (args);                                                    
  }                                                                   
  return ret;                                                         
}                                                                     
    3e14:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    3e18:	e28dd004 	add	sp, sp, #4                                    <== NOT EXECUTED
    3e1c:	e8bd4030 	pop	{r4, r5, lr}                                  <== NOT EXECUTED
    3e20:	e28dd00c 	add	sp, sp, #12                                   <== NOT EXECUTED
    3e24:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00003a78 <rtems_filesystem_do_unmount>: } void rtems_filesystem_do_unmount( rtems_filesystem_mount_table_entry_t *mt_entry ) {
    3a78:	e92d4030 	push	{r4, r5, lr}                                 
 */                                                                   
#include <rtems/userenv.h>                                            
                                                                      
static inline void rtems_libio_lock( void )                           
{                                                                     
  rtems_semaphore_obtain( rtems_libio_semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
    3a7c:	e59f506c 	ldr	r5, [pc, #108]	; 3af0 <rtems_filesystem_do_unmount+0x78>
    3a80:	e3a01000 	mov	r1, #0                                        
    3a84:	e1a04000 	mov	r4, r0                                        
    3a88:	e1a02001 	mov	r2, r1                                        
    3a8c:	e5950000 	ldr	r0, [r5]                                      
    3a90:	eb000ad7 	bl	65f4 <rtems_semaphore_obtain>                  
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    3a94:	e894000c 	ldm	r4, {r2, r3}                                  
}                                                                     
                                                                      
static inline void rtems_libio_unlock( void )                         
{                                                                     
  rtems_semaphore_release( rtems_libio_semaphore );                   
    3a98:	e5950000 	ldr	r0, [r5]                                      
  next->previous = previous;                                          
    3a9c:	e5823004 	str	r3, [r2, #4]                                  
  previous->next = next;                                              
    3aa0:	e5832000 	str	r2, [r3]                                      
    3aa4:	eb000b1b 	bl	6718 <rtems_semaphore_release>                 
  rtems_filesystem_mt_lock();                                         
  rtems_chain_extract_unprotected(&mt_entry->mt_node);                
  rtems_filesystem_mt_unlock();                                       
  rtems_filesystem_global_location_release(mt_entry->mt_point_node);  
    3aa8:	e5940020 	ldr	r0, [r4, #32]                                 
    3aac:	eb000069 	bl	3c58 <rtems_filesystem_global_location_release>
  (*mt_entry->ops->fsunmount_me_h)(mt_entry);                         
    3ab0:	e1a00004 	mov	r0, r4                                        
    3ab4:	e594300c 	ldr	r3, [r4, #12]                                 
    3ab8:	e1a0e00f 	mov	lr, pc                                        
    3abc:	e593f03c 	ldr	pc, [r3, #60]	; 0x3c                          
                                                                      
  if (mt_entry->unmount_task != 0) {                                  
    3ac0:	e594003c 	ldr	r0, [r4, #60]	; 0x3c                          
    3ac4:	e3500000 	cmp	r0, #0                                        
    3ac8:	0a000003 	beq	3adc <rtems_filesystem_do_unmount+0x64>       
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_send(    
  rtems_id id                                                         
)                                                                     
{                                                                     
  return rtems_event_system_send( id, RTEMS_EVENT_SYSTEM_TRANSIENT ); 
    3acc:	e3a01102 	mov	r1, #-2147483648	; 0x80000000                 
    3ad0:	eb000b39 	bl	67bc <rtems_event_system_send>                 
    rtems_status_code sc =                                            
      rtems_event_transient_send(mt_entry->unmount_task);             
    if (sc != RTEMS_SUCCESSFUL) {                                     
    3ad4:	e3500000 	cmp	r0, #0                                        
    3ad8:	1a000002 	bne	3ae8 <rtems_filesystem_do_unmount+0x70>       
      rtems_fatal_error_occurred(0xdeadbeef);                         
    }                                                                 
  }                                                                   
                                                                      
  free(mt_entry);                                                     
    3adc:	e1a00004 	mov	r0, r4                                        
}                                                                     
    3ae0:	e8bd4030 	pop	{r4, r5, lr}                                  
    if (sc != RTEMS_SUCCESSFUL) {                                     
      rtems_fatal_error_occurred(0xdeadbeef);                         
    }                                                                 
  }                                                                   
                                                                      
  free(mt_entry);                                                     
    3ae4:	eafffa8a 	b	2514 <free>                                     
                                                                      
  if (mt_entry->unmount_task != 0) {                                  
    rtems_status_code sc =                                            
      rtems_event_transient_send(mt_entry->unmount_task);             
    if (sc != RTEMS_SUCCESSFUL) {                                     
      rtems_fatal_error_occurred(0xdeadbeef);                         
    3ae8:	e59f0004 	ldr	r0, [pc, #4]	; 3af4 <rtems_filesystem_do_unmount+0x7c><== NOT EXECUTED
    3aec:	eb000c9a 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

0000b3a8 <rtems_filesystem_eval_path_next_token>: } void rtems_filesystem_eval_path_next_token( rtems_filesystem_eval_path_context_t *ctx ) {
    b3a8:	e92d4010 	push	{r4, lr}                                     
    b3ac:	e1a04000 	mov	r4, r0                                        
  rtems_filesystem_eval_path_eat_delimiter(ctx);                      
    b3b0:	ebffffe8 	bl	b358 <rtems_filesystem_eval_path_eat_delimiter>
  ctx->pathlen = (size_t) (end - current);                            
}                                                                     
                                                                      
static void next_token(rtems_filesystem_eval_path_context_t *ctx)     
{                                                                     
  const char *begin = ctx->path;                                      
    b3b4:	e594c000 	ldr	ip, [r4]                                      
  const char *end = begin + ctx->pathlen;                             
    b3b8:	e5940004 	ldr	r0, [r4, #4]                                  
    b3bc:	e08c0000 	add	r0, ip, r0                                    
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    b3c0:	e15c0000 	cmp	ip, r0                                        
    b3c4:	01a0100c 	moveq	r1, ip                                      
    b3c8:	01a0300c 	moveq	r3, ip                                      
    b3cc:	03a02000 	moveq	r2, #0                                      
    b3d0:	0a000010 	beq	b418 <rtems_filesystem_eval_path_next_token+0x70>
    b3d4:	e5dc3000 	ldrb	r3, [ip]                                     
    b3d8:	e353002f 	cmp	r3, #47	; 0x2f                                
    b3dc:	1353005c 	cmpne	r3, #92	; 0x5c                              
    b3e0:	e1a0100c 	mov	r1, ip                                        
  ctx->pathlen = (size_t) (end - current);                            
  ctx->token = begin;                                                 
  ctx->tokenlen = (size_t) (current - begin);                         
}                                                                     
                                                                      
void rtems_filesystem_eval_path_next_token(                           
    b3e4:	e1a0300c 	mov	r3, ip                                        
{                                                                     
  const char *begin = ctx->path;                                      
  const char *end = begin + ctx->pathlen;                             
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    b3e8:	03a02000 	moveq	r2, #0                                      
    b3ec:	1a000004 	bne	b404 <rtems_filesystem_eval_path_next_token+0x5c>
    b3f0:	ea000008 	b	b418 <rtems_filesystem_eval_path_next_token+0x70><== NOT EXECUTED
    b3f4:	e5f12001 	ldrb	r2, [r1, #1]!                                
    b3f8:	e352002f 	cmp	r2, #47	; 0x2f                                
    b3fc:	1352005c 	cmpne	r2, #92	; 0x5c                              
    b400:	0a000009 	beq	b42c <rtems_filesystem_eval_path_next_token+0x84>
    ++current;                                                        
    b404:	e2833001 	add	r3, r3, #1                                    
{                                                                     
  const char *begin = ctx->path;                                      
  const char *end = begin + ctx->pathlen;                             
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    b408:	e1500003 	cmp	r0, r3                                        
    b40c:	1afffff8 	bne	b3f4 <rtems_filesystem_eval_path_next_token+0x4c>
    b410:	e1a01000 	mov	r1, r0                                        
    b414:	e06c2000 	rsb	r2, ip, r0                                    
    ++current;                                                        
  }                                                                   
                                                                      
  ctx->path = current;                                                
  ctx->pathlen = (size_t) (end - current);                            
    b418:	e0610000 	rsb	r0, r1, r0                                    
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    ++current;                                                        
  }                                                                   
                                                                      
  ctx->path = current;                                                
    b41c:	e5843000 	str	r3, [r4]                                      
  ctx->pathlen = (size_t) (end - current);                            
  ctx->token = begin;                                                 
    b420:	e9841001 	stmib	r4, {r0, ip}                                
  ctx->tokenlen = (size_t) (current - begin);                         
    b424:	e584200c 	str	r2, [r4, #12]                                 
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_eat_delimiter(ctx);                      
  next_token(ctx);                                                    
}                                                                     
    b428:	e8bd8010 	pop	{r4, pc}                                      
{                                                                     
  const char *begin = ctx->path;                                      
  const char *end = begin + ctx->pathlen;                             
  const char *current = begin;                                        
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    b42c:	e1a01003 	mov	r1, r3                                        
    b430:	e06c2003 	rsb	r2, ip, r3                                    
    ++current;                                                        
  }                                                                   
                                                                      
  ctx->path = current;                                                
  ctx->pathlen = (size_t) (end - current);                            
    b434:	e0610000 	rsb	r0, r1, r0                                    
                                                                      
  while (current != end && !rtems_filesystem_is_delimiter(*current)) {
    ++current;                                                        
  }                                                                   
                                                                      
  ctx->path = current;                                                
    b438:	e5843000 	str	r3, [r4]                                      
  ctx->pathlen = (size_t) (end - current);                            
  ctx->token = begin;                                                 
    b43c:	e9841001 	stmib	r4, {r0, ip}                                
  ctx->tokenlen = (size_t) (current - begin);                         
    b440:	e584200c 	str	r2, [r4, #12]                                 
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_eat_delimiter(ctx);                      
  next_token(ctx);                                                    
}                                                                     
    b444:	e8bd8010 	pop	{r4, pc}                                      
                                                                      

0000395c <rtems_filesystem_eval_path_recursive>: void rtems_filesystem_eval_path_recursive( rtems_filesystem_eval_path_context_t *ctx, const char *path, size_t pathlen ) {
    395c:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
  if (pathlen > 0) {                                                  
    3960:	e2526000 	subs	r6, r2, #0                                   
void rtems_filesystem_eval_path_recursive(                            
  rtems_filesystem_eval_path_context_t *ctx,                          
  const char *path,                                                   
  size_t pathlen                                                      
)                                                                     
{                                                                     
    3964:	e1a04000 	mov	r4, r0                                        
    3968:	e1a05001 	mov	r5, r1                                        
  if (pathlen > 0) {                                                  
    396c:	0a000019 	beq	39d8 <rtems_filesystem_eval_path_recursive+0x7c>
    if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {         
    3970:	e5903014 	ldr	r3, [r0, #20]                                 
    3974:	e353001f 	cmp	r3, #31                                       
    3978:	ca00001d 	bgt	39f4 <rtems_filesystem_eval_path_recursive+0x98>
      const char *saved_path = ctx->path;                             
      size_t saved_pathlen = ctx->pathlen;                            
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
    397c:	e5d12000 	ldrb	r2, [r1]                                     
    3980:	e352002f 	cmp	r2, #47	; 0x2f                                
    3984:	1352005c 	cmpne	r2, #92	; 0x5c                              
  size_t pathlen                                                      
)                                                                     
{                                                                     
  if (pathlen > 0) {                                                  
    if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {         
      const char *saved_path = ctx->path;                             
    3988:	e5908000 	ldr	r8, [r0]                                      
      size_t saved_pathlen = ctx->pathlen;                            
    398c:	e5907004 	ldr	r7, [r0, #4]                                  
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
    3990:	0a000013 	beq	39e4 <rtems_filesystem_eval_path_recursive+0x88>
      }                                                               
                                                                      
      ctx->path = path;                                               
      ctx->pathlen = pathlen;                                         
                                                                      
      ++ctx->recursionlevel;                                          
    3994:	e2833001 	add	r3, r3, #1                                    
      if (rtems_filesystem_is_delimiter(path [0])) {                  
        rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);       
      }                                                               
                                                                      
      ctx->path = path;                                               
      ctx->pathlen = pathlen;                                         
    3998:	e8840060 	stm	r4, {r5, r6}                                  
                                                                      
      ++ctx->recursionlevel;                                          
    399c:	e5843014 	str	r3, [r4, #20]                                 
      while (ctx->pathlen > 0) {                                      
        (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);           
    39a0:	e594302c 	ldr	r3, [r4, #44]	; 0x2c                          
    39a4:	e1a00004 	mov	r0, r4                                        
    39a8:	e593300c 	ldr	r3, [r3, #12]                                 
    39ac:	e1a0e00f 	mov	lr, pc                                        
    39b0:	e593f008 	ldr	pc, [r3, #8]                                  
                                                                      
      ctx->path = path;                                               
      ctx->pathlen = pathlen;                                         
                                                                      
      ++ctx->recursionlevel;                                          
      while (ctx->pathlen > 0) {                                      
    39b4:	e5943004 	ldr	r3, [r4, #4]                                  
    39b8:	e3530000 	cmp	r3, #0                                        
    39bc:	1afffff7 	bne	39a0 <rtems_filesystem_eval_path_recursive+0x44>
        (*ctx->currentloc.mt_entry->ops->eval_path_h)(ctx);           
      }                                                               
      --ctx->recursionlevel;                                          
    39c0:	e5943014 	ldr	r3, [r4, #20]                                 
    39c4:	e2433001 	sub	r3, r3, #1                                    
    39c8:	e5843014 	str	r3, [r4, #20]                                 
                                                                      
      ctx->path = saved_path;                                         
    39cc:	e5848000 	str	r8, [r4]                                      
      ctx->pathlen = saved_pathlen;                                   
    39d0:	e5847004 	str	r7, [r4, #4]                                  
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
  }                                                                   
}                                                                     
    39d4:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
      ctx->pathlen = saved_pathlen;                                   
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
    39d8:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
  }                                                                   
}                                                                     
    39dc:	e8bd41f0 	pop	{r4, r5, r6, r7, r8, lr}                      <== NOT EXECUTED
      ctx->pathlen = saved_pathlen;                                   
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
    39e0:	eafffee2 	b	3570 <rtems_filesystem_eval_path_error>         <== NOT EXECUTED
    if (ctx->recursionlevel < RTEMS_FILESYSTEM_SYMLOOP_MAX) {         
      const char *saved_path = ctx->path;                             
      size_t saved_pathlen = ctx->pathlen;                            
                                                                      
      if (rtems_filesystem_is_delimiter(path [0])) {                  
        rtems_filesystem_eval_path_restart(ctx, &ctx->rootloc);       
    39e4:	e2801030 	add	r1, r0, #48	; 0x30                            
    39e8:	ebffffc1 	bl	38f4 <rtems_filesystem_eval_path_restart>      
    39ec:	e5943014 	ldr	r3, [r4, #20]                                 
    39f0:	eaffffe7 	b	3994 <rtems_filesystem_eval_path_recursive+0x38>
      --ctx->recursionlevel;                                          
                                                                      
      ctx->path = saved_path;                                         
      ctx->pathlen = saved_pathlen;                                   
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    39f4:	e3a0105c 	mov	r1, #92	; 0x5c                                
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error(ctx, ENOENT);                    
  }                                                                   
}                                                                     
    39f8:	e8bd41f0 	pop	{r4, r5, r6, r7, r8, lr}                      
      --ctx->recursionlevel;                                          
                                                                      
      ctx->path = saved_path;                                         
      ctx->pathlen = saved_pathlen;                                   
    } else {                                                          
      rtems_filesystem_eval_path_error(ctx, ELOOP);                   
    39fc:	eafffedb 	b	3570 <rtems_filesystem_eval_path_error>         
                                                                      

0000223c <rtems_filesystem_initialize>: /* * Default mode for created files. */ void rtems_filesystem_initialize( void ) {
    223c:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  int rv = 0;                                                         
  const rtems_filesystem_mount_configuration *root_config =           
    &rtems_filesystem_root_configuration;                             
                                                                      
  rv = mount(                                                         
    2240:	e59fc044 	ldr	ip, [pc, #68]	; 228c <rtems_filesystem_initialize+0x50>
    2244:	e89c000f 	ldm	ip, {r0, r1, r2, r3}                          
    2248:	e59cc010 	ldr	ip, [ip, #16]                                 
/*                                                                    
 *  Default mode for created files.                                   
 */                                                                   
                                                                      
void rtems_filesystem_initialize( void )                              
{                                                                     
    224c:	e24dd004 	sub	sp, sp, #4                                    
  int rv = 0;                                                         
  const rtems_filesystem_mount_configuration *root_config =           
    &rtems_filesystem_root_configuration;                             
                                                                      
  rv = mount(                                                         
    2250:	e58dc000 	str	ip, [sp]                                      
    2254:	eb0001f3 	bl	2a28 <mount>                                   
    root_config->target,                                              
    root_config->filesystemtype,                                      
    root_config->options,                                             
    root_config->data                                                 
  );                                                                  
  if ( rv != 0 )                                                      
    2258:	e3500000 	cmp	r0, #0                                        
    225c:	1a000006 	bne	227c <rtems_filesystem_initialize+0x40>       
   *                                                                  
   *  NOTE: UNIX root is 755 and owned by root/root (0/0).  It is actually
   *        created that way by the IMFS.                             
   */                                                                 
                                                                      
  rv = mkdir( "/dev", 0777);                                          
    2260:	e59f0028 	ldr	r0, [pc, #40]	; 2290 <rtems_filesystem_initialize+0x54>
    2264:	e59f1028 	ldr	r1, [pc, #40]	; 2294 <rtems_filesystem_initialize+0x58>
    2268:	eb0001b2 	bl	2938 <mkdir>                                   
  if ( rv != 0 )                                                      
    226c:	e3500000 	cmp	r0, #0                                        
    2270:	1a000003 	bne	2284 <rtems_filesystem_initialize+0x48>       
   *  it will be mounted onto is created.  Moreover, if it is going to
   *  use a device, then it is REALLY unfair to attempt this          
   *  before device drivers are initialized.  So we return via a base 
   *  filesystem image and nothing auto-mounted at this point.        
   */                                                                 
}                                                                     
    2274:	e28dd004 	add	sp, sp, #4                                    
    2278:	e8bd8000 	pop	{pc}                                          
    root_config->filesystemtype,                                      
    root_config->options,                                             
    root_config->data                                                 
  );                                                                  
  if ( rv != 0 )                                                      
    rtems_fatal_error_occurred( 0xABCD0002 );                         
    227c:	e59f0014 	ldr	r0, [pc, #20]	; 2298 <rtems_filesystem_initialize+0x5c><== NOT EXECUTED
    2280:	eb0012b5 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
   *        created that way by the IMFS.                             
   */                                                                 
                                                                      
  rv = mkdir( "/dev", 0777);                                          
  if ( rv != 0 )                                                      
    rtems_fatal_error_occurred( 0xABCD0003 );                         
    2284:	e59f0010 	ldr	r0, [pc, #16]	; 229c <rtems_filesystem_initialize+0x60><== NOT EXECUTED
    2288:	eb0012b3 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

00003af8 <rtems_filesystem_location_remove_from_mt_entry>: } void rtems_filesystem_location_remove_from_mt_entry( rtems_filesystem_location_info_t *loc ) {
    3af8:	e92d0030 	push	{r4, r5}                                     
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    3afc:	e10f4000 	mrs	r4, CPSR                                      
    3b00:	e3843080 	orr	r3, r4, #128	; 0x80                           
    3b04:	e129f003 	msr	CPSR_fc, r3                                   
  rtems_filesystem_mt_entry_declare_lock_context(lock_context);       
  bool do_unmount;                                                    
                                                                      
  rtems_filesystem_mt_entry_lock(lock_context);                       
  rtems_chain_extract_unprotected(&loc->mt_entry_node);               
  do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);  
    3b08:	e5903014 	ldr	r3, [r0, #20]                                 
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    && mt_entry->mt_fs_root->reference_count == 1;                    
    3b0c:	e5d3c028 	ldrb	ip, [r3, #40]	; 0x28                         
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    3b10:	e8900006 	ldm	r0, {r1, r2}                                  
    3b14:	e35c0000 	cmp	ip, #0                                        
  next->previous = previous;                                          
    3b18:	e5812004 	str	r2, [r1, #4]                                  
  previous->next = next;                                              
    3b1c:	e5821000 	str	r1, [r2]                                      
                                                                      
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    3b20:	13a0c000 	movne	ip, #0                                      
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    && mt_entry->mt_fs_root->reference_count == 1;                    
    3b24:	1a000003 	bne	3b38 <rtems_filesystem_location_remove_from_mt_entry+0x40>
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    && rtems_chain_has_only_one_node( &mt_entry->location_chain )     
    3b28:	e5931014 	ldr	r1, [r3, #20]                                 
    3b2c:	e593201c 	ldr	r2, [r3, #28]                                 
    3b30:	e1510002 	cmp	r1, r2                                        
    3b34:	0a000007 	beq	3b58 <rtems_filesystem_location_remove_from_mt_entry+0x60>
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    3b38:	e129f004 	msr	CPSR_fc, r4                                   
  rtems_filesystem_mt_entry_unlock(lock_context);                     
                                                                      
  if (do_unmount) {                                                   
    3b3c:	e35c0000 	cmp	ip, #0                                        
    3b40:	1a000001 	bne	3b4c <rtems_filesystem_location_remove_from_mt_entry+0x54>
    rtems_filesystem_do_unmount(loc->mt_entry);                       
  }                                                                   
}                                                                     
    3b44:	e8bd0030 	pop	{r4, r5}                                      
    3b48:	e12fff1e 	bx	lr                                             
  rtems_chain_extract_unprotected(&loc->mt_entry_node);               
  do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);  
  rtems_filesystem_mt_entry_unlock(lock_context);                     
                                                                      
  if (do_unmount) {                                                   
    rtems_filesystem_do_unmount(loc->mt_entry);                       
    3b4c:	e5900014 	ldr	r0, [r0, #20]                                 <== NOT EXECUTED
  }                                                                   
}                                                                     
    3b50:	e8bd0030 	pop	{r4, r5}                                      <== NOT EXECUTED
  rtems_chain_extract_unprotected(&loc->mt_entry_node);               
  do_unmount = rtems_filesystem_is_ready_for_unmount(loc->mt_entry);  
  rtems_filesystem_mt_entry_unlock(lock_context);                     
                                                                      
  if (do_unmount) {                                                   
    rtems_filesystem_do_unmount(loc->mt_entry);                       
    3b54:	eaffffc7 	b	3a78 <rtems_filesystem_do_unmount>              <== NOT EXECUTED
    && mt_entry->mt_fs_root->reference_count == 1;                    
    3b58:	e5932024 	ldr	r2, [r3, #36]	; 0x24                          
    3b5c:	e5922018 	ldr	r2, [r2, #24]                                 
    3b60:	e3520001 	cmp	r2, #1                                        
    3b64:	1afffff3 	bne	3b38 <rtems_filesystem_location_remove_from_mt_entry+0x40>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
    3b68:	e2831014 	add	r1, r3, #20                                   <== NOT EXECUTED
    3b6c:	e2835018 	add	r5, r3, #24                                   <== NOT EXECUTED
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
    3b70:	e583c018 	str	ip, [r3, #24]                                 <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    3b74:	e5835014 	str	r5, [r3, #20]                                 <== NOT EXECUTED
  head->previous = NULL;                                              
  tail->previous = head;                                              
    3b78:	e583101c 	str	r1, [r3, #28]                                 <== NOT EXECUTED
                                                                      
static inline bool rtems_filesystem_is_ready_for_unmount(             
  rtems_filesystem_mount_table_entry_t *mt_entry                      
)                                                                     
{                                                                     
  bool ready = !mt_entry->mounted                                     
    3b7c:	e1a0c002 	mov	ip, r2                                        <== NOT EXECUTED
    3b80:	eaffffec 	b	3b38 <rtems_filesystem_location_remove_from_mt_entry+0x40><== NOT EXECUTED
                                                                      

00003d8c <rtems_filesystem_location_transform_to_global>: } rtems_filesystem_global_location_t *rtems_filesystem_location_transform_to_global( rtems_filesystem_location_info_t *loc ) {
    3d8c:	e92d4030 	push	{r4, r5, lr}                                 
    3d90:	e1a05000 	mov	r5, r0                                        
    3d94:	e24dd004 	sub	sp, sp, #4                                    
  rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
    3d98:	e3a00024 	mov	r0, #36	; 0x24                                
    3d9c:	ebfffaaa 	bl	284c <malloc>                                  
                                                                      
  if (global_loc != NULL) {                                           
    3da0:	e2504000 	subs	r4, r0, #0                                   
    3da4:	0a00000b 	beq	3dd8 <rtems_filesystem_location_transform_to_global+0x4c>
    global_loc->reference_count = 1;                                  
    global_loc->deferred_released_next = NULL;                        
    3da8:	e3a03000 	mov	r3, #0                                        
)                                                                     
{                                                                     
  rtems_filesystem_global_location_t *global_loc = malloc(sizeof(*global_loc));
                                                                      
  if (global_loc != NULL) {                                           
    global_loc->reference_count = 1;                                  
    3dac:	e3a02001 	mov	r2, #1                                        
    3db0:	e5842018 	str	r2, [r4, #24]                                 
    global_loc->deferred_released_next = NULL;                        
    3db4:	e584301c 	str	r3, [r4, #28]                                 
    global_loc->deferred_released_count = 0;                          
    3db8:	e5843020 	str	r3, [r4, #32]                                 
    rtems_filesystem_location_copy(&global_loc->location, loc);       
    3dbc:	e1a01005 	mov	r1, r5                                        
    3dc0:	ebffff0e 	bl	3a00 <rtems_filesystem_location_copy>          
    rtems_filesystem_location_remove_from_mt_entry(loc);              
    3dc4:	e1a00005 	mov	r0, r5                                        
    3dc8:	ebffff4a 	bl	3af8 <rtems_filesystem_location_remove_from_mt_entry>
    global_loc = rtems_filesystem_global_location_obtain_null();      
    errno = ENOMEM;                                                   
  }                                                                   
                                                                      
  return global_loc;                                                  
}                                                                     
    3dcc:	e1a00004 	mov	r0, r4                                        
    3dd0:	e28dd004 	add	sp, sp, #4                                    
    3dd4:	e8bd8030 	pop	{r4, r5, pc}                                  
    global_loc->deferred_released_next = NULL;                        
    global_loc->deferred_released_count = 0;                          
    rtems_filesystem_location_copy(&global_loc->location, loc);       
    rtems_filesystem_location_remove_from_mt_entry(loc);              
  } else {                                                            
    rtems_filesystem_location_free(loc);                              
    3dd8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    3ddc:	eb001b7e 	bl	abdc <rtems_filesystem_location_free>          <== NOT EXECUTED
);                                                                    
                                                                      
static inline rtems_filesystem_global_location_t *                    
rtems_filesystem_global_location_obtain_null(void)                    
{                                                                     
  rtems_filesystem_global_location_t *global_loc = NULL;              
    3de0:	e28d0004 	add	r0, sp, #4                                    <== NOT EXECUTED
    3de4:	e5204004 	str	r4, [r0, #-4]!                                <== NOT EXECUTED
                                                                      
  return rtems_filesystem_global_location_obtain( &global_loc );      
    3de8:	e1a0000d 	mov	r0, sp                                        <== NOT EXECUTED
    3dec:	ebffffb6 	bl	3ccc <rtems_filesystem_global_location_obtain> <== NOT EXECUTED
    3df0:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    global_loc = rtems_filesystem_global_location_obtain_null();      
    errno = ENOMEM;                                                   
    3df4:	eb00267b 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
    3df8:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
    3dfc:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    3e00:	eafffff1 	b	3dcc <rtems_filesystem_location_transform_to_global+0x40><== NOT EXECUTED
                                                                      

00002e38 <rtems_gxx_key_create>: } return 0; } int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *)) {
    2e38:	e92d4070 	push	{r4, r5, r6, lr}                             
    2e3c:	e1a06000 	mov	r6, r0                                        
   * pointer to the buffer that will hold the value of the key itself.
   * We have to to this, because the others functions on this interface
   * deal with the value of the key, as used with the POSIX API.      
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
    2e40:	e3a00008 	mov	r0, #8                                        
  }                                                                   
  return 0;                                                           
}                                                                     
                                                                      
int rtems_gxx_key_create (__gthread_key_t *key, void (*dtor) (void *))
{                                                                     
    2e44:	e1a05001 	mov	r5, r1                                        
   * pointer to the buffer that will hold the value of the key itself.
   * We have to to this, because the others functions on this interface
   * deal with the value of the key, as used with the POSIX API.      
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
    2e48:	eb0000f4 	bl	3220 <malloc>                                  
  *key = new_key;                                                     
  new_key->val  = NULL;                                               
    2e4c:	e3a03000 	mov	r3, #0                                        
   * pointer to the buffer that will hold the value of the key itself.
   * We have to to this, because the others functions on this interface
   * deal with the value of the key, as used with the POSIX API.      
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
    2e50:	e1a04000 	mov	r4, r0                                        
  *key = new_key;                                                     
    2e54:	e5860000 	str	r0, [r6]                                      
      "gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
    );                                                                
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
    2e58:	e1a01004 	mov	r1, r4                                        
    2e5c:	e1a00003 	mov	r0, r3                                        
    2e60:	e1a02005 	mov	r2, r5                                        
   */                                                                 
   /* Do not pull your hair, trust me this works. :-) */              
  __gthread_key_t new_key = (__gthread_key_t) malloc( sizeof( *new_key ) );
  *key = new_key;                                                     
  new_key->val  = NULL;                                               
  new_key->dtor = dtor;                                               
    2e64:	e8840028 	stm	r4, {r3, r5}                                  
      "gxx_wrappers: create key=%x, dtor=%x, new_key=%x\n", key, dtor, new_key
    );                                                                
  #endif                                                              
                                                                      
  /* register with RTEMS the buffer that will hold the key values */  
  status = rtems_task_variable_add( RTEMS_SELF, (void **)new_key, dtor );
    2e68:	eb0011ec 	bl	7620 <rtems_task_variable_add>                 
  if ( status == RTEMS_SUCCESSFUL )                                   
    2e6c:	e3500000 	cmp	r0, #0                                        
    2e70:	08bd8070 	popeq	{r4, r5, r6, pc}                            
    return 0;                                                         
                                                                      
  free( new_key );                                                    
    2e74:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    2e78:	ebffff81 	bl	2c84 <free>                                    <== NOT EXECUTED
  return -1;                                                          
    2e7c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
}                                                                     
    2e80:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

00002dbc <rtems_gxx_once>: /* uncomment this if you need to debug this interface */ /*#define DEBUG_GXX_WRAPPERS 1*/ int rtems_gxx_once(__gthread_once_t *once, void (*func) (void)) {
    2dbc:	e92d4030 	push	{r4, r5, lr}                                 
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );        
  #endif                                                              
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
    2dc0:	e5903000 	ldr	r3, [r0]                                      
    2dc4:	e3530000 	cmp	r3, #0                                        
                                                                      
/* uncomment this if you need to debug this interface */              
/*#define DEBUG_GXX_WRAPPERS 1*/                                      
                                                                      
int rtems_gxx_once(__gthread_once_t *once, void (*func) (void))       
{                                                                     
    2dc8:	e24dd004 	sub	sp, sp, #4                                    
    2dcc:	e1a04000 	mov	r4, r0                                        
    2dd0:	e1a05001 	mov	r5, r1                                        
  #ifdef DEBUG_GXX_WRAPPERS                                           
    printk( "gxx_wrappers: once=%x, func=%x\n", *once, func );        
  #endif                                                              
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
    2dd4:	0a000002 	beq	2de4 <rtems_gxx_once+0x28>                    
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
    if ( o == 0 )                                                     
      (*func)();                                                      
  }                                                                   
  return 0;                                                           
}                                                                     
    2dd8:	e3a00000 	mov	r0, #0                                        
    2ddc:	e28dd004 	add	sp, sp, #4                                    
    2de0:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      
  if ( *(volatile __gthread_once_t *)once == 0 ) {                    
    rtems_mode saveMode;                                              
    __gthread_once_t o;                                               
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    2de4:	e3a00c01 	mov	r0, #256	; 0x100                              
    2de8:	e1a01000 	mov	r1, r0                                        
    2dec:	e1a0200d 	mov	r2, sp                                        
    2df0:	eb001193 	bl	7444 <rtems_task_mode>                         
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
    2df4:	e5943000 	ldr	r3, [r4]                                      
    2df8:	e3530000 	cmp	r3, #0                                        
    2dfc:	1a000008 	bne	2e24 <rtems_gxx_once+0x68>                    
      *(volatile __gthread_once_t *)once = 1;                         
    2e00:	e3a03001 	mov	r3, #1                                        
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
    2e04:	e3a01c01 	mov	r1, #256	; 0x100                              
    2e08:	e1a0200d 	mov	r2, sp                                        
    rtems_mode saveMode;                                              
    __gthread_once_t o;                                               
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
      *(volatile __gthread_once_t *)once = 1;                         
    2e0c:	e5843000 	str	r3, [r4]                                      
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
    2e10:	e59d0000 	ldr	r0, [sp]                                      
    2e14:	eb00118a 	bl	7444 <rtems_task_mode>                         
    if ( o == 0 )                                                     
      (*func)();                                                      
    2e18:	e1a0e00f 	mov	lr, pc                                        
    2e1c:	e12fff15 	bx	r5                                             
    2e20:	eaffffec 	b	2dd8 <rtems_gxx_once+0x1c>                      
                                                                      
    rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &saveMode); 
    if ( (o = *(volatile __gthread_once_t *)once) == 0 ) {            
      *(volatile __gthread_once_t *)once = 1;                         
    }                                                                 
    rtems_task_mode(saveMode, RTEMS_PREEMPT_MASK, &saveMode);         
    2e24:	e59d0000 	ldr	r0, [sp]                                      <== NOT EXECUTED
    2e28:	e3a01c01 	mov	r1, #256	; 0x100                              <== NOT EXECUTED
    2e2c:	e1a0200d 	mov	r2, sp                                        <== NOT EXECUTED
    2e30:	eb001183 	bl	7444 <rtems_task_mode>                         <== NOT EXECUTED
    2e34:	eaffffe7 	b	2dd8 <rtems_gxx_once+0x1c>                      <== NOT EXECUTED
                                                                      

00003df0 <rtems_ide_part_table_free>: * RETURNS: * N/A */ void rtems_ide_part_table_free(rtems_disk_desc_t *disk_desc) {
    3df0:	e92d4070 	push	{r4, r5, r6, lr}                             <== NOT EXECUTED
    3df4:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
 *                                                                    
 * RETURNS:                                                           
 *      N/A                                                           
 */                                                                   
void                                                                  
rtems_ide_part_table_free(rtems_disk_desc_t *disk_desc)               
    3df8:	e2805024 	add	r5, r0, #36	; 0x24                            <== NOT EXECUTED
    3dfc:	e3a04004 	mov	r4, #4                                        <== NOT EXECUTED
                                                                      
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        partition_free(disk_desc->partitions[part_num]);              
    3e00:	e5b50004 	ldr	r0, [r5, #4]!                                 <== NOT EXECUTED
    3e04:	ebfffed5 	bl	3960 <partition_free>                          <== NOT EXECUTED
static void                                                           
partition_table_free(rtems_disk_desc_t *disk_desc)                    
{                                                                     
    int part_num;                                                     
                                                                      
    for (part_num = 0;                                                
    3e08:	e2544001 	subs	r4, r4, #1                                   <== NOT EXECUTED
    3e0c:	1afffffb 	bne	3e00 <rtems_ide_part_table_free+0x10>         <== NOT EXECUTED
         part_num++)                                                  
    {                                                                 
        partition_free(disk_desc->partitions[part_num]);              
    }                                                                 
                                                                      
    free(disk_desc);                                                  
    3e10:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
 */                                                                   
void                                                                  
rtems_ide_part_table_free(rtems_disk_desc_t *disk_desc)               
{                                                                     
    partition_table_free( disk_desc );                                
}                                                                     
    3e14:	e8bd4070 	pop	{r4, r5, r6, lr}                              <== NOT EXECUTED
         part_num++)                                                  
    {                                                                 
        partition_free(disk_desc->partitions[part_num]);              
    }                                                                 
                                                                      
    free(disk_desc);                                                  
    3e18:	ea0002c1 	b	4924 <free>                                     <== NOT EXECUTED
                                                                      

00003e1c <rtems_ide_part_table_get>: * RTEMS_INTERNAL_ERROR otherwise */ rtems_status_code rtems_ide_part_table_get(const char *dev_name, rtems_disk_desc_t *disk_desc) { return partition_table_get( dev_name, disk_desc );
    3e1c:	eaffff88 	b	3c44 <partition_table_get>                      <== NOT EXECUTED
                                                                      

00003e20 <rtems_ide_part_table_initialize>: * RTEMS_NO_MEMOTY if cannot have not enough memory, * RTEMS_INTERNAL_ERROR if other error occurs. */ rtems_status_code rtems_ide_part_table_initialize(const char *dev_name) {
    3e20:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    rtems_part_desc_t          *part_desc;                            
                                                                      
    /* logical device name /dev/hdxyy */                              
    char                        name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
                                                                      
    disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
    3e24:	e3a01f49 	mov	r1, #292	; 0x124                              
 *      RTEMS_NO_MEMOTY if cannot have not enough memory,             
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
rtems_status_code                                                     
rtems_ide_part_table_initialize(const char *dev_name)                 
{                                                                     
    3e28:	e24dd02c 	sub	sp, sp, #44	; 0x2c                            
    3e2c:	e1a08000 	mov	r8, r0                                        
    rtems_part_desc_t          *part_desc;                            
                                                                      
    /* logical device name /dev/hdxyy */                              
    char                        name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
                                                                      
    disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
    3e30:	e3a00001 	mov	r0, #1                                        
    3e34:	eb0001ff 	bl	4638 <calloc>                                  
    if (disk_desc == NULL)                                            
    3e38:	e2505000 	subs	r5, r0, #0                                   
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    3e3c:	03a0b01a 	moveq	fp, #26                                     
    3e40:	058db014 	streq	fp, [sp, #20]                               
                                                                      
    /* logical device name /dev/hdxyy */                              
    char                        name[RTEMS_IDE_PARTITION_DEV_NAME_LENGTH_MAX];
                                                                      
    disk_desc = (rtems_disk_desc_t *) calloc(1, sizeof(rtems_disk_desc_t));
    if (disk_desc == NULL)                                            
    3e44:	0a00003d 	beq	3f40 <rtems_ide_part_table_initialize+0x120>  
    {                                                                 
        return RTEMS_NO_MEMORY;                                       
    }                                                                 
                                                                      
    /* get partition table */                                         
    rc = partition_table_get(dev_name, disk_desc);                    
    3e48:	e1a00008 	mov	r0, r8                                        
    3e4c:	e1a01005 	mov	r1, r5                                        
    3e50:	ebffff7b 	bl	3c44 <partition_table_get>                     
    if (rc != RTEMS_SUCCESSFUL)                                       
    3e54:	e3500000 	cmp	r0, #0                                        
    3e58:	e58d0014 	str	r0, [sp, #20]                                 
    3e5c:	1a000035 	bne	3f38 <rtems_ide_part_table_initialize+0x118>  
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_NO_MEMOTY if cannot have not enough memory,             
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
rtems_status_code                                                     
rtems_ide_part_table_initialize(const char *dev_name)                 
    3e60:	e285c024 	add	ip, r5, #36	; 0x24                            
    3e64:	e58dc018 	str	ip, [sp, #24]                                 
    /* To avoid device numbers conflicts we have to use for logic disk the same
     * device major number as ATA device has, and minor number that equals to
     * sum of logic disk partition number and the minor number of physical disk
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
    3e68:	e595a000 	ldr	sl, [r5]                                      
    3e6c:	e5959004 	ldr	r9, [r5, #4]                                  
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    3e70:	e59d4014 	ldr	r4, [sp, #20]                                 
    3e74:	e1a0600c 	mov	r6, ip                                        
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
    3e78:	e28d701c 	add	r7, sp, #28                                   
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    3e7c:	e5953024 	ldr	r3, [r5, #36]	; 0x24                          
    3e80:	e1540003 	cmp	r4, r3                                        
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
    3e84:	e2844001 	add	r4, r4, #1                                    
    3e88:	e59f10bc 	ldr	r1, [pc, #188]	; 3f4c <rtems_ide_part_table_initialize+0x12c>
    3e8c:	e1a02008 	mov	r2, r8                                        
    3e90:	e1a00007 	mov	r0, r7                                        
    3e94:	e1a03004 	mov	r3, r4                                        
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    3e98:	aa000020 	bge	3f20 <rtems_ide_part_table_initialize+0x100>  
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
    3e9c:	eb004045 	bl	13fb8 <sprintf>                                
        dev = rtems_filesystem_make_dev_t(major, ++minor);            
                                                                      
        part_desc = disk_desc->partitions[part_num];                  
    3ea0:	e5b63004 	ldr	r3, [r6, #4]!                                 
        if (part_desc == NULL)                                        
    3ea4:	e3530000 	cmp	r3, #0                                        
        {                                                             
            continue;                                                 
        }                                                             
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
    3ea8:	e1a0000a 	mov	r0, sl                                        
 *      RTEMS_SUCCESSFUL if success,                                  
 *      RTEMS_NO_MEMOTY if cannot have not enough memory,             
 *      RTEMS_INTERNAL_ERROR if other error occurs.                   
 */                                                                   
rtems_status_code                                                     
rtems_ide_part_table_initialize(const char *dev_name)                 
    3eac:	e0841009 	add	r1, r4, r9                                    
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
        dev = rtems_filesystem_make_dev_t(major, ++minor);            
                                                                      
        part_desc = disk_desc->partitions[part_num];                  
        if (part_desc == NULL)                                        
    3eb0:	0afffff1 	beq	3e7c <rtems_ide_part_table_initialize+0x5c>   
        {                                                             
            continue;                                                 
        }                                                             
                                                                      
        rc = rtems_disk_create_log(dev, disk_desc->dev, part_desc->start,
    3eb4:	e5932004 	ldr	r2, [r3, #4]                                  
    3eb8:	e8951800 	ldm	r5, {fp, ip}                                  
    3ebc:	e58d2000 	str	r2, [sp]                                      
    3ec0:	e58db00c 	str	fp, [sp, #12]                                 
    3ec4:	e58dc010 	str	ip, [sp, #16]                                 
    3ec8:	e593c008 	ldr	ip, [r3, #8]                                  
    3ecc:	e28d300c 	add	r3, sp, #12                                   
    3ed0:	e893000c 	ldm	r3, {r2, r3}                                  
    3ed4:	e58dc004 	str	ip, [sp, #4]                                  
    3ed8:	e58d7008 	str	r7, [sp, #8]                                  
    3edc:	ebfffd74 	bl	34b4 <rtems_disk_create_log>                   
                                   part_desc->size, name);            
        if (rc != RTEMS_SUCCESSFUL)                                   
    3ee0:	e2503000 	subs	r3, r0, #0                                   
    3ee4:	0affffe4 	beq	3e7c <rtems_ide_part_table_initialize+0x5c>   
        {                                                             
            fprintf(stdout,"Cannot create device %s, error code %d\n", name, rc);
    3ee8:	e59fc060 	ldr	ip, [pc, #96]	; 3f50 <rtems_ide_part_table_initialize+0x130><== NOT EXECUTED
    3eec:	e59c2000 	ldr	r2, [ip]                                      <== NOT EXECUTED
    3ef0:	e59f105c 	ldr	r1, [pc, #92]	; 3f54 <rtems_ide_part_table_initialize+0x134><== NOT EXECUTED
    3ef4:	e5920008 	ldr	r0, [r2, #8]                                  <== NOT EXECUTED
    3ef8:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
    3efc:	eb003ddb 	bl	13670 <fprintf>                                <== NOT EXECUTED
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    3f00:	e5953024 	ldr	r3, [r5, #36]	; 0x24                          <== NOT EXECUTED
    3f04:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    {                                                                 
        sprintf(name, "%s%d", dev_name, part_num + 1);                
    3f08:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
    3f0c:	e59f1038 	ldr	r1, [pc, #56]	; 3f4c <rtems_ide_part_table_initialize+0x12c><== NOT EXECUTED
    3f10:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
    3f14:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    3f18:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
     */                                                               
                                                                      
    rtems_filesystem_split_dev_t (disk_desc->dev, major, minor);      
                                                                      
    /* create logical disks on the physical one */                    
    for (part_num = 0; part_num < disk_desc->last_log_id; part_num++) 
    3f1c:	baffffde 	blt	3e9c <rtems_ide_part_table_initialize+0x7c>   <== NOT EXECUTED
    3f20:	e59d6018 	ldr	r6, [sp, #24]                                 
    3f24:	e3a04004 	mov	r4, #4                                        
                                                                      
    for (part_num = 0;                                                
         part_num < RTEMS_IDE_PARTITION_MAX_SUB_PARTITION_NUMBER;     
         part_num++)                                                  
    {                                                                 
        partition_free(disk_desc->partitions[part_num]);              
    3f28:	e5b60004 	ldr	r0, [r6, #4]!                                 
    3f2c:	ebfffe8b 	bl	3960 <partition_free>                          
static void                                                           
partition_table_free(rtems_disk_desc_t *disk_desc)                    
{                                                                     
    int part_num;                                                     
                                                                      
    for (part_num = 0;                                                
    3f30:	e2544001 	subs	r4, r4, #1                                   
    3f34:	1afffffb 	bne	3f28 <rtems_ide_part_table_initialize+0x108>  
         part_num++)                                                  
    {                                                                 
        partition_free(disk_desc->partitions[part_num]);              
    }                                                                 
                                                                      
    free(disk_desc);                                                  
    3f38:	e1a00005 	mov	r0, r5                                        
    3f3c:	eb000278 	bl	4924 <free>                                    
    }                                                                 
                                                                      
    partition_table_free(disk_desc);                                  
                                                                      
    return RTEMS_SUCCESSFUL;                                          
}                                                                     
    3f40:	e59d0014 	ldr	r0, [sp, #20]                                 
    3f44:	e28dd02c 	add	sp, sp, #44	; 0x2c                            
    3f48:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      

0000264c <rtems_libio_init>: rtems_id rtems_libio_semaphore; rtems_libio_t *rtems_libio_iops; rtems_libio_t *rtems_libio_iop_freelist; void rtems_libio_init( void ) {
    264c:	e92d4010 	push	{r4, lr}                                     
    rtems_status_code rc;                                             
    uint32_t i;                                                       
    rtems_libio_t *iop;                                               
                                                                      
    if (rtems_libio_number_iops > 0)                                  
    2650:	e59f30b4 	ldr	r3, [pc, #180]	; 270c <rtems_libio_init+0xc0> 
    2654:	e5934000 	ldr	r4, [r3]                                      
    2658:	e3540000 	cmp	r4, #0                                        
rtems_id           rtems_libio_semaphore;                             
rtems_libio_t     *rtems_libio_iops;                                  
rtems_libio_t     *rtems_libio_iop_freelist;                          
                                                                      
void rtems_libio_init( void )                                         
{                                                                     
    265c:	e24dd004 	sub	sp, sp, #4                                    
    rtems_status_code rc;                                             
    uint32_t i;                                                       
    rtems_libio_t *iop;                                               
                                                                      
    if (rtems_libio_number_iops > 0)                                  
    2660:	0a000016 	beq	26c0 <rtems_libio_init+0x74>                  
    {                                                                 
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
    2664:	e1a00004 	mov	r0, r4                                        
    2668:	e3a01030 	mov	r1, #48	; 0x30                                
    266c:	ebffff0b 	bl	22a0 <calloc>                                  
    2670:	e59f3098 	ldr	r3, [pc, #152]	; 2710 <rtems_libio_init+0xc4> 
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
    2674:	e3500000 	cmp	r0, #0                                        
    uint32_t i;                                                       
    rtems_libio_t *iop;                                               
                                                                      
    if (rtems_libio_number_iops > 0)                                  
    {                                                                 
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
    2678:	e5830000 	str	r0, [r3]                                      
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
    267c:	0a000020 	beq	2704 <rtems_libio_init+0xb8>                  
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
    2680:	e59f308c 	ldr	r3, [pc, #140]	; 2714 <rtems_libio_init+0xc8> 
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
    2684:	e3540001 	cmp	r4, #1                                        
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
    2688:	e5830000 	str	r0, [r3]                                      
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
    268c:	9a000009 	bls	26b8 <rtems_libio_init+0x6c>                  
    2690:	e1a03000 	mov	r3, r0                                        
    2694:	e3a02001 	mov	r2, #1                                        
          iop->data1 = iop + 1;                                       
    2698:	e2822001 	add	r2, r2, #1                                    
    269c:	e2833030 	add	r3, r3, #48	; 0x30                            
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
    26a0:	e1520004 	cmp	r2, r4                                        
          iop->data1 = iop + 1;                                       
    26a4:	e5033004 	str	r3, [r3, #-4]                                 
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
    26a8:	1afffffa 	bne	2698 <rtems_libio_init+0x4c>                  
                                                                      
rtems_id           rtems_libio_semaphore;                             
rtems_libio_t     *rtems_libio_iops;                                  
rtems_libio_t     *rtems_libio_iop_freelist;                          
                                                                      
void rtems_libio_init( void )                                         
    26ac:	e2422001 	sub	r2, r2, #1                                    
    26b0:	e0822082 	add	r2, r2, r2, lsl #1                            
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
                                                                      
        iop = rtems_libio_iop_freelist = rtems_libio_iops;            
        for (i = 0 ; (i + 1) < rtems_libio_number_iops ; i++, iop++)  
    26b4:	e0800202 	add	r0, r0, r2, lsl #4                            
          iop->data1 = iop + 1;                                       
        iop->data1 = NULL;                                            
    26b8:	e3a03000 	mov	r3, #0                                        
    26bc:	e580302c 	str	r3, [r0, #44]	; 0x2c                          
  /*                                                                  
   *  Create the binary semaphore used to provide mutual exclusion    
   *  on the IOP Table.                                               
   */                                                                 
                                                                      
  rc = rtems_semaphore_create(                                        
    26c0:	e59fc050 	ldr	ip, [pc, #80]	; 2718 <rtems_libio_init+0xcc>  
    26c4:	e59f0050 	ldr	r0, [pc, #80]	; 271c <rtems_libio_init+0xd0>  
    26c8:	e3a01001 	mov	r1, #1                                        
    26cc:	e3a02054 	mov	r2, #84	; 0x54                                
    26d0:	e3a03000 	mov	r3, #0                                        
    26d4:	e58dc000 	str	ip, [sp]                                      
    26d8:	eb000f2c 	bl	6390 <rtems_semaphore_create>                  
    1,                                                                
    RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, 
    RTEMS_NO_PRIORITY,                                                
    &rtems_libio_semaphore                                            
  );                                                                  
  if ( rc != RTEMS_SUCCESSFUL )                                       
    26dc:	e3500000 	cmp	r0, #0                                        
    26e0:	1a000006 	bne	2700 <rtems_libio_init+0xb4>                  
                                                                      
  /*                                                                  
   *  Initialize the base file system infrastructure.                 
   */                                                                 
                                                                      
  if (rtems_fs_init_helper)                                           
    26e4:	e59f3034 	ldr	r3, [pc, #52]	; 2720 <rtems_libio_init+0xd4>  
    26e8:	e5933000 	ldr	r3, [r3]                                      
    26ec:	e3530000 	cmp	r3, #0                                        
     (* rtems_fs_init_helper)();                                      
    26f0:	11a0e00f 	movne	lr, pc                                      
    26f4:	112fff13 	bxne	r3                                           
}                                                                     
    26f8:	e28dd004 	add	sp, sp, #4                                    
    26fc:	e8bd8010 	pop	{r4, pc}                                      
    RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY, 
    RTEMS_NO_PRIORITY,                                                
    &rtems_libio_semaphore                                            
  );                                                                  
  if ( rc != RTEMS_SUCCESSFUL )                                       
    rtems_fatal_error_occurred( rc );                                 
    2700:	eb001195 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
    if (rtems_libio_number_iops > 0)                                  
    {                                                                 
        rtems_libio_iops = (rtems_libio_t *) calloc(rtems_libio_number_iops,
                                                    sizeof(rtems_libio_t));
        if (rtems_libio_iops == NULL)                                 
            rtems_fatal_error_occurred(RTEMS_NO_MEMORY);              
    2704:	e3a0001a 	mov	r0, #26                                       
    2708:	eb001193 	bl	6d5c <rtems_fatal_error_occurred>              
                                                                      

00003c5c <rtems_libio_share_private_env>: return sc; } rtems_status_code rtems_libio_share_private_env(rtems_id task_id) {
    3c5c:	e92d4030 	push	{r4, r5, lr}                                 
    3c60:	e24dd004 	sub	sp, sp, #4                                    
    3c64:	e1a05000 	mov	r5, r0                                        
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_id self_task_id = rtems_task_self();                          
    3c68:	eb0005d3 	bl	53bc <rtems_task_self>                         
                                                                      
  if (task_id != RTEMS_SELF && self_task_id != task_id) {             
    3c6c:	e1500005 	cmp	r0, r5                                        
    3c70:	13550000 	cmpne	r5, #0                                      
    3c74:	03a00000 	moveq	r0, #0                                      
    3c78:	13a00001 	movne	r0, #1                                      
  return sc;                                                          
}                                                                     
                                                                      
rtems_status_code rtems_libio_share_private_env(rtems_id task_id)     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
    3c7c:	01a05000 	moveq	r5, r0                                      
  rtems_id self_task_id = rtems_task_self();                          
                                                                      
  if (task_id != RTEMS_SELF && self_task_id != task_id) {             
    3c80:	1a000002 	bne	3c90 <rtems_libio_share_private_env+0x34>     
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
    3c84:	e1a00005 	mov	r0, r5                                        
    3c88:	e28dd004 	add	sp, sp, #4                                    
    3c8c:	e8bd8030 	pop	{r4, r5, pc}                                  
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
    3c90:	e59f3080 	ldr	r3, [pc, #128]	; 3d18 <rtems_libio_share_private_env+0xbc>
    3c94:	e5932000 	ldr	r2, [r3]                                      
                                                                      
    ++level;                                                          
    3c98:	e2822001 	add	r2, r2, #1                                    
    _Thread_Dispatch_disable_level = level;                           
    3c9c:	e5832000 	str	r2, [r3]                                      
    /*                                                                
     * We have to disable the thread dispatching to prevent deletion of the
     * environment in the meantime.                                   
     */                                                               
    _Thread_Disable_dispatch();                                       
    sc = rtems_task_variable_get(                                     
    3ca0:	e59f4074 	ldr	r4, [pc, #116]	; 3d1c <rtems_libio_share_private_env+0xc0>
    3ca4:	e1a00005 	mov	r0, r5                                        
    3ca8:	e1a01004 	mov	r1, r4                                        
    3cac:	e1a0200d 	mov	r2, sp                                        
    3cb0:	eb000634 	bl	5588 <rtems_task_variable_get>                 
      task_id,                                                        
      (void *) &rtems_current_user_env,                               
      (void *) &env                                                   
    );                                                                
    if (sc == RTEMS_SUCCESSFUL) {                                     
    3cb4:	e2505000 	subs	r5, r0, #0                                   
    3cb8:	1a00000e 	bne	3cf8 <rtems_libio_share_private_env+0x9c>     
      ++env->reference_count;                                         
    3cbc:	e59d3000 	ldr	r3, [sp]                                      
    3cc0:	e5932028 	ldr	r2, [r3, #40]	; 0x28                          
    3cc4:	e2822001 	add	r2, r2, #1                                    
    3cc8:	e5832028 	str	r2, [r3, #40]	; 0x28                          
    } else {                                                          
      sc = RTEMS_UNSATISFIED;                                         
    }                                                                 
    _Thread_Enable_dispatch();                                        
    3ccc:	eb000de8 	bl	7474 <_Thread_Enable_dispatch>                 
                                                                      
    if (sc == RTEMS_SUCCESSFUL) {                                     
      sc = rtems_task_variable_add(                                   
    3cd0:	e1a00005 	mov	r0, r5                                        
    3cd4:	e1a01004 	mov	r1, r4                                        
    3cd8:	e59f2040 	ldr	r2, [pc, #64]	; 3d20 <rtems_libio_share_private_env+0xc4>
    3cdc:	eb0005d5 	bl	5438 <rtems_task_variable_add>                 
        RTEMS_SELF,                                                   
        (void **) &rtems_current_user_env,                            
        free_user_env                                                 
      );                                                              
      if (sc == RTEMS_SUCCESSFUL) {                                   
    3ce0:	e2505000 	subs	r5, r0, #0                                   
    3ce4:	0a000006 	beq	3d04 <rtems_libio_share_private_env+0xa8>     
        free_user_env_protected(rtems_current_user_env);              
        rtems_current_user_env = env;                                 
      } else {                                                        
        free_user_env_protected(env);                                 
    3ce8:	e59d0000 	ldr	r0, [sp]                                      <== NOT EXECUTED
    3cec:	ebffff8e 	bl	3b2c <free_user_env_protected>                 <== NOT EXECUTED
        sc = RTEMS_TOO_MANY;                                          
    3cf0:	e3a05005 	mov	r5, #5                                        <== NOT EXECUTED
    3cf4:	eaffffe2 	b	3c84 <rtems_libio_share_private_env+0x28>       <== NOT EXECUTED
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ++env->reference_count;                                         
    } else {                                                          
      sc = RTEMS_UNSATISFIED;                                         
    }                                                                 
    _Thread_Enable_dispatch();                                        
    3cf8:	eb000ddd 	bl	7474 <_Thread_Enable_dispatch>                 
      (void *) &env                                                   
    );                                                                
    if (sc == RTEMS_SUCCESSFUL) {                                     
      ++env->reference_count;                                         
    } else {                                                          
      sc = RTEMS_UNSATISFIED;                                         
    3cfc:	e3a0500d 	mov	r5, #13                                       
    3d00:	eaffffdf 	b	3c84 <rtems_libio_share_private_env+0x28>       
        RTEMS_SELF,                                                   
        (void **) &rtems_current_user_env,                            
        free_user_env                                                 
      );                                                              
      if (sc == RTEMS_SUCCESSFUL) {                                   
        free_user_env_protected(rtems_current_user_env);              
    3d04:	e5940000 	ldr	r0, [r4]                                      
    3d08:	ebffff87 	bl	3b2c <free_user_env_protected>                 
        rtems_current_user_env = env;                                 
    3d0c:	e59d3000 	ldr	r3, [sp]                                      
    3d10:	e5843000 	str	r3, [r4]                                      
    3d14:	eaffffda 	b	3c84 <rtems_libio_share_private_env+0x28>       
                                                                      

0000acf4 <rtems_libio_to_fcntl_flags>: int rtems_libio_to_fcntl_flags( uint32_t flags ) { int fcntl_flags = 0; if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) {
    acf4:	e2002006 	and	r2, r0, #6                                    
    acf8:	e3520006 	cmp	r2, #6                                        
                                                                      
  return flags;                                                       
}                                                                     
                                                                      
int rtems_libio_to_fcntl_flags( uint32_t flags )                      
{                                                                     
    acfc:	e1a03000 	mov	r3, r0                                        
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
    ad00:	03a00002 	moveq	r0, #2                                      
                                                                      
int rtems_libio_to_fcntl_flags( uint32_t flags )                      
{                                                                     
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    ad04:	0a000002 	beq	ad14 <rtems_libio_to_fcntl_flags+0x20>        
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
    ad08:	e3130002 	tst	r3, #2                                        
    fcntl_flags |= O_RDONLY;                                          
    ad0c:	13a00000 	movne	r0, #0                                      
{                                                                     
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
  } else if ( (flags & LIBIO_FLAGS_READ) == LIBIO_FLAGS_READ) {       
    ad10:	0a000006 	beq	ad30 <rtems_libio_to_fcntl_flags+0x3c>        
    fcntl_flags |= O_RDONLY;                                          
  } else if ( (flags & LIBIO_FLAGS_WRITE) == LIBIO_FLAGS_WRITE) {     
    fcntl_flags |= O_WRONLY;                                          
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_NO_DELAY) == LIBIO_FLAGS_NO_DELAY ) {     
    ad14:	e3130001 	tst	r3, #1                                        
    fcntl_flags |= O_NONBLOCK;                                        
    ad18:	13800901 	orrne	r0, r0, #16384	; 0x4000                     
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_APPEND) == LIBIO_FLAGS_APPEND ) {         
    ad1c:	e3130c02 	tst	r3, #512	; 0x200                              
    fcntl_flags |= O_APPEND;                                          
    ad20:	13800008 	orrne	r0, r0, #8                                  
  }                                                                   
                                                                      
  if ( (flags & LIBIO_FLAGS_CREATE) == LIBIO_FLAGS_CREATE ) {         
    ad24:	e3130b01 	tst	r3, #1024	; 0x400                             
    fcntl_flags |= O_CREAT;                                           
    ad28:	13800c02 	orrne	r0, r0, #512	; 0x200                        
  }                                                                   
                                                                      
  return fcntl_flags;                                                 
}                                                                     
    ad2c:	e12fff1e 	bx	lr                                             
int rtems_libio_to_fcntl_flags( uint32_t flags )                      
{                                                                     
  int fcntl_flags = 0;                                                
                                                                      
  if ( (flags & LIBIO_FLAGS_READ_WRITE) == LIBIO_FLAGS_READ_WRITE ) { 
    fcntl_flags |= O_RDWR;                                            
    ad30:	e3130004 	tst	r3, #4                                        <== NOT EXECUTED
    ad34:	03a00000 	moveq	r0, #0                                      <== NOT EXECUTED
    ad38:	13a00001 	movne	r0, #1                                      <== NOT EXECUTED
    ad3c:	eafffff4 	b	ad14 <rtems_libio_to_fcntl_flags+0x20>          <== NOT EXECUTED
                                                                      

00003d24 <rtems_libio_use_global_env>: return sc; } void rtems_libio_use_global_env(void) {
    3d24:	e92d4030 	push	{r4, r5, lr}                                 
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_user_env_t *env = rtems_current_user_env;                     
  bool uses_private_env = env != &rtems_global_user_env;              
                                                                      
  if (uses_private_env) {                                             
    3d28:	e59f402c 	ldr	r4, [pc, #44]	; 3d5c <rtems_libio_use_global_env+0x38>
    3d2c:	e59f502c 	ldr	r5, [pc, #44]	; 3d60 <rtems_libio_use_global_env+0x3c>
    3d30:	e5943000 	ldr	r3, [r4]                                      
    3d34:	e1530005 	cmp	r3, r5                                        
    3d38:	08bd8030 	popeq	{r4, r5, pc}                                
    sc = rtems_task_variable_delete(                                  
    3d3c:	e3a00000 	mov	r0, #0                                        
    3d40:	e1a01004 	mov	r1, r4                                        
    3d44:	eb0005e8 	bl	54ec <rtems_task_variable_delete>              
      RTEMS_SELF,                                                     
      (void **) &rtems_current_user_env                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
    3d48:	e3500000 	cmp	r0, #0                                        
      rtems_fatal_error_occurred(0xdeadbeef);                         
    }                                                                 
                                                                      
    rtems_current_user_env = &rtems_global_user_env;                  
    3d4c:	05845000 	streq	r5, [r4]                                    
  if (uses_private_env) {                                             
    sc = rtems_task_variable_delete(                                  
      RTEMS_SELF,                                                     
      (void **) &rtems_current_user_env                               
    );                                                                
    if (sc != RTEMS_SUCCESSFUL) {                                     
    3d50:	08bd8030 	popeq	{r4, r5, pc}                                
      rtems_fatal_error_occurred(0xdeadbeef);                         
    3d54:	e59f0008 	ldr	r0, [pc, #8]	; 3d64 <rtems_libio_use_global_env+0x40><== NOT EXECUTED
    3d58:	eb000690 	bl	57a0 <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

000077a4 <rtems_rbheap_allocate>: return big_enough; } void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size) {
    77a4:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  void *ptr = NULL;                                                   
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
    77a8:	e5906030 	ldr	r6, [r0, #48]	; 0x30                          
                                                                      
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
    77ac:	e1a05001 	mov	r5, r1                                        
    77b0:	e1a04000 	mov	r4, r0                                        
                                                                      
#include <stdlib.h>                                                   
                                                                      
static uintptr_t align_up(uintptr_t alignment, uintptr_t value)       
{                                                                     
  uintptr_t excess = value % alignment;                               
    77b4:	e1a00001 	mov	r0, r1                                        
    77b8:	e1a01006 	mov	r1, r6                                        
    77bc:	eb00411f 	bl	17c40 <__umodsi3>                              
                                                                      
  if (excess > 0) {                                                   
    77c0:	e3500000 	cmp	r0, #0                                        
    77c4:	01a06005 	moveq	r6, r5                                      
    77c8:	03a03001 	moveq	r3, #1                                      
    77cc:	0a000004 	beq	77e4 <rtems_rbheap_allocate+0x40>             
    value += alignment - excess;                                      
    77d0:	e0856006 	add	r6, r5, r6                                    <== NOT EXECUTED
    77d4:	e0606006 	rsb	r6, r0, r6                                    <== NOT EXECUTED
    77d8:	e1550006 	cmp	r5, r6                                        <== NOT EXECUTED
    77dc:	83a03000 	movhi	r3, #0                                      <== NOT EXECUTED
    77e0:	93a03001 	movls	r3, #1                                      <== NOT EXECUTED
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
    77e4:	e3550000 	cmp	r5, #0                                        
    77e8:	03a05000 	moveq	r5, #0                                      
    77ec:	12035001 	andne	r5, r3, #1                                  
    77f0:	e3550000 	cmp	r5, #0                                        
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
    77f4:	01a00005 	moveq	r0, r5                                      
  rtems_chain_control *free_chain = &control->free_chunk_chain;       
  rtems_rbtree_control *chunk_tree = &control->chunk_tree;            
  uintptr_t alignment = control->alignment;                           
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
    77f8:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
    77fc:	e1a02004 	mov	r2, r4                                        
    7800:	e4927004 	ldr	r7, [r2], #4                                  
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
    7804:	e1570002 	cmp	r7, r2                                        
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
    7808:	03a00000 	moveq	r0, #0                                      
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
    780c:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
    rtems_rbheap_chunk *free_chunk = (rtems_rbheap_chunk *) current;  
                                                                      
    if (free_chunk->size >= size) {                                   
    7810:	e597801c 	ldr	r8, [r7, #28]                                 
    7814:	e1560008 	cmp	r6, r8                                        
    7818:	8a00001a 	bhi	7888 <rtems_rbheap_allocate+0xe4>             
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
    rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size);
                                                                      
    if (free_chunk != NULL) {                                         
    781c:	e3570000 	cmp	r7, #0                                        
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
    7820:	01a00007 	moveq	r0, r7                                      
  uintptr_t aligned_size = align_up(alignment, size);                 
                                                                      
  if (size > 0 && size <= aligned_size) {                             
    rtems_rbheap_chunk *free_chunk = search_free_chunk(free_chain, aligned_size);
                                                                      
    if (free_chunk != NULL) {                                         
    7824:	08bd85f0 	popeq	{r4, r5, r6, r7, r8, sl, pc}                
      uintptr_t free_size = free_chunk->size;                         
                                                                      
      if (free_size > aligned_size) {                                 
    7828:	e1580006 	cmp	r8, r6                                        
    782c:	9a00001c 	bls	78a4 <rtems_rbheap_allocate+0x100>            
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    7830:	e1a0a004 	mov	sl, r4                                        
    7834:	e5ba500c 	ldr	r5, [sl, #12]!                                
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
    7838:	e2843010 	add	r3, r4, #16                                   
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    783c:	e1550003 	cmp	r5, r3                                        
    7840:	0a00001f 	beq	78c4 <rtems_rbheap_allocate+0x120>            
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
    7844:	e5953000 	ldr	r3, [r5]                                      
                                                                      
  head->next = new_first;                                             
    7848:	e584300c 	str	r3, [r4, #12]                                 
  new_first->previous = head;                                         
    784c:	e583a004 	str	sl, [r3, #4]                                  
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
                                                                      
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
    7850:	e5972018 	ldr	r2, [r7, #24]                                 
                                                                      
      if (free_size > aligned_size) {                                 
        rtems_rbheap_chunk *new_chunk = get_chunk(control);           
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
    7854:	e0668008 	rsb	r8, r6, r8                                    
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    7858:	e3a03000 	mov	r3, #0                                        
                                                                      
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
    785c:	e0882002 	add	r2, r8, r2                                    
    7860:	e1a01005 	mov	r1, r5                                        
        rtems_rbheap_chunk *new_chunk = get_chunk(control);           
                                                                      
        if (new_chunk != NULL) {                                      
          uintptr_t new_free_size = free_size - aligned_size;         
                                                                      
          free_chunk->size = new_free_size;                           
    7864:	e587801c 	str	r8, [r7, #28]                                 
          new_chunk->begin = free_chunk->begin + new_free_size;       
    7868:	e5852018 	str	r2, [r5, #24]                                 
          new_chunk->size = aligned_size;                             
    786c:	e585601c 	str	r6, [r5, #28]                                 
    7870:	e5853004 	str	r3, [r5, #4]                                  
    7874:	e4813008 	str	r3, [r1], #8                                  
static void insert_into_tree(                                         
  rtems_rbtree_control *tree,                                         
  rtems_rbheap_chunk *chunk                                           
)                                                                     
{                                                                     
  _RBTree_Insert_unprotected(tree, &chunk->tree_node);                
    7878:	e2840018 	add	r0, r4, #24                                   
    787c:	eb0006a7 	bl	9320 <_RBTree_Insert_unprotected>              
          free_chunk->size = new_free_size;                           
          new_chunk->begin = free_chunk->begin + new_free_size;       
          new_chunk->size = aligned_size;                             
          rtems_chain_set_off_chain(&new_chunk->chain_node);          
          insert_into_tree(chunk_tree, new_chunk);                    
          ptr = (void *) new_chunk->begin;                            
    7880:	e5950018 	ldr	r0, [r5, #24]                                 
    7884:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next(                         
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  return the_node->next;                                              
    7888:	e5977000 	ldr	r7, [r7]                                      
{                                                                     
  rtems_chain_node *current = rtems_chain_first(free_chain);          
  const rtems_chain_node *tail = rtems_chain_tail(free_chain);        
  rtems_rbheap_chunk *big_enough = NULL;                              
                                                                      
  while (current != tail && big_enough == NULL) {                     
    788c:	e0523007 	subs	r3, r2, r7                                   
    7890:	13a03001 	movne	r3, #1                                      
    7894:	e3530000 	cmp	r3, #0                                        
    7898:	1affffdc 	bne	7810 <rtems_rbheap_allocate+0x6c>             
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
    789c:	e1a00003 	mov	r0, r3                                        
    78a0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
    78a4:	e8970006 	ldm	r7, {r1, r2}                                  
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    78a8:	e3a03000 	mov	r3, #0                                        
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
  next->previous = previous;                                          
    78ac:	e5812004 	str	r2, [r1, #4]                                  
  previous->next = next;                                              
    78b0:	e5821000 	str	r1, [r2]                                      
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
    78b4:	e5873004 	str	r3, [r7, #4]                                  
    78b8:	e5873000 	str	r3, [r7]                                      
          ptr = (void *) new_chunk->begin;                            
        }                                                             
      } else {                                                        
        rtems_chain_extract_unprotected(&free_chunk->chain_node);     
        rtems_chain_set_off_chain(&free_chunk->chain_node);           
        ptr = (void *) free_chunk->begin;                             
    78bc:	e5970018 	ldr	r0, [r7, #24]                                 
    78c0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
{                                                                     
  rtems_chain_control *chain = &control->spare_descriptor_chain;      
  rtems_chain_node *chunk = rtems_chain_get_unprotected(chain);       
                                                                      
  if (chunk == NULL) {                                                
    (*control->extend_descriptors)(control);                          
    78c4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    78c8:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    78cc:	e594f034 	ldr	pc, [r4, #52]	; 0x34                          <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
    78d0:	e594300c 	ldr	r3, [r4, #12]                                 <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    78d4:	e1550003 	cmp	r5, r3                                        <== NOT EXECUTED
    78d8:	0a000004 	beq	78f0 <rtems_rbheap_allocate+0x14c>            <== NOT EXECUTED
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
    78dc:	e5932000 	ldr	r2, [r3]                                      <== NOT EXECUTED
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
    78e0:	e1a05003 	mov	r5, r3                                        <== NOT EXECUTED
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
    78e4:	e584200c 	str	r2, [r4, #12]                                 <== NOT EXECUTED
  new_first->previous = head;                                         
    78e8:	e582a004 	str	sl, [r2, #4]                                  <== NOT EXECUTED
    78ec:	eaffffd7 	b	7850 <rtems_rbheap_allocate+0xac>               <== NOT EXECUTED
  return big_enough;                                                  
}                                                                     
                                                                      
void *rtems_rbheap_allocate(rtems_rbheap_control *control, size_t size)
{                                                                     
  void *ptr = NULL;                                                   
    78f0:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return ptr;                                                         
}                                                                     
    78f4:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
                                                                      

00007a6c <rtems_rbheap_extend_descriptors_with_malloc>: void rtems_rbheap_extend_descriptors_with_malloc(rtems_rbheap_control *control) {
    7a6c:	e92d4010 	push	{r4, lr}                                     <== NOT EXECUTED
    7a70:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
  rtems_rbheap_chunk *chunk = malloc(sizeof(*chunk));                 
    7a74:	e3a00020 	mov	r0, #32                                       <== NOT EXECUTED
    7a78:	ebffed70 	bl	3040 <malloc>                                  <== NOT EXECUTED
                                                                      
  if (chunk != NULL) {                                                
    7a7c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    7a80:	08bd8010 	popeq	{r4, pc}                                    <== NOT EXECUTED
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
    7a84:	e594300c 	ldr	r3, [r4, #12]                                 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(                 
  Chain_Control *the_chain,                                           
  Chain_Node    *the_node                                             
)                                                                     
{                                                                     
  _Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);        
    7a88:	e284200c 	add	r2, r4, #12                                   <== NOT EXECUTED
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
    7a8c:	e5802004 	str	r2, [r0, #4]                                  <== NOT EXECUTED
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
    7a90:	e584000c 	str	r0, [r4, #12]                                 <== NOT EXECUTED
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
    7a94:	e5830004 	str	r0, [r3, #4]                                  <== NOT EXECUTED
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
    7a98:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    7a9c:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

000188e4 <rtems_rfs_bitmap_map_clear_all>: } int rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control) {
   188e4:	e92d4070 	push	{r4, r5, r6, lr}                             
   188e8:	e24dd004 	sub	sp, sp, #4                                    
  rtems_rfs_bitmap_bit last_search_bit;                               
  size_t               elements;                                      
  int                  e;                                             
  int                  rc;                                            
                                                                      
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
   188ec:	e1a0100d 	mov	r1, sp                                        
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_bitmap_map_clear_all (rtems_rfs_bitmap_control* control)    
{                                                                     
   188f0:	e1a04000 	mov	r4, r0                                        
  rtems_rfs_bitmap_bit last_search_bit;                               
  size_t               elements;                                      
  int                  e;                                             
  int                  rc;                                            
                                                                      
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
   188f4:	ebfffeb1 	bl	183c0 <rtems_rfs_bitmap_load_map>              
  if (rc > 0)                                                         
   188f8:	e3500000 	cmp	r0, #0                                        
   188fc:	da000001 	ble	18908 <rtems_rfs_bitmap_map_clear_all+0x24>   
                            rtems_rfs_bitmap_mask (last_search_bit)); 
                                                                      
  rtems_rfs_buffer_mark_dirty (control->buffer);                      
                                                                      
  return 0;                                                           
}                                                                     
   18900:	e28dd004 	add	sp, sp, #4                                    
   18904:	e8bd8070 	pop	{r4, r5, r6, pc}                              
                                                                      
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  elements = rtems_rfs_bitmap_elements (control->size);               
   18908:	e594600c 	ldr	r6, [r4, #12]                                 
   1890c:	e2466001 	sub	r6, r6, #1                                    
   18910:	e1a062a6 	lsr	r6, r6, #5                                    
   18914:	e2861001 	add	r1, r6, #1                                    
                                                                      
  control->free = elements;                                           
                                                                      
  for (e = 0; e < elements; e++)                                      
   18918:	e3a02000 	mov	r2, #0                                        
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  elements = rtems_rfs_bitmap_elements (control->size);               
                                                                      
  control->free = elements;                                           
   1891c:	e5841010 	str	r1, [r4, #16]                                 
   18920:	e59dc000 	ldr	ip, [sp]                                      
                                                                      
  for (e = 0; e < elements; e++)                                      
   18924:	e1a03002 	mov	r3, r2                                        
    map[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                          
   18928:	e3e00000 	mvn	r0, #0                                        
                                                                      
  elements = rtems_rfs_bitmap_elements (control->size);               
                                                                      
  control->free = elements;                                           
                                                                      
  for (e = 0; e < elements; e++)                                      
   1892c:	e2833001 	add	r3, r3, #1                                    
   18930:	e1510003 	cmp	r1, r3                                        
    map[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;                          
   18934:	e78c0102 	str	r0, [ip, r2, lsl #2]                          
   18938:	e3e05000 	mvn	r5, #0                                        
                                                                      
  elements = rtems_rfs_bitmap_elements (control->size);               
                                                                      
  control->free = elements;                                           
                                                                      
  for (e = 0; e < elements; e++)                                      
   1893c:	e1a02003 	mov	r2, r3                                        
   18940:	8afffff9 	bhi	1892c <rtems_rfs_bitmap_map_clear_all+0x48>   
   * Set the un-mapped bits in the last search element so the available logic
   * works.                                                           
   */                                                                 
  last_search_bit = rtems_rfs_bitmap_map_offset (elements);           
                                                                      
  if (last_search_bit == 0)                                           
   18944:	e211101f 	ands	r1, r1, #31                                  
   18948:	12611020 	rsbne	r1, r1, #32                                 
   1894c:	11a05135 	lsrne	r5, r5, r1                                  
    last_search_bit = rtems_rfs_bitmap_element_bits ();               
                                                                      
  elements = rtems_rfs_bitmap_elements (elements);                    
                                                                      
  for (e = 0; e < (elements - 1); e++)                                
   18950:	e1b012a6 	lsrs	r1, r6, #5                                   
   18954:	05940014 	ldreq	r0, [r4, #20]                               
   18958:	0a000008 	beq	18980 <rtems_rfs_bitmap_map_clear_all+0x9c>   
   1895c:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   18960:	e5940014 	ldr	r0, [r4, #20]                                 <== NOT EXECUTED
   18964:	e1a03002 	mov	r3, r2                                        <== NOT EXECUTED
    control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;         
   18968:	e3e0c000 	mvn	ip, #0                                        <== NOT EXECUTED
  if (last_search_bit == 0)                                           
    last_search_bit = rtems_rfs_bitmap_element_bits ();               
                                                                      
  elements = rtems_rfs_bitmap_elements (elements);                    
                                                                      
  for (e = 0; e < (elements - 1); e++)                                
   1896c:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
   18970:	e1530001 	cmp	r3, r1                                        <== NOT EXECUTED
    control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;         
   18974:	e780c102 	str	ip, [r0, r2, lsl #2]                          <== NOT EXECUTED
  if (last_search_bit == 0)                                           
    last_search_bit = rtems_rfs_bitmap_element_bits ();               
                                                                      
  elements = rtems_rfs_bitmap_elements (elements);                    
                                                                      
  for (e = 0; e < (elements - 1); e++)                                
   18978:	e1a02003 	mov	r2, r3                                        <== NOT EXECUTED
   1897c:	1afffffa 	bne	1896c <rtems_rfs_bitmap_map_clear_all+0x88>   <== NOT EXECUTED
  control->search_bits[elements - 1] =                                
    rtems_rfs_bitmap_merge (RTEMS_RFS_BITMAP_ELEMENT_CLEAR,           
                            RTEMS_RFS_BITMAP_ELEMENT_SET,             
                            rtems_rfs_bitmap_mask (last_search_bit)); 
                                                                      
  rtems_rfs_buffer_mark_dirty (control->buffer);                      
   18980:	e5943000 	ldr	r3, [r4]                                      
   18984:	e3a02001 	mov	r2, #1                                        
  elements = rtems_rfs_bitmap_elements (elements);                    
                                                                      
  for (e = 0; e < (elements - 1); e++)                                
    control->search_bits[e] = RTEMS_RFS_BITMAP_ELEMENT_CLEAR;         
                                                                      
  control->search_bits[elements - 1] =                                
   18988:	e7805101 	str	r5, [r0, r1, lsl #2]                          
    rtems_rfs_bitmap_merge (RTEMS_RFS_BITMAP_ELEMENT_CLEAR,           
                            RTEMS_RFS_BITMAP_ELEMENT_SET,             
                            rtems_rfs_bitmap_mask (last_search_bit)); 
                                                                      
  rtems_rfs_buffer_mark_dirty (control->buffer);                      
   1898c:	e5c32000 	strb	r2, [r3]                                     
                                                                      
  return 0;                                                           
   18990:	e3a00000 	mov	r0, #0                                        
   18994:	eaffffd9 	b	18900 <rtems_rfs_bitmap_map_clear_all+0x1c>     
                                                                      

000186cc <rtems_rfs_bitmap_map_set>: int rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control, rtems_rfs_bitmap_bit bit) {
   186cc:	e92d4030 	push	{r4, r5, lr}                                 
   186d0:	e24dd004 	sub	sp, sp, #4                                    
   186d4:	e1a05001 	mov	r5, r1                                        
  rtems_rfs_bitmap_map map;                                           
  rtems_rfs_bitmap_map search_map;                                    
  int                  index;                                         
  int                  offset;                                        
  int                 rc;                                             
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
   186d8:	e1a0100d 	mov	r1, sp                                        
}                                                                     
                                                                      
int                                                                   
rtems_rfs_bitmap_map_set (rtems_rfs_bitmap_control* control,          
                          rtems_rfs_bitmap_bit      bit)              
{                                                                     
   186dc:	e1a04000 	mov	r4, r0                                        
  rtems_rfs_bitmap_map map;                                           
  rtems_rfs_bitmap_map search_map;                                    
  int                  index;                                         
  int                  offset;                                        
  int                 rc;                                             
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
   186e0:	ebffff36 	bl	183c0 <rtems_rfs_bitmap_load_map>              
  if (rc > 0)                                                         
   186e4:	e3500000 	cmp	r0, #0                                        
   186e8:	da000001 	ble	186f4 <rtems_rfs_bitmap_map_set+0x28>         
    search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
    control->free--;                                                  
    rtems_rfs_buffer_mark_dirty (control->buffer);                    
  }                                                                   
  return 0;                                                           
}                                                                     
   186ec:	e28dd004 	add	sp, sp, #4                                    
   186f0:	e8bd8030 	pop	{r4, r5, pc}                                  
  int                  offset;                                        
  int                 rc;                                             
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
  if (rc > 0)                                                         
    return rc;                                                        
  if (bit >= control->size)                                           
   186f4:	e594300c 	ldr	r3, [r4, #12]                                 
   186f8:	e1550003 	cmp	r5, r3                                        
    return EINVAL;                                                    
   186fc:	23a00016 	movcs	r0, #22                                     
  int                  offset;                                        
  int                 rc;                                             
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
  if (rc > 0)                                                         
    return rc;                                                        
  if (bit >= control->size)                                           
   18700:	2afffff9 	bcs	186ec <rtems_rfs_bitmap_map_set+0x20>         
    return EINVAL;                                                    
  search_map = control->search_bits;                                  
  index      = rtems_rfs_bitmap_map_index (bit);                      
  offset     = rtems_rfs_bitmap_map_offset (bit);                     
  map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);        
   18704:	e59d1000 	ldr	r1, [sp]                                      
  if (rc > 0)                                                         
    return rc;                                                        
  if (bit >= control->size)                                           
    return EINVAL;                                                    
  search_map = control->search_bits;                                  
  index      = rtems_rfs_bitmap_map_index (bit);                      
   18708:	e1a032c5 	asr	r3, r5, #5                                    
 */                                                                   
static rtems_rfs_bitmap_element                                       
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,                
                      rtems_rfs_bitmap_element bits)                  
{                                                                     
  return RTEMS_RFS_BITMAP_SET_BITS (target, bits);                    
   1870c:	e7910103 	ldr	r0, [r1, r3, lsl #2]                          
    return rc;                                                        
  if (bit >= control->size)                                           
    return EINVAL;                                                    
  search_map = control->search_bits;                                  
  index      = rtems_rfs_bitmap_map_index (bit);                      
  offset     = rtems_rfs_bitmap_map_offset (bit);                     
   18710:	e205c01f 	and	ip, r5, #31                                   
  map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);        
   18714:	e3a02001 	mov	r2, #1                                        
 */                                                                   
static rtems_rfs_bitmap_element                                       
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,                
                      rtems_rfs_bitmap_element bits)                  
{                                                                     
  return RTEMS_RFS_BITMAP_SET_BITS (target, bits);                    
   18718:	e1c00c12 	bic	r0, r0, r2, lsl ip                            
    return EINVAL;                                                    
  search_map = control->search_bits;                                  
  index      = rtems_rfs_bitmap_map_index (bit);                      
  offset     = rtems_rfs_bitmap_map_offset (bit);                     
  map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);        
  if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET))
   1871c:	e3500000 	cmp	r0, #0                                        
  rc = rtems_rfs_bitmap_load_map (control, &map);                     
  if (rc > 0)                                                         
    return rc;                                                        
  if (bit >= control->size)                                           
    return EINVAL;                                                    
  search_map = control->search_bits;                                  
   18720:	e594c014 	ldr	ip, [r4, #20]                                 
  index      = rtems_rfs_bitmap_map_index (bit);                      
  offset     = rtems_rfs_bitmap_map_offset (bit);                     
  map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);        
   18724:	e7810103 	str	r0, [r1, r3, lsl #2]                          
    offset = rtems_rfs_bitmap_map_offset (bit);                       
    search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
    control->free--;                                                  
    rtems_rfs_buffer_mark_dirty (control->buffer);                    
  }                                                                   
  return 0;                                                           
   18728:	13a00000 	movne	r0, #0                                      
    return EINVAL;                                                    
  search_map = control->search_bits;                                  
  index      = rtems_rfs_bitmap_map_index (bit);                      
  offset     = rtems_rfs_bitmap_map_offset (bit);                     
  map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);        
  if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET))
   1872c:	1affffee 	bne	186ec <rtems_rfs_bitmap_map_set+0x20>         
  {                                                                   
    bit = index;                                                      
    index  = rtems_rfs_bitmap_map_index (bit);                        
   18730:	e1a05545 	asr	r5, r5, #10                                   <== NOT EXECUTED
 */                                                                   
static rtems_rfs_bitmap_element                                       
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,                
                      rtems_rfs_bitmap_element bits)                  
{                                                                     
  return RTEMS_RFS_BITMAP_SET_BITS (target, bits);                    
   18734:	e79c1105 	ldr	r1, [ip, r5, lsl #2]                          <== NOT EXECUTED
  map[index] = rtems_rfs_bitmap_set (map[index], 1 << offset);        
  if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET))
  {                                                                   
    bit = index;                                                      
    index  = rtems_rfs_bitmap_map_index (bit);                        
    offset = rtems_rfs_bitmap_map_offset (bit);                       
   18738:	e203301f 	and	r3, r3, #31                                   <== NOT EXECUTED
 */                                                                   
static rtems_rfs_bitmap_element                                       
rtems_rfs_bitmap_set (rtems_rfs_bitmap_element target,                
                      rtems_rfs_bitmap_element bits)                  
{                                                                     
  return RTEMS_RFS_BITMAP_SET_BITS (target, bits);                    
   1873c:	e1c13312 	bic	r3, r1, r2, lsl r3                            <== NOT EXECUTED
  if (rtems_rfs_bitmap_match(map[index], RTEMS_RFS_BITMAP_ELEMENT_SET))
  {                                                                   
    bit = index;                                                      
    index  = rtems_rfs_bitmap_map_index (bit);                        
    offset = rtems_rfs_bitmap_map_offset (bit);                       
    search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
   18740:	e78c3105 	str	r3, [ip, r5, lsl #2]                          <== NOT EXECUTED
    control->free--;                                                  
   18744:	e5941010 	ldr	r1, [r4, #16]                                 <== NOT EXECUTED
    rtems_rfs_buffer_mark_dirty (control->buffer);                    
   18748:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
  {                                                                   
    bit = index;                                                      
    index  = rtems_rfs_bitmap_map_index (bit);                        
    offset = rtems_rfs_bitmap_map_offset (bit);                       
    search_map[index] = rtems_rfs_bitmap_set (search_map[index], 1 << offset);
    control->free--;                                                  
   1874c:	e2411001 	sub	r1, r1, #1                                    <== NOT EXECUTED
   18750:	e5841010 	str	r1, [r4, #16]                                 <== NOT EXECUTED
    rtems_rfs_buffer_mark_dirty (control->buffer);                    
   18754:	e5c32000 	strb	r2, [r3]                                     <== NOT EXECUTED
   18758:	eaffffe3 	b	186ec <rtems_rfs_bitmap_map_set+0x20>           <== NOT EXECUTED
                                                                      

0001869c <rtems_rfs_bitmap_mask>: rtems_rfs_bitmap_element rtems_rfs_bitmap_mask (unsigned int size) { rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK; mask >>= (rtems_rfs_bitmap_element_bits () - size);
   1869c:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   186a0:	e2600020 	rsb	r0, r0, #32                                   <== NOT EXECUTED
  return mask;                                                        
}                                                                     
   186a4:	e1a00033 	lsr	r0, r3, r0                                    <== NOT EXECUTED
   186a8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

000186ac <rtems_rfs_bitmap_mask_section>: rtems_rfs_bitmap_element rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end) { rtems_rfs_bitmap_element mask = 0; if (end > start)
   186ac:	e1510000 	cmp	r1, r0                                        <== NOT EXECUTED
    mask = rtems_rfs_bitmap_mask (end - start) << start;              
   186b0:	80601001 	rsbhi	r1, r0, r1                                  <== NOT EXECUTED
                                                                      
rtems_rfs_bitmap_element                                              
rtems_rfs_bitmap_mask (unsigned int size)                             
{                                                                     
  rtems_rfs_bitmap_element mask = RTEMS_RFS_BITMAP_ELEMENT_FULL_MASK; 
  mask >>= (rtems_rfs_bitmap_element_bits () - size);                 
   186b4:	82611020 	rsbhi	r1, r1, #32                                 <== NOT EXECUTED
   186b8:	83e03000 	mvnhi	r3, #0                                      <== NOT EXECUTED
   186bc:	81a01133 	lsrhi	r1, r3, r1                                  <== NOT EXECUTED
}                                                                     
                                                                      
rtems_rfs_bitmap_element                                              
rtems_rfs_bitmap_mask_section (unsigned int start, unsigned int end)  
{                                                                     
  rtems_rfs_bitmap_element mask = 0;                                  
   186c0:	93a00000 	movls	r0, #0                                      <== NOT EXECUTED
  if (end > start)                                                    
    mask = rtems_rfs_bitmap_mask (end - start) << start;              
   186c4:	81a00011 	lslhi	r0, r1, r0                                  <== NOT EXECUTED
  return mask;                                                        
}                                                                     
   186c8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00018d8c <rtems_rfs_block_find_indirect>: rtems_rfs_block_find_indirect (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* buffer, rtems_rfs_block_no block, int offset, rtems_rfs_block_no* result) {
   18d8c:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
   18d90:	e1a04003 	mov	r4, r3                                        
                                                                      
  /*                                                                  
   * If the handle has a buffer and this request is a different block the current
   * buffer is released.                                              
   */                                                                 
  rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);     
   18d94:	e3a03001 	mov	r3, #1                                        
rtems_rfs_block_find_indirect (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* buffer,       
                               rtems_rfs_block_no       block,        
                               int                      offset,       
                               rtems_rfs_block_no*      result)       
{                                                                     
   18d98:	e1a05000 	mov	r5, r0                                        
   18d9c:	e1a06001 	mov	r6, r1                                        
   18da0:	e1a07002 	mov	r7, r2                                        
   18da4:	e59d8018 	ldr	r8, [sp, #24]                                 
                                                                      
  /*                                                                  
   * If the handle has a buffer and this request is a different block the current
   * buffer is released.                                              
   */                                                                 
  rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);     
   18da8:	eb00044d 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
  if (rc > 0)                                                         
   18dac:	e3500000 	cmp	r0, #0                                        
   18db0:	c8bd81f0 	popgt	{r4, r5, r6, r7, r8, pc}                    
    return rc;                                                        
                                                                      
  *result = rtems_rfs_block_get_number (buffer, offset);              
   18db4:	e5963008 	ldr	r3, [r6, #8]                                  
   18db8:	e593101c 	ldr	r1, [r3, #28]                                 
   18dbc:	e0812104 	add	r2, r1, r4, lsl #2                            
   18dc0:	e5d23003 	ldrb	r3, [r2, #3]                                 
   18dc4:	e7d10104 	ldrb	r0, [r1, r4, lsl #2]                         
   18dc8:	e5d21001 	ldrb	r1, [r2, #1]                                 
   18dcc:	e1833c00 	orr	r3, r3, r0, lsl #24                           
   18dd0:	e5d22002 	ldrb	r2, [r2, #2]                                 
   18dd4:	e1833801 	orr	r3, r3, r1, lsl #16                           
   18dd8:	e1833402 	orr	r3, r3, r2, lsl #8                            
  if ((*result + 1) == 0)                                             
    *result = 0;                                                      
   18ddc:	e3730001 	cmn	r3, #1                                        
   18de0:	03a03000 	moveq	r3, #0                                      
  rc = rtems_rfs_buffer_handle_request (fs, buffer, block, true);     
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  *result = rtems_rfs_block_get_number (buffer, offset);              
  if ((*result + 1) == 0)                                             
   18de4:	e5883000 	str	r3, [r8]                                      
    *result = 0;                                                      
                                                                      
  if (*result >= rtems_rfs_fs_blocks (fs))                            
   18de8:	e5952004 	ldr	r2, [r5, #4]                                  
   18dec:	e1530002 	cmp	r3, r2                                        
   18df0:	2a000001 	bcs	18dfc <rtems_rfs_block_find_indirect+0x70>    
   18df4:	e3a00000 	mov	r0, #0                                        
    *result = 0;                                                      
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   18df8:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  if ((*result + 1) == 0)                                             
    *result = 0;                                                      
                                                                      
  if (*result >= rtems_rfs_fs_blocks (fs))                            
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))                 
   18dfc:	e3a00a01 	mov	r0, #4096	; 0x1000                            <== NOT EXECUTED
   18e00:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   18e04:	ebffe689 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   18e08:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   18e0c:	1a000002 	bne	18e1c <rtems_rfs_block_find_indirect+0x90>    <== NOT EXECUTED
      printf ("rtems-rfs: block-find: invalid block in table:"        
              " block=%" PRId32 ", indirect=%" PRId32 "/%d\n", *result, block, offset);
    *result = 0;                                                      
   18e10:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   18e14:	e5880000 	str	r0, [r8]                                      <== NOT EXECUTED
   18e18:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
    *result = 0;                                                      
                                                                      
  if (*result >= rtems_rfs_fs_blocks (fs))                            
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_FIND))                 
      printf ("rtems-rfs: block-find: invalid block in table:"        
   18e1c:	e5981000 	ldr	r1, [r8]                                      <== NOT EXECUTED
   18e20:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   18e24:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   18e28:	e59f0004 	ldr	r0, [pc, #4]	; 18e34 <rtems_rfs_block_find_indirect+0xa8><== NOT EXECUTED
   18e2c:	eb001d9c 	bl	204a4 <printf>                                 <== NOT EXECUTED
   18e30:	eafffff6 	b	18e10 <rtems_rfs_block_find_indirect+0x84>      <== NOT EXECUTED
                                                                      

00018e98 <rtems_rfs_block_get_block_size>: void rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs, rtems_rfs_pos pos, rtems_rfs_block_size* size) {
   18e98:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         <== NOT EXECUTED
   18e9c:	e1a06001 	mov	r6, r1                                        <== NOT EXECUTED
   18ea0:	e1a07002 	mov	r7, r2                                        <== NOT EXECUTED
  if (pos == 0)                                                       
   18ea4:	e1962007 	orrs	r2, r6, r7                                   <== NOT EXECUTED
                                                                      
void                                                                  
rtems_rfs_block_get_block_size (rtems_rfs_file_system* fs,            
                                rtems_rfs_pos          pos,           
                                rtems_rfs_block_size*  size)          
{                                                                     
   18ea8:	e1a04003 	mov	r4, r3                                        <== NOT EXECUTED
 * @param size A pointer to the block size.                           
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)            
{                                                                     
  size->count = 0;                                                    
   18eac:	03a03000 	moveq	r3, #0                                      <== NOT EXECUTED
   18eb0:	05843000 	streq	r3, [r4]                                    <== NOT EXECUTED
  size->offset = 0;                                                   
   18eb4:	05843004 	streq	r3, [r4, #4]                                <== NOT EXECUTED
  if (pos == 0)                                                       
   18eb8:	08bd80f0 	popeq	{r4, r5, r6, r7, pc}                        <== NOT EXECUTED
    rtems_rfs_block_set_size_zero (size);                             
  else                                                                
  {                                                                   
    size->count  = pos / rtems_rfs_fs_block_size (fs) + 1;            
   18ebc:	e5905008 	ldr	r5, [r0, #8]                                  <== NOT EXECUTED
   18ec0:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   18ec4:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   18ec8:	e1a00001 	mov	r0, r1                                        <== NOT EXECUTED
   18ecc:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   18ed0:	eb00553d 	bl	2e3cc <__udivdi3>                              <== NOT EXECUTED
   18ed4:	e2800001 	add	r0, r0, #1                                    <== NOT EXECUTED
   18ed8:	e5840000 	str	r0, [r4]                                      <== NOT EXECUTED
    size->offset = pos % rtems_rfs_fs_block_size (fs);                
   18edc:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   18ee0:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   18ee4:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   18ee8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   18eec:	eb00565a 	bl	2e85c <__umoddi3>                              <== NOT EXECUTED
   18ef0:	e5840004 	str	r0, [r4, #4]                                  <== NOT EXECUTED
   18ef4:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

0001926c <rtems_rfs_block_map_find>: int rtems_rfs_block_map_find (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, rtems_rfs_block_pos* bpos, rtems_rfs_block_no* block) {
   1926c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   19270:	e1a06003 	mov	r6, r3                                        
  int rc = 0;                                                         
                                                                      
  *block = 0;                                                         
   19274:	e3a03000 	mov	r3, #0                                        
   19278:	e5863000 	str	r3, [r6]                                      
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
   1927c:	e5928000 	ldr	r8, [r2]                                      
   19280:	e1580003 	cmp	r8, r3                                        
int                                                                   
rtems_rfs_block_map_find (rtems_rfs_file_system* fs,                  
                          rtems_rfs_block_map*   map,                 
                          rtems_rfs_block_pos*   bpos,                
                          rtems_rfs_block_no*    block)               
{                                                                     
   19284:	e24dd00c 	sub	sp, sp, #12                                   
   19288:	e1a05002 	mov	r5, r2                                        
   1928c:	e1a07000 	mov	r7, r0                                        
   19290:	e1a04001 	mov	r4, r1                                        
  *block = 0;                                                         
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
   19294:	e591a008 	ldr	sl, [r1, #8]                                  
   19298:	0a000004 	beq	192b0 <rtems_rfs_block_map_find+0x44>         
   1929c:	e35a0000 	cmp	sl, #0                                        
   192a0:	1a000002 	bne	192b0 <rtems_rfs_block_map_find+0x44>         
    return ENXIO;                                                     
   192a4:	e3a00006 	mov	r0, #6                                        
    rtems_rfs_block_copy_bpos (&map->bpos, bpos);                     
    map->bpos.block = *block;                                         
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   192a8:	e28dd00c 	add	sp, sp, #12                                   
   192ac:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  *block = 0;                                                         
                                                                      
  /*                                                                  
   * Range checking here makes the remaining logic simpler.           
   */                                                                 
  if (rtems_rfs_block_pos_block_past_end (bpos, &map->size))          
   192b0:	e158000a 	cmp	r8, sl                                        
   192b4:	2afffffa 	bcs	192a4 <rtems_rfs_block_map_find+0x38>         
    return ENXIO;                                                     
                                                                      
  /*                                                                  
   * If the block position is the same and we have found the block just return it.
   */                                                                 
  if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0))         
   192b8:	e5943010 	ldr	r3, [r4, #16]                                 
   192bc:	e1580003 	cmp	r8, r3                                        
   192c0:	0a00000d 	beq	192fc <rtems_rfs_block_map_find+0x90>         
    /*                                                                
     * Determine the type of access we need to perform. If the number of blocks
     * is less than or equal to the number of slots in the inode the blocks are
     * directly accessed.                                             
     */                                                               
    if (map->size.count <= RTEMS_RFS_INODE_BLOCKS)                    
   192c4:	e35a0005 	cmp	sl, #5                                        
   192c8:	8a00000f 	bhi	1930c <rtems_rfs_block_map_find+0xa0>         
    {                                                                 
      *block = map->blocks[bpos->bno];                                
   192cc:	e2888009 	add	r8, r8, #9                                    
   192d0:	e7943108 	ldr	r3, [r4, r8, lsl #2]                          
   192d4:	e5863000 	str	r3, [r6]                                      
    }                                                                 
  }                                                                   
                                                                      
  if (rc == 0)                                                        
  {                                                                   
    rtems_rfs_block_copy_bpos (&map->bpos, bpos);                     
   192d8:	e895000c 	ldm	r5, {r2, r3}                                  
   192dc:	e5951008 	ldr	r1, [r5, #8]                                  
   192e0:	e5842010 	str	r2, [r4, #16]                                 
   192e4:	e5841018 	str	r1, [r4, #24]                                 
   192e8:	e5843014 	str	r3, [r4, #20]                                 
    map->bpos.block = *block;                                         
   192ec:	e5963000 	ldr	r3, [r6]                                      
   192f0:	e3a00000 	mov	r0, #0                                        
   192f4:	e5843018 	str	r3, [r4, #24]                                 
   192f8:	eaffffea 	b	192a8 <rtems_rfs_block_map_find+0x3c>           
    return ENXIO;                                                     
                                                                      
  /*                                                                  
   * If the block position is the same and we have found the block just return it.
   */                                                                 
  if ((bpos->bno == map->bpos.bno) && (map->bpos.block != 0))         
   192fc:	e5943018 	ldr	r3, [r4, #24]                                 
   19300:	e3530000 	cmp	r3, #0                                        
   19304:	0affffee 	beq	192c4 <rtems_rfs_block_map_find+0x58>         
   19308:	eafffff1 	b	192d4 <rtems_rfs_block_map_find+0x68>           
       * The map is either singly or doubly indirect.                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = bpos->bno % fs->blocks_per_block;                      
   1930c:	e5979034 	ldr	r9, [r7, #52]	; 0x34                          
   19310:	e1a00008 	mov	r0, r8                                        
   19314:	e1a01009 	mov	r1, r9                                        
   19318:	eb004f36 	bl	2cff8 <__umodsi3>                              
      singly = bpos->bno / fs->blocks_per_block;                      
   1931c:	e1a01009 	mov	r1, r9                                        
       * The map is either singly or doubly indirect.                 
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = bpos->bno % fs->blocks_per_block;                      
   19320:	e58d0004 	str	r0, [sp, #4]                                  
      singly = bpos->bno / fs->blocks_per_block;                      
   19324:	e1a00008 	mov	r0, r8                                        
   19328:	ebffa1de 	bl	1aa8 <__aeabi_uidiv>                           
                                                                      
      if (map->size.count <= fs->block_map_singly_blocks)             
   1932c:	e5973038 	ldr	r3, [r7, #56]	; 0x38                          
   19330:	e153000a 	cmp	r3, sl                                        
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = bpos->bno % fs->blocks_per_block;                      
      singly = bpos->bno / fs->blocks_per_block;                      
   19334:	e1a0b000 	mov	fp, r0                                        
   19338:	e58d0008 	str	r0, [sp, #8]                                  
                                                                      
      if (map->size.count <= fs->block_map_singly_blocks)             
   1933c:	2a00001c 	bcs	193b4 <rtems_rfs_block_map_find+0x148>        
         * The map is doubly indirect.                                
         */                                                           
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
        singly %= fs->blocks_per_block;                               
   19340:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   19344:	eb004f2b 	bl	2cff8 <__umodsi3>                              <== NOT EXECUTED
                                                                      
        if (map->size.count < fs->block_map_doubly_blocks)            
   19348:	e597303c 	ldr	r3, [r7, #60]	; 0x3c                          <== NOT EXECUTED
   1934c:	e153000a 	cmp	r3, sl                                        <== NOT EXECUTED
         * The map is doubly indirect.                                
         */                                                           
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
        singly %= fs->blocks_per_block;                               
   19350:	e1a08000 	mov	r8, r0                                        <== NOT EXECUTED
   19354:	e58d0008 	str	r0, [sp, #8]                                  <== NOT EXECUTED
                                                                      
        if (map->size.count < fs->block_map_doubly_blocks)            
   19358:	9affffd1 	bls	192a4 <rtems_rfs_block_map_find+0x38>         <== NOT EXECUTED
        /*                                                            
         * The map is doubly indirect.                                
         */                                                           
        rtems_rfs_block_no doubly;                                    
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
   1935c:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   19360:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
   19364:	ebffa1cf 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
        singly %= fs->blocks_per_block;                               
                                                                      
        if (map->size.count < fs->block_map_doubly_blocks)            
        {                                                             
          rc = rtems_rfs_block_find_indirect (fs,                     
   19368:	e2800009 	add	r0, r0, #9                                    <== NOT EXECUTED
   1936c:	e7942100 	ldr	r2, [r4, r0, lsl #2]                          <== NOT EXECUTED
   19370:	e28dc008 	add	ip, sp, #8                                    <== NOT EXECUTED
   19374:	e2841044 	add	r1, r4, #68	; 0x44                            <== NOT EXECUTED
   19378:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1937c:	e1a03008 	mov	r3, r8                                        <== NOT EXECUTED
   19380:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   19384:	ebfffe80 	bl	18d8c <rtems_rfs_block_find_indirect>          <== NOT EXECUTED
                                              &map->doubly_buffer,    
                                              map->blocks[doubly],    
                                              singly, &singly);       
          if (rc == 0)                                                
   19388:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1938c:	1affffc5 	bne	192a8 <rtems_rfs_block_map_find+0x3c>         <== NOT EXECUTED
          {                                                           
            rc = rtems_rfs_block_find_indirect (fs,                   
   19390:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   19394:	e2841038 	add	r1, r4, #56	; 0x38                            <== NOT EXECUTED
   19398:	e59d2008 	ldr	r2, [sp, #8]                                  <== NOT EXECUTED
   1939c:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
   193a0:	e58d6000 	str	r6, [sp]                                      <== NOT EXECUTED
   193a4:	ebfffe78 	bl	18d8c <rtems_rfs_block_find_indirect>          <== NOT EXECUTED
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (rc == 0)                                                        
   193a8:	e3500000 	cmp	r0, #0                                        
   193ac:	1affffbd 	bne	192a8 <rtems_rfs_block_map_find+0x3c>         
   193b0:	eaffffc8 	b	192d8 <rtems_rfs_block_map_find+0x6c>           
      {                                                               
        /*                                                            
         * This is a single indirect table of blocks anchored off a slot in the
         * inode.                                                     
         */                                                           
        rc = rtems_rfs_block_find_indirect (fs,                       
   193b4:	e280b009 	add	fp, r0, #9                                    
   193b8:	e794210b 	ldr	r2, [r4, fp, lsl #2]                          
   193bc:	e1a00007 	mov	r0, r7                                        
   193c0:	e2841038 	add	r1, r4, #56	; 0x38                            
   193c4:	e59d3004 	ldr	r3, [sp, #4]                                  
   193c8:	e58d6000 	str	r6, [sp]                                      
   193cc:	ebfffe6e 	bl	18d8c <rtems_rfs_block_find_indirect>          
   193d0:	eafffff4 	b	193a8 <rtems_rfs_block_map_find+0x13c>          
                                                                      

00019484 <rtems_rfs_block_map_grow>: int rtems_rfs_block_map_grow (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, size_t blocks, rtems_rfs_block_no* new_block) {
   19484:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   19488:	e1a06000 	mov	r6, r0                                        
   1948c:	e24dd01c 	sub	sp, sp, #28                                   
   19490:	e1a04001 	mov	r4, r1                                        
  int b;                                                              
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
   19494:	e3a00a02 	mov	r0, #8192	; 0x2000                            
   19498:	e3a01000 	mov	r1, #0                                        
int                                                                   
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,                  
                          rtems_rfs_block_map*   map,                 
                          size_t                 blocks,              
                          rtems_rfs_block_no*    new_block)           
{                                                                     
   1949c:	e98d000c 	stmib	sp, {r2, r3}                                
  int b;                                                              
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
   194a0:	ebffe4e2 	bl	12830 <rtems_rfs_trace>                        
   194a4:	e3500000 	cmp	r0, #0                                        
   194a8:	1a0000c7 	bne	197cc <rtems_rfs_block_map_grow+0x348>        
    printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs))
   194ac:	e5942008 	ldr	r2, [r4, #8]                                  
   194b0:	e59d1004 	ldr	r1, [sp, #4]                                  
   194b4:	e596303c 	ldr	r3, [r6, #60]	; 0x3c                          
   194b8:	e0812002 	add	r2, r1, r2                                    
   194bc:	e1520003 	cmp	r2, r3                                        
    return EFBIG;                                                     
   194c0:	23a0a01b 	movcs	sl, #27                                     
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
    printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if ((map->size.count + blocks) >= rtems_rfs_fs_max_block_map_blocks (fs))
   194c4:	3a000002 	bcc	194d4 <rtems_rfs_block_map_grow+0x50>         
    map->last_data_block = block;                                     
    map->dirty = true;                                                
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   194c8:	e1a0000a 	mov	r0, sl                                        
   194cc:	e28dd01c 	add	sp, sp, #28                                   
   194d0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   194d4:	e3510000 	cmp	r1, #0                                        
      *new_block = block;                                             
    map->last_data_block = block;                                     
    map->dirty = true;                                                
  }                                                                   
                                                                      
  return 0;                                                           
   194d8:	059da004 	ldreq	sl, [sp, #4]                                
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   194dc:	0afffff9 	beq	194c8 <rtems_rfs_block_map_grow+0x44>         
                                      singly,                         
                                      singly_block);                  
        }                                                             
        else                                                          
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,                   
   194e0:	e2843044 	add	r3, r4, #68	; 0x44                            
   194e4:	e58d3010 	str	r3, [sp, #16]                                 
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   194e8:	e2843038 	add	r3, r4, #56	; 0x38                            
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   194ec:	e5941020 	ldr	r1, [r4, #32]                                 
  map->last_map_block = new_block;                                    
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_block_map_grow (rtems_rfs_file_system* fs,                  
   194f0:	e3a05000 	mov	r5, #0                                        
            return rc;                                                
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
   194f4:	e3a08001 	mov	r8, #1                                        
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   194f8:	e58d300c 	str	r3, [sp, #12]                                 
   194fc:	ea00000f 	b	19540 <rtems_rfs_block_map_grow+0xbc>           
                                       false, &block);                
    if (rc > 0)                                                       
      return rc;                                                      
                                                                      
    if (map->size.count < RTEMS_RFS_INODE_BLOCKS)                     
      map->blocks[map->size.count] = block;                           
   19500:	e59d1014 	ldr	r1, [sp, #20]                                 
   19504:	e28a3009 	add	r3, sl, #9                                    
   19508:	e7841103 	str	r1, [r4, r3, lsl #2]                          
    }                                                                 
                                                                      
    map->size.count++;                                                
    map->size.offset = 0;                                             
                                                                      
    if (b == 0)                                                       
   1950c:	e3550000 	cmp	r5, #0                                        
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
    }                                                                 
                                                                      
    map->size.count++;                                                
    map->size.offset = 0;                                             
   19510:	e3a03000 	mov	r3, #0                                        
   19514:	e584300c 	str	r3, [r4, #12]                                 
                                                                      
    if (b == 0)                                                       
      *new_block = block;                                             
   19518:	059d3008 	ldreq	r3, [sp, #8]                                
      }                                                               
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
    }                                                                 
                                                                      
    map->size.count++;                                                
   1951c:	e28aa001 	add	sl, sl, #1                                    
   19520:	e584a008 	str	sl, [r4, #8]                                  
    map->size.offset = 0;                                             
                                                                      
    if (b == 0)                                                       
      *new_block = block;                                             
   19524:	05831000 	streq	r1, [r3]                                    
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   19528:	e59d3004 	ldr	r3, [sp, #4]                                  
   1952c:	e2855001 	add	r5, r5, #1                                    
   19530:	e1550003 	cmp	r5, r3                                        
    map->size.count++;                                                
    map->size.offset = 0;                                             
                                                                      
    if (b == 0)                                                       
      *new_block = block;                                             
    map->last_data_block = block;                                     
   19534:	e5841020 	str	r1, [r4, #32]                                 
    map->dirty = true;                                                
   19538:	e5c48000 	strb	r8, [r4]                                     
                                                                      
  /*                                                                  
   * Allocate a block at a time. The buffer handles hold the blocks so adding
   * this way does not thrash the cache with lots of requests.        
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   1953c:	0a0000bb 	beq	19830 <rtems_rfs_block_map_grow+0x3ac>        
    /*                                                                
     * Allocate the block. If an indirect block is needed and cannot be
     * allocated free this block.                                     
     */                                                               
                                                                      
    rc = rtems_rfs_group_bitmap_alloc (fs, map->last_data_block,      
   19540:	e1a00006 	mov	r0, r6                                        
   19544:	e3a02000 	mov	r2, #0                                        
   19548:	e28d3014 	add	r3, sp, #20                                   
   1954c:	ebffdcfa 	bl	1093c <rtems_rfs_group_bitmap_alloc>           
                                       false, &block);                
    if (rc > 0)                                                       
   19550:	e3500000 	cmp	r0, #0                                        
   19554:	ca0000b3 	bgt	19828 <rtems_rfs_block_map_grow+0x3a4>        
      return rc;                                                      
                                                                      
    if (map->size.count < RTEMS_RFS_INODE_BLOCKS)                     
   19558:	e594a008 	ldr	sl, [r4, #8]                                  
   1955c:	e35a0004 	cmp	sl, #4                                        
   19560:	9affffe6 	bls	19500 <rtems_rfs_block_map_grow+0x7c>         
       * Single indirect access is occuring. It could still be doubly indirect.
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = map->size.count % fs->blocks_per_block;                
   19564:	e5969034 	ldr	r9, [r6, #52]	; 0x34                          
   19568:	e1a0000a 	mov	r0, sl                                        
   1956c:	e1a01009 	mov	r1, r9                                        
   19570:	eb004ea0 	bl	2cff8 <__umodsi3>                              
      singly = map->size.count / fs->blocks_per_block;                
   19574:	e1a01009 	mov	r1, r9                                        
       * Single indirect access is occuring. It could still be doubly indirect.
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = map->size.count % fs->blocks_per_block;                
   19578:	e1a07000 	mov	r7, r0                                        
      singly = map->size.count / fs->blocks_per_block;                
   1957c:	e1a0000a 	mov	r0, sl                                        
   19580:	ebffa148 	bl	1aa8 <__aeabi_uidiv>                           
                                                                      
      if (map->size.count < fs->block_map_singly_blocks)              
   19584:	e5963038 	ldr	r3, [r6, #56]	; 0x38                          
   19588:	e15a0003 	cmp	sl, r3                                        
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = map->size.count % fs->blocks_per_block;                
      singly = map->size.count / fs->blocks_per_block;                
   1958c:	e1a0b000 	mov	fp, r0                                        
                                                                      
      if (map->size.count < fs->block_map_singly_blocks)              
   19590:	2a000029 	bcs	1963c <rtems_rfs_block_map_grow+0x1b8>        
         * Singly indirect tables are being used. Allocate a new block for a
         * mapping table if direct is 0 or we are moving up (upping). If upping
         * move the direct blocks into the table and if not this is the first
         * entry of a new block.                                      
         */                                                           
        if ((direct == 0) ||                                          
   19594:	e3570000 	cmp	r7, #0                                        
   19598:	0a000002 	beq	195a8 <rtems_rfs_block_map_grow+0x124>        
   1959c:	e3570005 	cmp	r7, #5                                        
   195a0:	03500000 	cmpeq	r0, #0                                      
   195a4:	1a000081 	bne	197b0 <rtems_rfs_block_map_grow+0x32c>        
          /*                                                          
           * Upping is when we move from direct to singly indirect.   
           */                                                         
          bool upping;                                                
          upping = map->size.count == RTEMS_RFS_INODE_BLOCKS;         
          rc = rtems_rfs_block_map_indirect_alloc (fs, map,           
   195a8:	e24a1005 	sub	r1, sl, #5                                    
   195ac:	e271c000 	rsbs	ip, r1, #0                                   
   195b0:	e28b3009 	add	r3, fp, #9                                    
   195b4:	e0acc001 	adc	ip, ip, r1                                    
   195b8:	e1a00006 	mov	r0, r6                                        
   195bc:	e1a01004 	mov	r1, r4                                        
   195c0:	e59d200c 	ldr	r2, [sp, #12]                                 
   195c4:	e0843103 	add	r3, r4, r3, lsl #2                            
   195c8:	e58dc000 	str	ip, [sp]                                      
   195cc:	ebfffd9a 	bl	18c3c <rtems_rfs_block_map_indirect_alloc>     
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,  &map->singly_buffer,
                                                map->blocks[singly], true);
        }                                                             
                                                                      
        if (rc > 0)                                                   
   195d0:	e3500000 	cmp	r0, #0                                        
   195d4:	ca00006f 	bgt	19798 <rtems_rfs_block_map_grow+0x314>        
            return rc;                                                
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_block_set_number (&map->singly_buffer, direct, block);
   195d8:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          
   195dc:	e5dd2017 	ldrb	r2, [sp, #23]                                
   195e0:	e593301c 	ldr	r3, [r3, #28]                                 
   195e4:	e7c32107 	strb	r2, [r3, r7, lsl #2]                         
   195e8:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          
   195ec:	e593301c 	ldr	r3, [r3, #28]                                 
   195f0:	e1dd21b6 	ldrh	r2, [sp, #22]                                
   195f4:	e1a07107 	lsl	r7, r7, #2                                    
   195f8:	e0833007 	add	r3, r3, r7                                    
   195fc:	e5c32001 	strb	r2, [r3, #1]                                 
   19600:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          
   19604:	e59d2014 	ldr	r2, [sp, #20]                                 
   19608:	e593301c 	ldr	r3, [r3, #28]                                 
   1960c:	e1a02422 	lsr	r2, r2, #8                                    
   19610:	e0833007 	add	r3, r3, r7                                    
   19614:	e5c32002 	strb	r2, [r3, #2]                                 
   19618:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          
   1961c:	e593301c 	ldr	r3, [r3, #28]                                 
   19620:	e0837007 	add	r7, r3, r7                                    
   19624:	e59d3014 	ldr	r3, [sp, #20]                                 
   19628:	e5c73003 	strb	r3, [r7, #3]                                 
   1962c:	e59d1014 	ldr	r1, [sp, #20]                                 
   19630:	e5c48038 	strb	r8, [r4, #56]	; 0x38                         
   19634:	e594a008 	ldr	sl, [r4, #8]                                  
   19638:	eaffffb3 	b	1950c <rtems_rfs_block_map_grow+0x88>           
         * Doubly indirect tables are being used.                     
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no singly_block;                              
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
   1963c:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   19640:	ebffa118 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
        singly %= fs->blocks_per_block;                               
   19644:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
         * Doubly indirect tables are being used.                     
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no singly_block;                              
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
   19648:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
        singly %= fs->blocks_per_block;                               
   1964c:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
   19650:	eb004e68 	bl	2cff8 <__umodsi3>                              <== NOT EXECUTED
         * Allocate a new block for a singly indirect table if direct is 0 as
         * it is the first entry of a new block. We may also need to allocate a
         * doubly indirect block as well. Both always occur when direct is 0
         * and the doubly indirect block when singly is 0.            
         */                                                           
        if (direct == 0)                                              
   19654:	e3570000 	cmp	r7, #0                                        <== NOT EXECUTED
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no singly_block;                              
                                                                      
        doubly  = singly / fs->blocks_per_block;                      
        singly %= fs->blocks_per_block;                               
   19658:	e1a09000 	mov	r9, r0                                        <== NOT EXECUTED
         * Allocate a new block for a singly indirect table if direct is 0 as
         * it is the first entry of a new block. We may also need to allocate a
         * doubly indirect block as well. Both always occur when direct is 0
         * and the doubly indirect block when singly is 0.            
         */                                                           
        if (direct == 0)                                              
   1965c:	1a000033 	bne	19730 <rtems_rfs_block_map_grow+0x2ac>        <== NOT EXECUTED
        {                                                             
          rc = rtems_rfs_block_map_indirect_alloc (fs, map,           
   19660:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19664:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   19668:	e59d200c 	ldr	r2, [sp, #12]                                 <== NOT EXECUTED
   1966c:	e28d3018 	add	r3, sp, #24                                   <== NOT EXECUTED
   19670:	e58d7000 	str	r7, [sp]                                      <== NOT EXECUTED
   19674:	ebfffd70 	bl	18c3c <rtems_rfs_block_map_indirect_alloc>     <== NOT EXECUTED
                                                   &map->singly_buffer,
                                                   &singly_block,     
                                                   false);            
          if (rc > 0)                                                 
   19678:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1967c:	ca00006d 	bgt	19838 <rtems_rfs_block_map_grow+0x3b4>        <== NOT EXECUTED
                                                                      
          /*                                                          
           * Allocate a new block for a doubly indirect table if singly is 0 as
           * it is the first entry of a new singly indirect block.    
           */                                                         
          if ((singly == 0) ||                                        
   19680:	e3590000 	cmp	r9, #0                                        <== NOT EXECUTED
   19684:	0a000004 	beq	1969c <rtems_rfs_block_map_grow+0x218>        <== NOT EXECUTED
   19688:	e3590005 	cmp	r9, #5                                        <== NOT EXECUTED
   1968c:	035a0000 	cmpeq	sl, #0                                      <== NOT EXECUTED
   19690:	13a0b000 	movne	fp, #0                                      <== NOT EXECUTED
   19694:	03a0b001 	moveq	fp, #1                                      <== NOT EXECUTED
   19698:	1a000050 	bne	197e0 <rtems_rfs_block_map_grow+0x35c>        <== NOT EXECUTED
              ((doubly == 0) && (singly == RTEMS_RFS_INODE_BLOCKS)))  
          {                                                           
            bool upping;                                              
            upping = map->size.count == fs->block_map_singly_blocks;  
            rc = rtems_rfs_block_map_indirect_alloc (fs, map,         
   1969c:	e594c008 	ldr	ip, [r4, #8]                                  <== NOT EXECUTED
   196a0:	e5962038 	ldr	r2, [r6, #56]	; 0x38                          <== NOT EXECUTED
   196a4:	e062200c 	rsb	r2, r2, ip                                    <== NOT EXECUTED
   196a8:	e272c000 	rsbs	ip, r2, #0                                   <== NOT EXECUTED
   196ac:	e28a3009 	add	r3, sl, #9                                    <== NOT EXECUTED
   196b0:	e0acc002 	adc	ip, ip, r2                                    <== NOT EXECUTED
   196b4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   196b8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   196bc:	e59d2010 	ldr	r2, [sp, #16]                                 <== NOT EXECUTED
   196c0:	e0843103 	add	r3, r4, r3, lsl #2                            <== NOT EXECUTED
   196c4:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   196c8:	ebfffd5b 	bl	18c3c <rtems_rfs_block_map_indirect_alloc>     <== NOT EXECUTED
                                                     &map->doubly_buffer,
                                                     &map->blocks[doubly],
                                                     upping);         
            if (rc > 0)                                               
   196cc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   196d0:	ca00005e 	bgt	19850 <rtems_rfs_block_map_grow+0x3cc>        <== NOT EXECUTED
              rtems_rfs_group_bitmap_free (fs, false, block);         
              return rc;                                              
            }                                                         
          }                                                           
                                                                      
          rtems_rfs_block_set_number (&map->doubly_buffer,            
   196d4:	e594304c 	ldr	r3, [r4, #76]	; 0x4c                          <== NOT EXECUTED
   196d8:	e5dd201b 	ldrb	r2, [sp, #27]                                <== NOT EXECUTED
   196dc:	e593301c 	ldr	r3, [r3, #28]                                 <== NOT EXECUTED
   196e0:	e7c32109 	strb	r2, [r3, r9, lsl #2]                         <== NOT EXECUTED
   196e4:	e594304c 	ldr	r3, [r4, #76]	; 0x4c                          <== NOT EXECUTED
   196e8:	e593301c 	ldr	r3, [r3, #28]                                 <== NOT EXECUTED
   196ec:	e1dd21ba 	ldrh	r2, [sp, #26]                                <== NOT EXECUTED
   196f0:	e1a09109 	lsl	r9, r9, #2                                    <== NOT EXECUTED
   196f4:	e0833009 	add	r3, r3, r9                                    <== NOT EXECUTED
   196f8:	e5c32001 	strb	r2, [r3, #1]                                 <== NOT EXECUTED
   196fc:	e594304c 	ldr	r3, [r4, #76]	; 0x4c                          <== NOT EXECUTED
   19700:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
   19704:	e593301c 	ldr	r3, [r3, #28]                                 <== NOT EXECUTED
   19708:	e1a02422 	lsr	r2, r2, #8                                    <== NOT EXECUTED
   1970c:	e0833009 	add	r3, r3, r9                                    <== NOT EXECUTED
   19710:	e5c32002 	strb	r2, [r3, #2]                                 <== NOT EXECUTED
   19714:	e594304c 	ldr	r3, [r4, #76]	; 0x4c                          <== NOT EXECUTED
   19718:	e593301c 	ldr	r3, [r3, #28]                                 <== NOT EXECUTED
   1971c:	e0839009 	add	r9, r3, r9                                    <== NOT EXECUTED
   19720:	e59d3018 	ldr	r3, [sp, #24]                                 <== NOT EXECUTED
   19724:	e5c93003 	strb	r3, [r9, #3]                                 <== NOT EXECUTED
   19728:	e5c48044 	strb	r8, [r4, #68]	; 0x44                         <== NOT EXECUTED
   1972c:	eaffffa9 	b	195d8 <rtems_rfs_block_map_grow+0x154>          <== NOT EXECUTED
                                      singly,                         
                                      singly_block);                  
        }                                                             
        else                                                          
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,                   
   19730:	e28aa009 	add	sl, sl, #9                                    <== NOT EXECUTED
   19734:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19738:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
   1973c:	e794210a 	ldr	r2, [r4, sl, lsl #2]                          <== NOT EXECUTED
   19740:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   19744:	eb0001e6 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
                                                &map->doubly_buffer,  
                                                map->blocks[doubly],  
                                                true);                
          if (rc > 0)                                                 
   19748:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1974c:	ca000011 	bgt	19798 <rtems_rfs_block_map_grow+0x314>        <== NOT EXECUTED
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
            return rc;                                                
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
   19750:	e594304c 	ldr	r3, [r4, #76]	; 0x4c                          <== NOT EXECUTED
   19754:	e593201c 	ldr	r2, [r3, #28]                                 <== NOT EXECUTED
   19758:	e0823109 	add	r3, r2, r9, lsl #2                            <== NOT EXECUTED
   1975c:	e5d31003 	ldrb	r1, [r3, #3]                                 <== NOT EXECUTED
   19760:	e7d2c109 	ldrb	ip, [r2, r9, lsl #2]                         <== NOT EXECUTED
   19764:	e5d32001 	ldrb	r2, [r3, #1]                                 <== NOT EXECUTED
   19768:	e181cc0c 	orr	ip, r1, ip, lsl #24                           <== NOT EXECUTED
   1976c:	e5d33002 	ldrb	r3, [r3, #2]                                 <== NOT EXECUTED
   19770:	e18cc802 	orr	ip, ip, r2, lsl #16                           <== NOT EXECUTED
   19774:	e18cc403 	orr	ip, ip, r3, lsl #8                            <== NOT EXECUTED
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   19778:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1977c:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
   19780:	e1a0200c 	mov	r2, ip                                        <== NOT EXECUTED
   19784:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
            return rc;                                                
          }                                                           
                                                                      
          singly_block = rtems_rfs_block_get_number (&map->doubly_buffer,
   19788:	e58dc018 	str	ip, [sp, #24]                                 <== NOT EXECUTED
                                                     singly);         
                                                                      
          rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   1978c:	eb0001d4 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
                                                singly_block, true);  
          if (rc > 0)                                                 
   19790:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   19794:	daffff8f 	ble	195d8 <rtems_rfs_block_map_grow+0x154>        <== NOT EXECUTED
   19798:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
   1979c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   197a0:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   197a4:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   197a8:	ebffdcea 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
            return rc;                                                
   197ac:	eaffff45 	b	194c8 <rtems_rfs_block_map_grow+0x44>           <== NOT EXECUTED
                                                   &map->blocks[singly],
                                                   upping);           
        }                                                             
        else                                                          
        {                                                             
          rc = rtems_rfs_buffer_handle_request (fs,  &map->singly_buffer,
   197b0:	e280b009 	add	fp, r0, #9                                    
   197b4:	e59d100c 	ldr	r1, [sp, #12]                                 
   197b8:	e1a00006 	mov	r0, r6                                        
   197bc:	e794210b 	ldr	r2, [r4, fp, lsl #2]                          
   197c0:	e3a03001 	mov	r3, #1                                        
   197c4:	eb0001c6 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
   197c8:	eaffff80 	b	195d0 <rtems_rfs_block_map_grow+0x14c>          
                          rtems_rfs_block_no*    new_block)           
{                                                                     
  int b;                                                              
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))               
    printf ("rtems-rfs: block-map-grow: entry: blocks=%zd count=%" PRIu32 "\n",
   197cc:	e59d1004 	ldr	r1, [sp, #4]                                  <== NOT EXECUTED
   197d0:	e5942008 	ldr	r2, [r4, #8]                                  <== NOT EXECUTED
   197d4:	e59f009c 	ldr	r0, [pc, #156]	; 19878 <rtems_rfs_block_map_grow+0x3f4><== NOT EXECUTED
   197d8:	eb001b31 	bl	204a4 <printf>                                 <== NOT EXECUTED
   197dc:	eaffff32 	b	194ac <rtems_rfs_block_map_grow+0x28>           <== NOT EXECUTED
              return rc;                                              
            }                                                         
          }                                                           
          else                                                        
          {                                                           
            rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
   197e0:	e28aa009 	add	sl, sl, #9                                    <== NOT EXECUTED
   197e4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   197e8:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
   197ec:	e794210a 	ldr	r2, [r4, sl, lsl #2]                          <== NOT EXECUTED
   197f0:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   197f4:	eb0001ba 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
                                                  map->blocks[doubly], true);
            if (rc > 0)                                               
   197f8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   197fc:	daffffb4 	ble	196d4 <rtems_rfs_block_map_grow+0x250>        <== NOT EXECUTED
            {                                                         
              rtems_rfs_group_bitmap_free (fs, false, singly_block);  
   19800:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
   19804:	e1a0100b 	mov	r1, fp                                        <== NOT EXECUTED
   19808:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
   1980c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19810:	ebffdcd0 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
              rtems_rfs_group_bitmap_free (fs, false, block);         
   19814:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19818:	e1a0100b 	mov	r1, fp                                        <== NOT EXECUTED
   1981c:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   19820:	ebffdccc 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
              return rc;                                              
   19824:	eaffff27 	b	194c8 <rtems_rfs_block_map_grow+0x44>           <== NOT EXECUTED
   19828:	e1a0a000 	mov	sl, r0                                        
   1982c:	eaffff25 	b	194c8 <rtems_rfs_block_map_grow+0x44>           
      *new_block = block;                                             
    map->last_data_block = block;                                     
    map->dirty = true;                                                
  }                                                                   
                                                                      
  return 0;                                                           
   19830:	e3a0a000 	mov	sl, #0                                        
   19834:	eaffff23 	b	194c8 <rtems_rfs_block_map_grow+0x44>           
   19838:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
                                                   &map->singly_buffer,
                                                   &singly_block,     
                                                   false);            
          if (rc > 0)                                                 
          {                                                           
            rtems_rfs_group_bitmap_free (fs, false, block);           
   1983c:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   19840:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19844:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   19848:	ebffdcc2 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
            return rc;                                                
   1984c:	eaffff1d 	b	194c8 <rtems_rfs_block_map_grow+0x44>           <== NOT EXECUTED
                                                     &map->doubly_buffer,
                                                     &map->blocks[doubly],
                                                     upping);         
            if (rc > 0)                                               
            {                                                         
              rtems_rfs_group_bitmap_free (fs, false, singly_block);  
   19850:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
   19854:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
   19858:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1985c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19860:	ebffdcbc 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
              rtems_rfs_group_bitmap_free (fs, false, block);         
   19864:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   19868:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1986c:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   19870:	ebffdcb8 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
              return rc;                                              
   19874:	eaffff13 	b	194c8 <rtems_rfs_block_map_grow+0x44>           <== NOT EXECUTED
                                                                      

00018c3c <rtems_rfs_block_map_indirect_alloc>: rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, rtems_rfs_buffer_handle* buffer, rtems_rfs_block_no* block, bool upping) {
   18c3c:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
   18c40:	e24dd004 	sub	sp, sp, #4                                    
   18c44:	e1a04001 	mov	r4, r1                                        
   18c48:	e1a05002 	mov	r5, r2                                        
   18c4c:	e1a08003 	mov	r8, r3                                        
  int                  rc;                                            
  /*                                                                  
   * Save the new block locally because upping can have *block pointing to the
   * slots which are cleared when upping.                             
   */                                                                 
  rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
   18c50:	e591101c 	ldr	r1, [r1, #28]                                 
   18c54:	e3a02000 	mov	r2, #0                                        
   18c58:	e1a0300d 	mov	r3, sp                                        
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system*   fs,      
                                    rtems_rfs_block_map*     map,     
                                    rtems_rfs_buffer_handle* buffer,  
                                    rtems_rfs_block_no*      block,   
                                    bool                     upping)  
{                                                                     
   18c5c:	e1a06000 	mov	r6, r0                                        
   18c60:	e5dd7020 	ldrb	r7, [sp, #32]                                
  int                  rc;                                            
  /*                                                                  
   * Save the new block locally because upping can have *block pointing to the
   * slots which are cleared when upping.                             
   */                                                                 
  rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
   18c64:	ebffdf34 	bl	1093c <rtems_rfs_group_bitmap_alloc>           
  if (rc > 0)                                                         
   18c68:	e250a000 	subs	sl, r0, #0                                   
   18c6c:	da000002 	ble	18c7c <rtems_rfs_block_map_indirect_alloc+0x40>
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
  *block = new_block;                                                 
  map->last_map_block = new_block;                                    
  return 0;                                                           
}                                                                     
   18c70:	e1a0000a 	mov	r0, sl                                        
   18c74:	e28dd004 	add	sp, sp, #4                                    
   18c78:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
   * slots which are cleared when upping.                             
   */                                                                 
  rc = rtems_rfs_group_bitmap_alloc (fs, map->last_map_block, false, &new_block);
  if (rc > 0)                                                         
    return rc;                                                        
  rc = rtems_rfs_buffer_handle_request (fs, buffer, new_block, false);
   18c7c:	e1a00006 	mov	r0, r6                                        
   18c80:	e1a01005 	mov	r1, r5                                        
   18c84:	e59d2000 	ldr	r2, [sp]                                      
   18c88:	e3a03000 	mov	r3, #0                                        
   18c8c:	eb000494 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
  if (rc > 0)                                                         
   18c90:	e250a000 	subs	sl, r0, #0                                   
   18c94:	da000004 	ble	18cac <rtems_rfs_block_map_indirect_alloc+0x70>
  {                                                                   
    rtems_rfs_group_bitmap_free (fs, false, new_block);               
   18c98:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   18c9c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   18ca0:	e59d2000 	ldr	r2, [sp]                                      <== NOT EXECUTED
   18ca4:	ebffdfab 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
    return rc;                                                        
   18ca8:	eafffff0 	b	18c70 <rtems_rfs_block_map_indirect_alloc+0x34> <== NOT EXECUTED
  }                                                                   
  memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
   18cac:	e5953008 	ldr	r3, [r5, #8]                                  
   18cb0:	e3a010ff 	mov	r1, #255	; 0xff                               
   18cb4:	e593001c 	ldr	r0, [r3, #28]                                 
   18cb8:	e5962008 	ldr	r2, [r6, #8]                                  
   18cbc:	eb001d87 	bl	202e0 <memset>                                 
  if (upping)                                                         
   18cc0:	e3570000 	cmp	r7, #0                                        
   18cc4:	1a000006 	bne	18ce4 <rtems_rfs_block_map_indirect_alloc+0xa8>
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
  *block = new_block;                                                 
   18cc8:	e59d3000 	ldr	r3, [sp]                                      
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
   18ccc:	e3a02001 	mov	r2, #1                                        
   18cd0:	e5c52000 	strb	r2, [r5]                                     
  *block = new_block;                                                 
  map->last_map_block = new_block;                                    
  return 0;                                                           
   18cd4:	e3a0a000 	mov	sl, #0                                        
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
  }                                                                   
  rtems_rfs_buffer_mark_dirty (buffer);                               
  *block = new_block;                                                 
   18cd8:	e5883000 	str	r3, [r8]                                      
  map->last_map_block = new_block;                                    
   18cdc:	e584301c 	str	r3, [r4, #28]                                 
  return 0;                                                           
   18ce0:	eaffffe2 	b	18c70 <rtems_rfs_block_map_indirect_alloc+0x34> 
  }                                                                   
  memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
  if (upping)                                                         
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
   18ce4:	e3a00a02 	mov	r0, #8192	; 0x2000                            
   18ce8:	e3a01000 	mov	r1, #0                                        
   18cec:	ebffe6cf 	bl	12830 <rtems_rfs_trace>                        
   18cf0:	e3500000 	cmp	r0, #0                                        
   18cf4:	1a00001f 	bne	18d78 <rtems_rfs_block_map_indirect_alloc+0x13c>
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
   18cf8:	e1a03004 	mov	r3, r4                                        
rtems_rfs_block_map_indirect_alloc (rtems_rfs_file_system*   fs,      
                                    rtems_rfs_block_map*     map,     
                                    rtems_rfs_buffer_handle* buffer,  
                                    rtems_rfs_block_no*      block,   
                                    bool                     upping)  
{                                                                     
   18cfc:	e3a02000 	mov	r2, #0                                        
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
   18d00:	e3a0c001 	mov	ip, #1                                        
   18d04:	e5951008 	ldr	r1, [r5, #8]                                  
   18d08:	e5d30027 	ldrb	r0, [r3, #39]	; 0x27                         
   18d0c:	e591101c 	ldr	r1, [r1, #28]                                 
   18d10:	e7c10002 	strb	r0, [r1, r2]                                 
   18d14:	e5951008 	ldr	r1, [r5, #8]                                  
   18d18:	e591101c 	ldr	r1, [r1, #28]                                 
   18d1c:	e1d302b6 	ldrh	r0, [r3, #38]	; 0x26                         
   18d20:	e0811002 	add	r1, r1, r2                                    
   18d24:	e5c10001 	strb	r0, [r1, #1]                                 
   18d28:	e5951008 	ldr	r1, [r5, #8]                                  
   18d2c:	e5930024 	ldr	r0, [r3, #36]	; 0x24                          
   18d30:	e591101c 	ldr	r1, [r1, #28]                                 
   18d34:	e1a00420 	lsr	r0, r0, #8                                    
   18d38:	e0811002 	add	r1, r1, r2                                    
   18d3c:	e5c10002 	strb	r0, [r1, #2]                                 
   18d40:	e5951008 	ldr	r1, [r5, #8]                                  
   18d44:	e591101c 	ldr	r1, [r1, #28]                                 
   18d48:	e5930024 	ldr	r0, [r3, #36]	; 0x24                          
   18d4c:	e0811002 	add	r1, r1, r2                                    
   18d50:	e2822004 	add	r2, r2, #4                                    
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
   18d54:	e3520014 	cmp	r2, #20                                       
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
   18d58:	e5c10003 	strb	r0, [r1, #3]                                 
   18d5c:	e2833004 	add	r3, r3, #4                                    
   18d60:	e5c5c000 	strb	ip, [r5]                                     
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
              map->size.count);                                       
    for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                      
   18d64:	1affffe6 	bne	18d04 <rtems_rfs_block_map_indirect_alloc+0xc8>
      rtems_rfs_block_set_number (buffer, b, map->blocks[b]);         
    memset (map->blocks, 0, sizeof (map->blocks));                    
   18d68:	e2840024 	add	r0, r4, #36	; 0x24                            
   18d6c:	e3a01000 	mov	r1, #0                                        
   18d70:	eb001d5a 	bl	202e0 <memset>                                 
   18d74:	eaffffd3 	b	18cc8 <rtems_rfs_block_map_indirect_alloc+0x8c> 
  memset (rtems_rfs_buffer_data (buffer), 0xff, rtems_rfs_fs_block_size (fs));
  if (upping)                                                         
  {                                                                   
    int b;                                                            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_GROW))             
      printf ("rtems-rfs: block-map-grow: upping: block-count=%" PRId32 "\n",
   18d78:	e5941008 	ldr	r1, [r4, #8]                                  <== NOT EXECUTED
   18d7c:	e59f0004 	ldr	r0, [pc, #4]	; 18d88 <rtems_rfs_block_map_indirect_alloc+0x14c><== NOT EXECUTED
   18d80:	eb001dc7 	bl	204a4 <printf>                                 <== NOT EXECUTED
   18d84:	eaffffdb 	b	18cf8 <rtems_rfs_block_map_indirect_alloc+0xbc> <== NOT EXECUTED
                                                                      

00018b90 <rtems_rfs_block_map_indirect_shrink>: rtems_rfs_block_map_indirect_shrink (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, rtems_rfs_buffer_handle* buffer, rtems_rfs_block_no indirect, rtems_rfs_block_no index) {
   18b90:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
   18b94:	e59dc014 	ldr	ip, [sp, #20]                                 
   * block to be freed and the indirect block is now also free, or we have only
   * one indirect table and we can fit the remaining blocks into the inode,
   * then either move to the next indirect block or move the remaining blocks
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
   18b98:	e35c0000 	cmp	ip, #0                                        
rtems_rfs_block_map_indirect_shrink (rtems_rfs_file_system*   fs,     
                                     rtems_rfs_block_map*     map,    
                                     rtems_rfs_buffer_handle* buffer, 
                                     rtems_rfs_block_no       indirect,
                                     rtems_rfs_block_no       index)  
{                                                                     
   18b9c:	e1a04001 	mov	r4, r1                                        
   * block to be freed and the indirect block is now also free, or we have only
   * one indirect table and we can fit the remaining blocks into the inode,
   * then either move to the next indirect block or move the remaining blocks
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
   18ba0:	0a00001c 	beq	18c18 <rtems_rfs_block_map_indirect_shrink+0x88>
   18ba4:	e35c0005 	cmp	ip, #5                                        
   18ba8:	03530000 	cmpeq	r3, #0                                      
   18bac:	13a0c000 	movne	ip, #0                                      
   18bb0:	03a0c001 	moveq	ip, #1                                      
                                     rtems_rfs_block_map*     map,    
                                     rtems_rfs_buffer_handle* buffer, 
                                     rtems_rfs_block_no       indirect,
                                     rtems_rfs_block_no       index)  
{                                                                     
  int rc = 0;                                                         
   18bb4:	11a0000c 	movne	r0, ip                                      
   * block to be freed and the indirect block is now also free, or we have only
   * one indirect table and we can fit the remaining blocks into the inode,
   * then either move to the next indirect block or move the remaining blocks
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
   18bb8:	18bd80f0 	popne	{r4, r5, r6, r7, pc}                        
      ((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))         
  {                                                                   
    rtems_rfs_block_no block_to_free = map->blocks[indirect];         
   18bbc:	e5923008 	ldr	r3, [r2, #8]                                  
   18bc0:	e593301c 	ldr	r3, [r3, #28]                                 
   18bc4:	e5915024 	ldr	r5, [r1, #36]	; 0x24                          
 * @param indirect The index index in the inode's block table.        
 * @param index The index in the indirect table of the block.         
 * @return int The error number (errno). No error if 0.               
 */                                                                   
static int                                                            
rtems_rfs_block_map_indirect_shrink (rtems_rfs_file_system*   fs,     
   18bc8:	e2812020 	add	r2, r1, #32                                   
   18bcc:	e2837014 	add	r7, r3, #20                                   
      /*                                                              
       * Move to direct inode access.                                 
       */                                                             
      int b;                                                          
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
        map->blocks[b] = rtems_rfs_block_get_number (buffer, b);      
   18bd0:	e5d31001 	ldrb	r1, [r3, #1]                                 
   18bd4:	e5d36000 	ldrb	r6, [r3]                                     
   18bd8:	e5d3e003 	ldrb	lr, [r3, #3]                                 
   18bdc:	e1a01801 	lsl	r1, r1, #16                                   
   18be0:	e5d3c002 	ldrb	ip, [r3, #2]                                 
   18be4:	e1811c06 	orr	r1, r1, r6, lsl #24                           
   18be8:	e181100e 	orr	r1, r1, lr                                    
   18bec:	e2833004 	add	r3, r3, #4                                    
   18bf0:	e181140c 	orr	r1, r1, ip, lsl #8                            
    {                                                                 
      /*                                                              
       * Move to direct inode access.                                 
       */                                                             
      int b;                                                          
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
   18bf4:	e1530007 	cmp	r3, r7                                        
        map->blocks[b] = rtems_rfs_block_get_number (buffer, b);      
   18bf8:	e5a21004 	str	r1, [r2, #4]!                                 
    {                                                                 
      /*                                                              
       * Move to direct inode access.                                 
       */                                                             
      int b;                                                          
      for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                    
   18bfc:	1afffff3 	bne	18bd0 <rtems_rfs_block_map_indirect_shrink+0x40>
       * One less singly indirect block in the inode.                 
       */                                                             
      map->blocks[indirect] = 0;                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
   18c00:	e3a01000 	mov	r1, #0                                        
   18c04:	e1a02005 	mov	r2, r5                                        
   18c08:	ebffdfd2 	bl	10b58 <rtems_rfs_group_bitmap_free>            
    if (rc > 0)                                                       
   18c0c:	e3500000 	cmp	r0, #0                                        
      return rc;                                                      
                                                                      
    map->last_map_block = block_to_free;                              
   18c10:	d584501c 	strle	r5, [r4, #28]                               
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   18c14:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
   * into the inode and free the indirect table's block.              
   */                                                                 
  if ((index == 0) ||                                                 
      ((indirect == 0) && (index == RTEMS_RFS_INODE_BLOCKS)))         
  {                                                                   
    rtems_rfs_block_no block_to_free = map->blocks[indirect];         
   18c18:	e2833009 	add	r3, r3, #9                                    <== NOT EXECUTED
   18c1c:	e7915103 	ldr	r5, [r1, r3, lsl #2]                          <== NOT EXECUTED
    else                                                              
    {                                                                 
      /*                                                              
       * One less singly indirect block in the inode.                 
       */                                                             
      map->blocks[indirect] = 0;                                      
   18c20:	e781c103 	str	ip, [r1, r3, lsl #2]                          <== NOT EXECUTED
    }                                                                 
                                                                      
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
   18c24:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   18c28:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   18c2c:	ebffdfc9 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
    if (rc > 0)                                                       
   18c30:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      return rc;                                                      
                                                                      
    map->last_map_block = block_to_free;                              
   18c34:	d584501c 	strle	r5, [r4, #28]                               <== NOT EXECUTED
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   18c38:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

00018f38 <rtems_rfs_block_map_open>: int rtems_rfs_block_map_open (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* inode, rtems_rfs_block_map* map) {
   18f38:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   * Set the count to 0 so at least find fails, then open the handle and make
   * sure the inode has been loaded into memory. If we did not load the inode
   * do not unload it. The caller may assume it is still loaded when we return.
   */                                                                 
                                                                      
  map->dirty = false;                                                 
   18f3c:	e3a05000 	mov	r5, #0                                        
   18f40:	e5c25000 	strb	r5, [r2]                                     
  map->inode = NULL;                                                  
   18f44:	e5825004 	str	r5, [r2, #4]                                  
 * @param size A pointer to the block size.                           
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_size_zero (rtems_rfs_block_size* size)            
{                                                                     
  size->count = 0;                                                    
   18f48:	e5825008 	str	r5, [r2, #8]                                  
  size->offset = 0;                                                   
   18f4c:	e582500c 	str	r5, [r2, #12]                                 
 * @param bpos A pointer to the block position.                       
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)             
{                                                                     
  bpos->bno = 0;                                                      
   18f50:	e5825010 	str	r5, [r2, #16]                                 
  bpos->boff = 0;                                                     
   18f54:	e5825014 	str	r5, [r2, #20]                                 
  bpos->block = 0;                                                    
   18f58:	e5825018 	str	r5, [r2, #24]                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   18f5c:	e5c25038 	strb	r5, [r2, #56]	; 0x38                         
  handle->bnum  = 0;                                                  
   18f60:	e582503c 	str	r5, [r2, #60]	; 0x3c                          
  handle->buffer = NULL;                                              
   18f64:	e5825040 	str	r5, [r2, #64]	; 0x40                          
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   18f68:	e5c25044 	strb	r5, [r2, #68]	; 0x44                         
  handle->bnum  = 0;                                                  
   18f6c:	e5825048 	str	r5, [r2, #72]	; 0x48                          
  handle->buffer = NULL;                                              
   18f70:	e582504c 	str	r5, [r2, #76]	; 0x4c                          
                                                                      
int                                                                   
rtems_rfs_block_map_open (rtems_rfs_file_system*  fs,                 
                          rtems_rfs_inode_handle* inode,              
                          rtems_rfs_block_map*    map)                
{                                                                     
   18f74:	e1a04002 	mov	r4, r2                                        
   18f78:	e1a07000 	mov	r7, r0                                        
   18f7c:	e1a06001 	mov	r6, r1                                        
    return rc;                                                        
  rc = rtems_rfs_buffer_handle_open (fs, &map->doubly_buffer);        
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  rc = rtems_rfs_inode_load (fs, inode);                              
   18f80:	ebffdfa6 	bl	10e20 <rtems_rfs_inode_load>                   
  if (rc > 0)                                                         
   18f84:	e2508000 	subs	r8, r0, #0                                   
   18f88:	ca000036 	bgt	19068 <rtems_rfs_block_map_open+0x130>        
                                                                      
  /*                                                                  
   * Extract the block and block count data from the inode into the targets
   * byte order.                                                      
   */                                                                 
  map->inode = inode;                                                 
   18f8c:	e596200c 	ldr	r2, [r6, #12]                                 
   18f90:	e5846004 	str	r6, [r4, #4]                                  
  block_size = rtems_rfs_fs_block_size (fs);                          
  return (((uint64_t) (size->count - 1)) * block_size) + offset;      
}                                                                     
                                                                      
int                                                                   
rtems_rfs_block_map_open (rtems_rfs_file_system*  fs,                 
   18f94:	e284c020 	add	ip, r4, #32                                   
   18f98:	e3a03001 	mov	r3, #1                                        
   18f9c:	e282001c 	add	r0, r2, #28                                   
 * @return uint32_t The block number.                                 
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) 
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);      
   18fa0:	e0801003 	add	r1, r0, r3                                    
   18fa4:	e2858007 	add	r8, r5, #7                                    
   18fa8:	e7d29108 	ldrb	r9, [r2, r8, lsl #2]                         
   18fac:	e5d1a002 	ldrb	sl, [r1, #2]                                 
   18fb0:	e7d08003 	ldrb	r8, [r0, r3]                                 
   18fb4:	e5d1b001 	ldrb	fp, [r1, #1]                                 
   18fb8:	e18a1c09 	orr	r1, sl, r9, lsl #24                           
   18fbc:	e1811808 	orr	r1, r1, r8, lsl #16                           
  /*                                                                  
   * Extract the block and block count data from the inode into the targets
   * byte order.                                                      
   */                                                                 
  map->inode = inode;                                                 
  for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                        
   18fc0:	e2855001 	add	r5, r5, #1                                    
   18fc4:	e181140b 	orr	r1, r1, fp, lsl #8                            
   18fc8:	e3550005 	cmp	r5, #5                                        
    map->blocks[b] = rtems_rfs_inode_get_block (inode, b);            
   18fcc:	e5ac1004 	str	r1, [ip, #4]!                                 
  /*                                                                  
   * Extract the block and block count data from the inode into the targets
   * byte order.                                                      
   */                                                                 
  map->inode = inode;                                                 
  for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                        
   18fd0:	e2833004 	add	r3, r3, #4                                    
   18fd4:	1afffff1 	bne	18fa0 <rtems_rfs_block_map_open+0x68>         
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
   18fd8:	e5d2300d 	ldrb	r3, [r2, #13]                                
   18fdc:	e5d2c00c 	ldrb	ip, [r2, #12]                                
   18fe0:	e5d2000f 	ldrb	r0, [r2, #15]                                
   18fe4:	e1a03803 	lsl	r3, r3, #16                                   
   18fe8:	e5d2100e 	ldrb	r1, [r2, #14]                                
   18fec:	e1833c0c 	orr	r3, r3, ip, lsl #24                           
   18ff0:	e1833000 	orr	r3, r3, r0                                    
   18ff4:	e1833401 	orr	r3, r3, r1, lsl #8                            
    map->blocks[b] = rtems_rfs_inode_get_block (inode, b);            
  map->size.count = rtems_rfs_inode_get_block_count (inode);          
   18ff8:	e5843008 	str	r3, [r4, #8]                                  
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
   18ffc:	e5d2100a 	ldrb	r1, [r2, #10]                                
   19000:	e5d2300b 	ldrb	r3, [r2, #11]                                
  map->size.offset = rtems_rfs_inode_get_block_offset (inode);        
   19004:	e1833401 	orr	r3, r3, r1, lsl #8                            
   19008:	e584300c 	str	r3, [r4, #12]                                 
 * @return uint32_t The last map block number.                        
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_map_block (rtems_rfs_inode_handle* handle)   
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_map_block);          
   1900c:	e5d23031 	ldrb	r3, [r2, #49]	; 0x31                         
   19010:	e5d2c030 	ldrb	ip, [r2, #48]	; 0x30                         
   19014:	e5d20033 	ldrb	r0, [r2, #51]	; 0x33                         
   19018:	e1a03803 	lsl	r3, r3, #16                                   
   1901c:	e5d21032 	ldrb	r1, [r2, #50]	; 0x32                         
   19020:	e1833c0c 	orr	r3, r3, ip, lsl #24                           
   19024:	e1833000 	orr	r3, r3, r0                                    
   19028:	e1833401 	orr	r3, r3, r1, lsl #8                            
  map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);   
   1902c:	e584301c 	str	r3, [r4, #28]                                 
 * @return uint32_t The last data block number.                       
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_last_data_block (rtems_rfs_inode_handle* handle)  
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->last_data_block);         
   19030:	e5d23035 	ldrb	r3, [r2, #53]	; 0x35                         
   19034:	e5d20034 	ldrb	r0, [r2, #52]	; 0x34                         
   19038:	e5d21037 	ldrb	r1, [r2, #55]	; 0x37                         
   1903c:	e1a03803 	lsl	r3, r3, #16                                   
   19040:	e5d22036 	ldrb	r2, [r2, #54]	; 0x36                         
   19044:	e1833c00 	orr	r3, r3, r0, lsl #24                           
   19048:	e1833001 	orr	r3, r3, r1                                    
   1904c:	e1833402 	orr	r3, r3, r2, lsl #8                            
  map->last_data_block = rtems_rfs_inode_get_last_data_block (inode); 
                                                                      
  rc = rtems_rfs_inode_unload (fs, inode, false);                     
   19050:	e1a00007 	mov	r0, r7                                        
   19054:	e1a01006 	mov	r1, r6                                        
   19058:	e3a02000 	mov	r2, #0                                        
  for (b = 0; b < RTEMS_RFS_INODE_BLOCKS; b++)                        
    map->blocks[b] = rtems_rfs_inode_get_block (inode, b);            
  map->size.count = rtems_rfs_inode_get_block_count (inode);          
  map->size.offset = rtems_rfs_inode_get_block_offset (inode);        
  map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);   
  map->last_data_block = rtems_rfs_inode_get_last_data_block (inode); 
   1905c:	e5843020 	str	r3, [r4, #32]                                 
                                                                      
  rc = rtems_rfs_inode_unload (fs, inode, false);                     
                                                                      
  return rc;                                                          
}                                                                     
   19060:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          
  map->size.count = rtems_rfs_inode_get_block_count (inode);          
  map->size.offset = rtems_rfs_inode_get_block_offset (inode);        
  map->last_map_block = rtems_rfs_inode_get_last_map_block (inode);   
  map->last_data_block = rtems_rfs_inode_get_last_data_block (inode); 
                                                                      
  rc = rtems_rfs_inode_unload (fs, inode, false);                     
   19064:	eaffdfd5 	b	10fc0 <rtems_rfs_inode_unload>                  
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   19068:	e2841038 	add	r1, r4, #56	; 0x38                            <== NOT EXECUTED
   1906c:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   19070:	eb000322 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   19074:	e5c45038 	strb	r5, [r4, #56]	; 0x38                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   19078:	e584503c 	str	r5, [r4, #60]	; 0x3c                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1907c:	e5845040 	str	r5, [r4, #64]	; 0x40                          <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   19080:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   19084:	e2841044 	add	r1, r4, #68	; 0x44                            <== NOT EXECUTED
   19088:	eb00031c 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1908c:	e5c45044 	strb	r5, [r4, #68]	; 0x44                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   19090:	e5845048 	str	r5, [r4, #72]	; 0x48                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   19094:	e584504c 	str	r5, [r4, #76]	; 0x4c                          <== NOT EXECUTED
                                                                      
  return rc;                                                          
}                                                                     
   19098:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1909c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
                                                                      

0001987c <rtems_rfs_block_map_shrink>: int rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs, rtems_rfs_block_map* map, size_t blocks) {
   1987c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   19880:	e1a05000 	mov	r5, r0                                        
   19884:	e24dd014 	sub	sp, sp, #20                                   
   19888:	e1a04001 	mov	r4, r1                                        
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
   1988c:	e3a00901 	mov	r0, #16384	; 0x4000                           
   19890:	e3a01000 	mov	r1, #0                                        
                                                                      
int                                                                   
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,                
                            rtems_rfs_block_map*   map,               
                            size_t                 blocks)            
{                                                                     
   19894:	e1a06002 	mov	r6, r2                                        
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
   19898:	ebffe3e4 	bl	12830 <rtems_rfs_trace>                        
   1989c:	e3500000 	cmp	r0, #0                                        
   198a0:	1a00008c 	bne	19ad8 <rtems_rfs_block_map_shrink+0x25c>      
    printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if (map->size.count == 0)                                           
   198a4:	e5949008 	ldr	r9, [r4, #8]                                  
   198a8:	e3590000 	cmp	r9, #0                                        
    return 0;                                                         
   198ac:	01a00009 	moveq	r0, r9                                      
{                                                                     
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
    printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
            blocks, map->size.count);                                 
                                                                      
  if (map->size.count == 0)                                           
   198b0:	0a000069 	beq	19a5c <rtems_rfs_block_map_shrink+0x1e0>      
   198b4:	e1560009 	cmp	r6, r9                                        
   198b8:	21a06009 	movcs	r6, r9                                      
    return 0;                                                         
                                                                      
  if (blocks > map->size.count)                                       
    blocks = map->size.count;                                         
                                                                      
  while (blocks)                                                      
   198bc:	e3560000 	cmp	r6, #0                                        
   198c0:	0a00008c 	beq	19af8 <rtems_rfs_block_map_shrink+0x27c>      
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
        doubly_singly = singly % fs->blocks_per_block;                
                                                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
   198c4:	e284c044 	add	ip, r4, #68	; 0x44                            
   198c8:	e58dc010 	str	ip, [sp, #16]                                 
                                             doubly_singly);          
                                                                      
        /*                                                            
         * Read the singly indirect table and get the block number.   
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   198cc:	e284c038 	add	ip, r4, #56	; 0x38                            
      /*                                                              
       * We have less than RTEMS_RFS_INODE_BLOCKS so they are held in the
       * inode.                                                       
       */                                                             
      block_to_free = map->blocks[block];                             
      map->blocks[block] = 0;                                         
   198d0:	e3a0a000 	mov	sl, #0                                        
                                             doubly_singly);          
                                                                      
        /*                                                            
         * Read the singly indirect table and get the block number.   
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   198d4:	e58dc00c 	str	ip, [sp, #12]                                 
   198d8:	e1a07006 	mov	r7, r6                                        
   198dc:	ea000011 	b	19928 <rtems_rfs_block_map_shrink+0xac>         
    {                                                                 
      /*                                                              
       * We have less than RTEMS_RFS_INODE_BLOCKS so they are held in the
       * inode.                                                       
       */                                                             
      block_to_free = map->blocks[block];                             
   198e0:	e2899008 	add	r9, r9, #8                                    
   198e4:	e7946109 	ldr	r6, [r4, r9, lsl #2]                          
      map->blocks[block] = 0;                                         
   198e8:	e784a109 	str	sl, [r4, r9, lsl #2]                          
      {                                                               
        rc = EIO;                                                     
        break;                                                        
      }                                                               
    }                                                                 
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
   198ec:	e1a00005 	mov	r0, r5                                        
   198f0:	e3a01000 	mov	r1, #0                                        
   198f4:	e1a02006 	mov	r2, r6                                        
   198f8:	ebffdc96 	bl	10b58 <rtems_rfs_group_bitmap_free>            
    if (rc > 0)                                                       
   198fc:	e3500000 	cmp	r0, #0                                        
   19900:	ca000055 	bgt	19a5c <rtems_rfs_block_map_shrink+0x1e0>      
      return rc;                                                      
    map->size.count--;                                                
   19904:	e5949008 	ldr	r9, [r4, #8]                                  
    map->size.offset = 0;                                             
    map->last_data_block = block_to_free;                             
    map->dirty = true;                                                
   19908:	e3a03001 	mov	r3, #1                                        
      }                                                               
    }                                                                 
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
    if (rc > 0)                                                       
      return rc;                                                      
    map->size.count--;                                                
   1990c:	e2499001 	sub	r9, r9, #1                                    
    return 0;                                                         
                                                                      
  if (blocks > map->size.count)                                       
    blocks = map->size.count;                                         
                                                                      
  while (blocks)                                                      
   19910:	e2577001 	subs	r7, r7, #1                                   
      }                                                               
    }                                                                 
    rc = rtems_rfs_group_bitmap_free (fs, false, block_to_free);      
    if (rc > 0)                                                       
      return rc;                                                      
    map->size.count--;                                                
   19914:	e5849008 	str	r9, [r4, #8]                                  
    map->size.offset = 0;                                             
   19918:	e584a00c 	str	sl, [r4, #12]                                 
    map->last_data_block = block_to_free;                             
   1991c:	e5846020 	str	r6, [r4, #32]                                 
    map->dirty = true;                                                
   19920:	e5c43000 	strb	r3, [r4]                                     
    return 0;                                                         
                                                                      
  if (blocks > map->size.count)                                       
    blocks = map->size.count;                                         
                                                                      
  while (blocks)                                                      
   19924:	0a000070 	beq	19aec <rtems_rfs_block_map_shrink+0x270>      
  {                                                                   
    rtems_rfs_block_no block;                                         
    rtems_rfs_block_no block_to_free;                                 
    int                rc;                                            
                                                                      
    block = map->size.count - 1;                                      
   19928:	e249b001 	sub	fp, r9, #1                                    
                                                                      
    if (block < RTEMS_RFS_INODE_BLOCKS)                               
   1992c:	e35b0004 	cmp	fp, #4                                        
   19930:	9affffea 	bls	198e0 <rtems_rfs_block_map_shrink+0x64>       
       * table of block numbers.                                      
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = block % fs->blocks_per_block;                          
   19934:	e5956034 	ldr	r6, [r5, #52]	; 0x34                          
   19938:	e1a0000b 	mov	r0, fp                                        
   1993c:	e1a01006 	mov	r1, r6                                        
   19940:	eb004dac 	bl	2cff8 <__umodsi3>                              
      singly = block / fs->blocks_per_block;                          
   19944:	e1a01006 	mov	r1, r6                                        
       * table of block numbers.                                      
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = block % fs->blocks_per_block;                          
   19948:	e1a08000 	mov	r8, r0                                        
      singly = block / fs->blocks_per_block;                          
   1994c:	e1a0000b 	mov	r0, fp                                        
   19950:	ebffa054 	bl	1aa8 <__aeabi_uidiv>                           
                                                                      
      if (block < fs->block_map_singly_blocks)                        
   19954:	e5953038 	ldr	r3, [r5, #56]	; 0x38                          
   19958:	e15b0003 	cmp	fp, r3                                        
       */                                                             
      rtems_rfs_block_no direct;                                      
      rtems_rfs_block_no singly;                                      
                                                                      
      direct = block % fs->blocks_per_block;                          
      singly = block / fs->blocks_per_block;                          
   1995c:	e58d0004 	str	r0, [sp, #4]                                  
                                                                      
      if (block < fs->block_map_singly_blocks)                        
   19960:	3a00003f 	bcc	19a64 <rtems_rfs_block_map_shrink+0x1e8>      
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
                                                  singly, direct);    
        if (rc)                                                       
          return rc;                                                  
      }                                                               
      else if (block < fs->block_map_doubly_blocks)                   
   19964:	e595303c 	ldr	r3, [r5, #60]	; 0x3c                          <== NOT EXECUTED
   19968:	e15b0003 	cmp	fp, r3                                        <== NOT EXECUTED
   1996c:	2a00005e 	bcs	19aec <rtems_rfs_block_map_shrink+0x270>      <== NOT EXECUTED
         * value is still valid for doubly indirect tables.           
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
   19970:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   19974:	ebffa04b 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
        doubly_singly = singly % fs->blocks_per_block;                
                                                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
   19978:	e2803009 	add	r3, r0, #9                                    <== NOT EXECUTED
         * value is still valid for doubly indirect tables.           
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
   1997c:	e58d0008 	str	r0, [sp, #8]                                  <== NOT EXECUTED
        doubly_singly = singly % fs->blocks_per_block;                
                                                                      
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
   19980:	e7942103 	ldr	r2, [r4, r3, lsl #2]                          <== NOT EXECUTED
   19984:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   19988:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
   1998c:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   19990:	eb000153 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
                                              map->blocks[doubly], true);
        if (rc > 0)                                                   
   19994:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   19998:	ca00002f 	bgt	19a5c <rtems_rfs_block_map_shrink+0x1e0>      <== NOT EXECUTED
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
        doubly_singly = singly % fs->blocks_per_block;                
   1999c:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   199a0:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
   199a4:	eb004d93 	bl	2cff8 <__umodsi3>                              <== NOT EXECUTED
        rc = rtems_rfs_buffer_handle_request (fs, &map->doubly_buffer,
                                              map->blocks[doubly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        singly = rtems_rfs_block_get_number (&map->doubly_buffer,     
   199a8:	e594304c 	ldr	r3, [r4, #76]	; 0x4c                          <== NOT EXECUTED
   199ac:	e593201c 	ldr	r2, [r3, #28]                                 <== NOT EXECUTED
   199b0:	e0823100 	add	r3, r2, r0, lsl #2                            <== NOT EXECUTED
   199b4:	e5d31003 	ldrb	r1, [r3, #3]                                 <== NOT EXECUTED
   199b8:	e7d2b100 	ldrb	fp, [r2, r0, lsl #2]                         <== NOT EXECUTED
   199bc:	e5d32001 	ldrb	r2, [r3, #1]                                 <== NOT EXECUTED
   199c0:	e181bc0b 	orr	fp, r1, fp, lsl #24                           <== NOT EXECUTED
   199c4:	e5d33002 	ldrb	r3, [r3, #2]                                 <== NOT EXECUTED
   199c8:	e18bb802 	orr	fp, fp, r2, lsl #16                           <== NOT EXECUTED
   199cc:	e18bb403 	orr	fp, fp, r3, lsl #8                            <== NOT EXECUTED
         */                                                           
        rtems_rfs_block_no doubly;                                    
        rtems_rfs_block_no doubly_singly;                             
                                                                      
        doubly        = singly / fs->blocks_per_block;                
        doubly_singly = singly % fs->blocks_per_block;                
   199d0:	e1a09000 	mov	r9, r0                                        <== NOT EXECUTED
                                             doubly_singly);          
                                                                      
        /*                                                            
         * Read the singly indirect table and get the block number.   
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   199d4:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
   199d8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   199dc:	e1a0200b 	mov	r2, fp                                        <== NOT EXECUTED
   199e0:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   199e4:	eb00013e 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
                                              singly, true);          
        if (rc > 0)                                                   
   199e8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   199ec:	ca00001a 	bgt	19a5c <rtems_rfs_block_map_shrink+0x1e0>      <== NOT EXECUTED
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
   199f0:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          <== NOT EXECUTED
   199f4:	e593201c 	ldr	r2, [r3, #28]                                 <== NOT EXECUTED
   199f8:	e0823108 	add	r3, r2, r8, lsl #2                            <== NOT EXECUTED
   199fc:	e5d31003 	ldrb	r1, [r3, #3]                                 <== NOT EXECUTED
   19a00:	e7d26108 	ldrb	r6, [r2, r8, lsl #2]                         <== NOT EXECUTED
   19a04:	e5d32001 	ldrb	r2, [r3, #1]                                 <== NOT EXECUTED
   19a08:	e1816c06 	orr	r6, r1, r6, lsl #24                           <== NOT EXECUTED
   19a0c:	e5d33002 	ldrb	r3, [r3, #2]                                 <== NOT EXECUTED
   19a10:	e1866802 	orr	r6, r6, r2, lsl #16                           <== NOT EXECUTED
                                                    direct);          
                                                                      
        if (direct == 0)                                              
   19a14:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                              singly, true);          
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
   19a18:	e1866403 	orr	r6, r6, r3, lsl #8                            <== NOT EXECUTED
                                                    direct);          
                                                                      
        if (direct == 0)                                              
   19a1c:	1affffb2 	bne	198ec <rtems_rfs_block_map_shrink+0x70>       <== NOT EXECUTED
        {                                                             
          rc = rtems_rfs_group_bitmap_free (fs, false, singly);       
   19a20:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   19a24:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   19a28:	e1a0200b 	mov	r2, fp                                        <== NOT EXECUTED
   19a2c:	ebffdc49 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
          if (rc > 0)                                                 
   19a30:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   19a34:	ca000008 	bgt	19a5c <rtems_rfs_block_map_shrink+0x1e0>      <== NOT EXECUTED
            return rc;                                                
                                                                      
          map->last_map_block = singly;                               
   19a38:	e584b01c 	str	fp, [r4, #28]                                 <== NOT EXECUTED
                                                                      
          rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->doubly_buffer,
   19a3c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   19a40:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   19a44:	e59d2010 	ldr	r2, [sp, #16]                                 <== NOT EXECUTED
   19a48:	e59d3008 	ldr	r3, [sp, #8]                                  <== NOT EXECUTED
   19a4c:	e58d9000 	str	r9, [sp]                                      <== NOT EXECUTED
   19a50:	ebfffc4e 	bl	18b90 <rtems_rfs_block_map_indirect_shrink>    <== NOT EXECUTED
                                                    doubly, doubly_singly);
          if (rc)                                                     
   19a54:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   19a58:	0affffa3 	beq	198ec <rtems_rfs_block_map_shrink+0x70>       <== NOT EXECUTED
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
                                                                      
  return 0;                                                           
}                                                                     
   19a5c:	e28dd014 	add	sp, sp, #20                                   
   19a60:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
      {                                                               
        /*                                                            
         * Request the indirect block and then obtain the block number from the
         * indirect block.                                            
         */                                                           
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
   19a64:	e2803009 	add	r3, r0, #9                                    
   19a68:	e7942103 	ldr	r2, [r4, r3, lsl #2]                          
   19a6c:	e1a00005 	mov	r0, r5                                        
   19a70:	e59d100c 	ldr	r1, [sp, #12]                                 
   19a74:	e3a03001 	mov	r3, #1                                        
   19a78:	eb000119 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
   19a7c:	e3500000 	cmp	r0, #0                                        
   19a80:	cafffff5 	bgt	19a5c <rtems_rfs_block_map_shrink+0x1e0>      
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
   19a84:	e5943040 	ldr	r3, [r4, #64]	; 0x40                          
   19a88:	e593c01c 	ldr	ip, [r3, #28]                                 
   19a8c:	e08ce108 	add	lr, ip, r8, lsl #2                            
   19a90:	e7dc9108 	ldrb	r9, [ip, r8, lsl #2]                         
   19a94:	e5dec002 	ldrb	ip, [lr, #2]                                 
                                                    direct);          
                                                                      
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
   19a98:	e59d3004 	ldr	r3, [sp, #4]                                  
   19a9c:	e1a00005 	mov	r0, r5                                        
   19aa0:	e1a01004 	mov	r1, r4                                        
   19aa4:	e59d200c 	ldr	r2, [sp, #12]                                 
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
   19aa8:	e5deb001 	ldrb	fp, [lr, #1]                                 
   19aac:	e5de6003 	ldrb	r6, [lr, #3]                                 
   19ab0:	e58dc004 	str	ip, [sp, #4]                                  
                                                    direct);          
                                                                      
        rc = rtems_rfs_block_map_indirect_shrink (fs, map, &map->singly_buffer,
   19ab4:	e58d8000 	str	r8, [sp]                                      
   19ab8:	ebfffc34 	bl	18b90 <rtems_rfs_block_map_indirect_shrink>    
                                                  singly, direct);    
        if (rc)                                                       
   19abc:	e3500000 	cmp	r0, #0                                        
   19ac0:	1affffe5 	bne	19a5c <rtems_rfs_block_map_shrink+0x1e0>      
        rc = rtems_rfs_buffer_handle_request (fs, &map->singly_buffer,
                                              map->blocks[singly], true);
        if (rc > 0)                                                   
          return rc;                                                  
                                                                      
        block_to_free = rtems_rfs_block_get_number (&map->singly_buffer,
   19ac4:	e1866c09 	orr	r6, r6, r9, lsl #24                           
   19ac8:	e59dc004 	ldr	ip, [sp, #4]                                  
   19acc:	e186680b 	orr	r6, r6, fp, lsl #16                           
   19ad0:	e186640c 	orr	r6, r6, ip, lsl #8                            
   19ad4:	eaffff84 	b	198ec <rtems_rfs_block_map_shrink+0x70>         
rtems_rfs_block_map_shrink (rtems_rfs_file_system* fs,                
                            rtems_rfs_block_map*   map,               
                            size_t                 blocks)            
{                                                                     
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BLOCK_MAP_SHRINK))             
    printf ("rtems-rfs: block-map-shrink: entry: blocks=%zd count=%" PRIu32 "\n",
   19ad8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   19adc:	e5942008 	ldr	r2, [r4, #8]                                  <== NOT EXECUTED
   19ae0:	e59f0080 	ldr	r0, [pc, #128]	; 19b68 <rtems_rfs_block_map_shrink+0x2ec><== NOT EXECUTED
   19ae4:	eb001a6e 	bl	204a4 <printf>                                 <== NOT EXECUTED
   19ae8:	eaffff6d 	b	198a4 <rtems_rfs_block_map_shrink+0x28>         <== NOT EXECUTED
    map->last_data_block = block_to_free;                             
    map->dirty = true;                                                
    blocks--;                                                         
  }                                                                   
                                                                      
  if (map->size.count == 0)                                           
   19aec:	e3590000 	cmp	r9, #0                                        
  {                                                                   
    map->last_map_block = 0;                                          
   19af0:	0584901c 	streq	r9, [r4, #28]                               
    map->last_data_block = 0;                                         
   19af4:	05849020 	streq	r9, [r4, #32]                               
  }                                                                   
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
   19af8:	e5943010 	ldr	r3, [r4, #16]                                 
   19afc:	e3530000 	cmp	r3, #0                                        
   19b00:	1a000006 	bne	19b20 <rtems_rfs_block_map_shrink+0x2a4>      
   19b04:	e1590003 	cmp	r9, r3                                        
   19b08:	9a000006 	bls	19b28 <rtems_rfs_block_map_shrink+0x2ac>      
   19b0c:	e2492001 	sub	r2, r9, #1                                    
   19b10:	e1530002 	cmp	r3, r2                                        
   19b14:	0a00000d 	beq	19b50 <rtems_rfs_block_map_shrink+0x2d4>      
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
                                                                      
  return 0;                                                           
   19b18:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   19b1c:	eaffffce 	b	19a5c <rtems_rfs_block_map_shrink+0x1e0>        <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
   19b20:	e3590000 	cmp	r9, #0                                        
   19b24:	1afffff6 	bne	19b04 <rtems_rfs_block_map_shrink+0x288>      
   19b28:	e594300c 	ldr	r3, [r4, #12]                                 
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
   19b2c:	e3a00000 	mov	r0, #0                                        
   19b30:	e1530000 	cmp	r3, r0                                        
   19b34:	e5849010 	str	r9, [r4, #16]                                 
   19b38:	12499001 	subne	r9, r9, #1                                  
   19b3c:	e5843014 	str	r3, [r4, #20]                                 
   19b40:	e5840018 	str	r0, [r4, #24]                                 
   19b44:	15849010 	strne	r9, [r4, #16]                               
                                                                      
  return 0;                                                           
   19b48:	01a00003 	moveq	r0, r3                                      
   19b4c:	eaffffc2 	b	19a5c <rtems_rfs_block_map_shrink+0x1e0>        
  }                                                                   
                                                                      
  /*                                                                  
   * Keep the position inside the map.                                
   */                                                                 
  if (rtems_rfs_block_pos_past_end (&map->bpos, &map->size))          
   19b50:	e594300c 	ldr	r3, [r4, #12]                                 
   19b54:	e5942014 	ldr	r2, [r4, #20]                                 
   19b58:	e1520003 	cmp	r2, r3                                        
   19b5c:	8afffff2 	bhi	19b2c <rtems_rfs_block_map_shrink+0x2b0>      
    rtems_rfs_block_size_get_bpos (&map->size, &map->bpos);           
                                                                      
  return 0;                                                           
   19b60:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   19b64:	eaffffbc 	b	19a5c <rtems_rfs_block_map_shrink+0x1e0>        <== NOT EXECUTED
                                                                      

0001f2a8 <rtems_rfs_buffer_bdbuf_release>: int rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer, bool modified) {
   1f2a8:	e92d4030 	push	{r4, r5, lr}                                 
   1f2ac:	e1a05001 	mov	r5, r1                                        
   1f2b0:	e1a04000 	mov	r4, r0                                        
  rtems_status_code sc;                                               
  int               rc = 0;                                           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
   1f2b4:	e3a01000 	mov	r1, #0                                        
   1f2b8:	e3a00040 	mov	r0, #64	; 0x40                                
   1f2bc:	ebffcd5b 	bl	12830 <rtems_rfs_trace>                        
   1f2c0:	e3500000 	cmp	r0, #0                                        
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_bdbuf_release (rtems_rfs_buffer* buffer,             
                                bool              modified)           
{                                                                     
   1f2c4:	e20550ff 	and	r5, r5, #255	; 0xff                           
  rtems_status_code sc;                                               
  int               rc = 0;                                           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
   1f2c8:	0a000007 	beq	1f2ec <rtems_rfs_buffer_bdbuf_release+0x44>   
    printf ("rtems-rfs: bdbuf-release: block=%" PRIuPTR " bdbuf=%" PRIu32 " %s\n",
   1f2cc:	e59fc044 	ldr	ip, [pc, #68]	; 1f318 <rtems_rfs_buffer_bdbuf_release+0x70><== NOT EXECUTED
   1f2d0:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1f2d4:	e59f3040 	ldr	r3, [pc, #64]	; 1f31c <rtems_rfs_buffer_bdbuf_release+0x74><== NOT EXECUTED
   1f2d8:	e59f0040 	ldr	r0, [pc, #64]	; 1f320 <rtems_rfs_buffer_bdbuf_release+0x78><== NOT EXECUTED
   1f2dc:	e5941034 	ldr	r1, [r4, #52]	; 0x34                          <== NOT EXECUTED
   1f2e0:	e5942018 	ldr	r2, [r4, #24]                                 <== NOT EXECUTED
   1f2e4:	01a0300c 	moveq	r3, ip                                      <== NOT EXECUTED
   1f2e8:	eb00046d 	bl	204a4 <printf>                                 <== NOT EXECUTED
            ((intptr_t) buffer->user),                                
            buffer->block, modified ? "(modified)" : "");             
                                                                      
  if (modified)                                                       
   1f2ec:	e3550000 	cmp	r5, #0                                        
    sc = rtems_bdbuf_release_modified (buffer);                       
   1f2f0:	e1a00004 	mov	r0, r4                                        
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
    printf ("rtems-rfs: bdbuf-release: block=%" PRIuPTR " bdbuf=%" PRIu32 " %s\n",
            ((intptr_t) buffer->user),                                
            buffer->block, modified ? "(modified)" : "");             
                                                                      
  if (modified)                                                       
   1f2f4:	0a000003 	beq	1f308 <rtems_rfs_buffer_bdbuf_release+0x60>   
    sc = rtems_bdbuf_release_modified (buffer);                       
   1f2f8:	ebffd69d 	bl	14d74 <rtems_bdbuf_release_modified>           
  else                                                                
    sc = rtems_bdbuf_release (buffer);                                
                                                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
   1f2fc:	e3500000 	cmp	r0, #0                                        
#endif                                                                
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   1f300:	13a00005 	movne	r0, #5                                      
   1f304:	e8bd8030 	pop	{r4, r5, pc}                                  
            buffer->block, modified ? "(modified)" : "");             
                                                                      
  if (modified)                                                       
    sc = rtems_bdbuf_release_modified (buffer);                       
  else                                                                
    sc = rtems_bdbuf_release (buffer);                                
   1f308:	ebffd668 	bl	14cb0 <rtems_bdbuf_release>                    
                                                                      
  if (sc != RTEMS_SUCCESSFUL)                                         
   1f30c:	e3500000 	cmp	r0, #0                                        
#endif                                                                
    rc = EIO;                                                         
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   1f310:	13a00005 	movne	r0, #5                                      
   1f314:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      

0001a518 <rtems_rfs_buffer_close>: return 0; } int rtems_rfs_buffer_close (rtems_rfs_file_system* fs) {
   1a518:	e92d4030 	push	{r4, r5, lr}                                 
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))                 
   1a51c:	e3a01000 	mov	r1, #0                                        
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)                    
{                                                                     
   1a520:	e1a04000 	mov	r4, r0                                        
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))                 
   1a524:	e3a00010 	mov	r0, #16                                       
   1a528:	ebffe0c0 	bl	12830 <rtems_rfs_trace>                        
   1a52c:	e3500000 	cmp	r0, #0                                        
   1a530:	1a000010 	bne	1a578 <rtems_rfs_buffer_close+0x60>           
                                                                      
  /*                                                                  
   * Change the block size to the media device size. It will release and sync
   * all buffers.                                                     
   */                                                                 
  rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
   1a534:	e5943010 	ldr	r3, [r4, #16]                                 
   1a538:	e1a00004 	mov	r0, r4                                        
   1a53c:	e5931020 	ldr	r1, [r3, #32]                                 
   1a540:	ebffffb6 	bl	1a420 <rtems_rfs_buffer_setblksize>            
                                                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))     
   1a544:	e2505000 	subs	r5, r0, #0                                   
   1a548:	da000004 	ble	1a560 <rtems_rfs_buffer_close+0x48>           
   1a54c:	e3a00010 	mov	r0, #16                                       <== NOT EXECUTED
   1a550:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a554:	ebffe0b5 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a558:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a55c:	1a000008 	bne	1a584 <rtems_rfs_buffer_close+0x6c>           <== NOT EXECUTED
    printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
  if (close (fs->device) < 0)                                         
   1a560:	e594000c 	ldr	r0, [r4, #12]                                 
   1a564:	ebffb28a 	bl	6f94 <close>                                   
   1a568:	e3500000 	cmp	r0, #0                                        
   1a56c:	ba00000e 	blt	1a5ac <rtems_rfs_buffer_close+0x94>           
      printf ("rtems-rfs: buffer-close: file close failed: %d: %s\n", 
              rc, strerror (rc));                                     
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   1a570:	e1a00005 	mov	r0, r5                                        
   1a574:	e8bd8030 	pop	{r4, r5, pc}                                  
rtems_rfs_buffer_close (rtems_rfs_file_system* fs)                    
{                                                                     
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))                 
    printf ("rtems-rfs: buffer-close: closing\n");                    
   1a578:	e59f0064 	ldr	r0, [pc, #100]	; 1a5e4 <rtems_rfs_buffer_close+0xcc><== NOT EXECUTED
   1a57c:	eb001860 	bl	20704 <puts>                                   <== NOT EXECUTED
   1a580:	eaffffeb 	b	1a534 <rtems_rfs_buffer_close+0x1c>             <== NOT EXECUTED
   * all buffers.                                                     
   */                                                                 
  rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_media_block_size (fs));
                                                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))     
    printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
   1a584:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a588:	eb001c73 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a58c:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a590:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1a594:	e59f004c 	ldr	r0, [pc, #76]	; 1a5e8 <rtems_rfs_buffer_close+0xd0><== NOT EXECUTED
   1a598:	eb0017c1 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  if (close (fs->device) < 0)                                         
   1a59c:	e594000c 	ldr	r0, [r4, #12]                                 <== NOT EXECUTED
   1a5a0:	ebffb27b 	bl	6f94 <close>                                   <== NOT EXECUTED
   1a5a4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a5a8:	aafffff0 	bge	1a570 <rtems_rfs_buffer_close+0x58>           <== NOT EXECUTED
  {                                                                   
    rc = errno;                                                       
   1a5ac:	eb0013f8 	bl	1f594 <__errno>                                <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))               
   1a5b0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
    printf ("rtems-rfs: buffer-close: set media block size failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
  if (close (fs->device) < 0)                                         
  {                                                                   
    rc = errno;                                                       
   1a5b4:	e5905000 	ldr	r5, [r0]                                      <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CLOSE))               
   1a5b8:	e3a00010 	mov	r0, #16                                       <== NOT EXECUTED
   1a5bc:	ebffe09b 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a5c0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a5c4:	0affffe9 	beq	1a570 <rtems_rfs_buffer_close+0x58>           <== NOT EXECUTED
      printf ("rtems-rfs: buffer-close: file close failed: %d: %s\n", 
   1a5c8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a5cc:	eb001c62 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a5d0:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a5d4:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1a5d8:	e59f000c 	ldr	r0, [pc, #12]	; 1a5ec <rtems_rfs_buffer_close+0xd4><== NOT EXECUTED
   1a5dc:	eb0017b0 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a5e0:	eaffffe2 	b	1a570 <rtems_rfs_buffer_close+0x58>             <== NOT EXECUTED
                                                                      

00019d00 <rtems_rfs_buffer_handle_release>: } int rtems_rfs_buffer_handle_release (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* handle) {
   19d00:	e92d4070 	push	{r4, r5, r6, lr}                             
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
   19d04:	e5916008 	ldr	r6, [r1, #8]                                  
   19d08:	e3560000 	cmp	r6, #0                                        
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_handle_release (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle)     
{                                                                     
   19d0c:	e24dd004 	sub	sp, sp, #4                                    
   19d10:	e1a04001 	mov	r4, r1                                        
   19d14:	e1a05000 	mov	r5, r0                                        
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
   19d18:	0a00000e 	beq	19d58 <rtems_rfs_buffer_handle_release+0x58>  
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
   19d1c:	e3a00c02 	mov	r0, #512	; 0x200                              
   19d20:	e3a01000 	mov	r1, #0                                        
   19d24:	ebffe2c1 	bl	12830 <rtems_rfs_trace>                        
   19d28:	e3500000 	cmp	r0, #0                                        
   19d2c:	1a00000c 	bne	19d64 <rtems_rfs_buffer_handle_release+0x64>  
              rtems_rfs_buffer_bnum (handle),                         
              rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",       
              rtems_rfs_buffer_refs (handle),                         
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
                                                                      
    if (rtems_rfs_buffer_refs (handle) > 0)                           
   19d30:	e5940008 	ldr	r0, [r4, #8]                                  
   19d34:	e5906030 	ldr	r6, [r0, #48]	; 0x30                          
   19d38:	e3560000 	cmp	r6, #0                                        
      rtems_rfs_buffer_refs_down (handle);                            
   19d3c:	c2466001 	subgt	r6, r6, #1                                  
   19d40:	c5806030 	strgt	r6, [r0, #48]	; 0x30                        
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
   19d44:	e3560000 	cmp	r6, #0                                        
                                                                      
int                                                                   
rtems_rfs_buffer_handle_release (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle)     
{                                                                     
  int rc = 0;                                                         
   19d48:	13a06000 	movne	r6, #0                                      
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
                                                                      
    if (rtems_rfs_buffer_refs (handle) > 0)                           
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
   19d4c:	0a00001a 	beq	19dbc <rtems_rfs_buffer_handle_release+0xbc>  
          rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
          fs->release_count++;                                        
        }                                                             
      }                                                               
    }                                                                 
    handle->buffer = NULL;                                            
   19d50:	e3a03000 	mov	r3, #0                                        
   19d54:	e5843008 	str	r3, [r4, #8]                                  
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   19d58:	e1a00006 	mov	r0, r6                                        
   19d5c:	e28dd004 	add	sp, sp, #4                                    
   19d60:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
      printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
              rtems_rfs_buffer_bnum (handle),                         
              rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",       
              rtems_rfs_buffer_refs (handle),                         
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
   19d64:	e5943008 	ldr	r3, [r4, #8]                                  <== NOT EXECUTED
   19d68:	e5933030 	ldr	r3, [r3, #48]	; 0x30                          <== NOT EXECUTED
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))      
      printf ("rtems-rfs: buffer-release: block=%" PRIu32 " %s refs=%d %s\n",
   19d6c:	e5d46000 	ldrb	r6, [r4]                                     <== NOT EXECUTED
   19d70:	e59fe158 	ldr	lr, [pc, #344]	; 19ed0 <rtems_rfs_buffer_handle_release+0x1d0><== NOT EXECUTED
   19d74:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   19d78:	e59fc154 	ldr	ip, [pc, #340]	; 19ed4 <rtems_rfs_buffer_handle_release+0x1d4><== NOT EXECUTED
   19d7c:	11a0c00e 	movne	ip, lr                                      <== NOT EXECUTED
   19d80:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
   19d84:	e5941004 	ldr	r1, [r4, #4]                                  <== NOT EXECUTED
   19d88:	e59f2148 	ldr	r2, [pc, #328]	; 19ed8 <rtems_rfs_buffer_handle_release+0x1d8><== NOT EXECUTED
   19d8c:	e59f0148 	ldr	r0, [pc, #328]	; 19edc <rtems_rfs_buffer_handle_release+0x1dc><== NOT EXECUTED
   19d90:	01a0200e 	moveq	r2, lr                                      <== NOT EXECUTED
   19d94:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   19d98:	eb0019c1 	bl	204a4 <printf>                                 <== NOT EXECUTED
              rtems_rfs_buffer_bnum (handle),                         
              rtems_rfs_buffer_dirty (handle) ? "(dirty)" : "",       
              rtems_rfs_buffer_refs (handle),                         
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
                                                                      
    if (rtems_rfs_buffer_refs (handle) > 0)                           
   19d9c:	e5940008 	ldr	r0, [r4, #8]                                  <== NOT EXECUTED
   19da0:	e5906030 	ldr	r6, [r0, #48]	; 0x30                          <== NOT EXECUTED
   19da4:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
      rtems_rfs_buffer_refs_down (handle);                            
   19da8:	c2466001 	subgt	r6, r6, #1                                  <== NOT EXECUTED
   19dac:	c5806030 	strgt	r6, [r0, #48]	; 0x30                        <== NOT EXECUTED
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
   19db0:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
                                                                      
int                                                                   
rtems_rfs_buffer_handle_release (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle)     
{                                                                     
  int rc = 0;                                                         
   19db4:	13a06000 	movne	r6, #0                                      <== NOT EXECUTED
              rtems_rfs_buffer_refs (handle) == 0 ? "BAD REF COUNT" : "");
                                                                      
    if (rtems_rfs_buffer_refs (handle) > 0)                           
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
   19db8:	1affffe4 	bne	19d50 <rtems_rfs_buffer_handle_release+0x50>  <== NOT EXECUTED
   19dbc:	ebfff42a 	bl	16e6c <_Chain_Extract>                         
    {                                                                 
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
   19dc0:	e5953050 	ldr	r3, [r5, #80]	; 0x50                          
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
   19dc4:	e5952000 	ldr	r2, [r5]                                      
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
    {                                                                 
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
   19dc8:	e2433001 	sub	r3, r3, #1                                    
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
   19dcc:	e3120002 	tst	r2, #2                                        
      rtems_rfs_buffer_refs_down (handle);                            
                                                                      
    if (rtems_rfs_buffer_refs (handle) == 0)                          
    {                                                                 
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
   19dd0:	e5853050 	str	r3, [r5, #80]	; 0x50                          
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
   19dd4:	1a00000f 	bne	19e18 <rtems_rfs_buffer_handle_release+0x118> 
         * head.                                                      
         *                                                            
         * This code stops a large series of transactions causing all the
         * buffers in the cache being held in queues of this file system.
         */                                                           
        if ((fs->release_count +                                      
   19dd8:	e5951070 	ldr	r1, [r5, #112]	; 0x70                         
   19ddc:	e5952060 	ldr	r2, [r5, #96]	; 0x60                          
   19de0:	e5953040 	ldr	r3, [r5, #64]	; 0x40                          
   19de4:	e0812002 	add	r2, r1, r2                                    
   19de8:	e1520003 	cmp	r2, r3                                        
   19dec:	2a000016 	bcs	19e4c <rtems_rfs_buffer_handle_release+0x14c> 
          }                                                           
          buffer->user = (void*) 0;                                   
          rc = rtems_rfs_buffer_io_release (buffer, modified);        
        }                                                             
                                                                      
        if (rtems_rfs_buffer_dirty (handle))                          
   19df0:	e5d43000 	ldrb	r3, [r4]                                     
   19df4:	e3530000 	cmp	r3, #0                                        
   19df8:	0a00000c 	beq	19e30 <rtems_rfs_buffer_handle_release+0x130> 
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
   19dfc:	e2850064 	add	r0, r5, #100	; 0x64                           
   19e00:	e5941008 	ldr	r1, [r4, #8]                                  
   19e04:	ebffca20 	bl	c68c <_Chain_Append>                           
        {                                                             
          rtems_chain_append (&fs->release_modified,                  
                              rtems_rfs_buffer_link (handle));        
          fs->release_modified_count++;                               
   19e08:	e5953070 	ldr	r3, [r5, #112]	; 0x70                         
   19e0c:	e2833001 	add	r3, r3, #1                                    
   19e10:	e5853070 	str	r3, [r5, #112]	; 0x70                         
   19e14:	eaffffcd 	b	19d50 <rtems_rfs_buffer_handle_release+0x50>    
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
      {                                                               
        handle->buffer->user = (void*) 0;                             
   19e18:	e5940008 	ldr	r0, [r4, #8]                                  
        rc = rtems_rfs_buffer_io_release (handle->buffer,             
   19e1c:	e5d41000 	ldrb	r1, [r4]                                     
      rtems_chain_extract (rtems_rfs_buffer_link (handle));           
      fs->buffers_count--;                                            
                                                                      
      if (rtems_rfs_fs_no_local_cache (fs))                           
      {                                                               
        handle->buffer->user = (void*) 0;                             
   19e20:	e5806034 	str	r6, [r0, #52]	; 0x34                          
        rc = rtems_rfs_buffer_io_release (handle->buffer,             
   19e24:	eb00151f 	bl	1f2a8 <rtems_rfs_buffer_bdbuf_release>         
   19e28:	e1a06000 	mov	r6, r0                                        
   19e2c:	eaffffc7 	b	19d50 <rtems_rfs_buffer_handle_release+0x50>    
   19e30:	e2850054 	add	r0, r5, #84	; 0x54                            
   19e34:	e5941008 	ldr	r1, [r4, #8]                                  
   19e38:	ebffca13 	bl	c68c <_Chain_Append>                           
          fs->release_modified_count++;                               
        }                                                             
        else                                                          
        {                                                             
          rtems_chain_append (&fs->release, rtems_rfs_buffer_link (handle));
          fs->release_count++;                                        
   19e3c:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          
   19e40:	e2833001 	add	r3, r3, #1                                    
   19e44:	e5853060 	str	r3, [r5, #96]	; 0x60                          
   19e48:	eaffffc0 	b	19d50 <rtems_rfs_buffer_handle_release+0x50>    
             fs->release_modified_count) >= fs->max_held_buffers)     
        {                                                             
          rtems_rfs_buffer* buffer;                                   
          bool              modified;                                 
                                                                      
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
   19e4c:	e3a00c02 	mov	r0, #512	; 0x200                              
   19e50:	e3a01000 	mov	r1, #0                                        
   19e54:	ebffe275 	bl	12830 <rtems_rfs_trace>                        
   19e58:	e3500000 	cmp	r0, #0                                        
   19e5c:	1a000015 	bne	19eb8 <rtems_rfs_buffer_handle_release+0x1b8> 
            printf ("rtems-rfs: buffer-release: local cache overflow:"
                    " %" PRIu32 "\n", fs->release_count + fs->release_modified_count);
                                                                      
          if (fs->release_count > fs->release_modified_count)         
   19e60:	e5952060 	ldr	r2, [r5, #96]	; 0x60                          
   19e64:	e5953070 	ldr	r3, [r5, #112]	; 0x70                         
   19e68:	e1520003 	cmp	r2, r3                                        
   19e6c:	9a00000a 	bls	19e9c <rtems_rfs_buffer_handle_release+0x19c> 
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
   19e70:	e2850054 	add	r0, r5, #84	; 0x54                            
   19e74:	ebffca0f 	bl	c6b8 <_Chain_Get>                              
          {                                                           
            buffer = (rtems_rfs_buffer*) rtems_chain_get (&fs->release);
            fs->release_count--;                                      
   19e78:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          
   19e7c:	e2433001 	sub	r3, r3, #1                                    
   19e80:	e5853060 	str	r3, [r5, #96]	; 0x60                          
            buffer =                                                  
              (rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
            fs->release_modified_count--;                             
            modified = true;                                          
          }                                                           
          buffer->user = (void*) 0;                                   
   19e84:	e3a03000 	mov	r3, #0                                        
          rc = rtems_rfs_buffer_io_release (buffer, modified);        
   19e88:	e1a01006 	mov	r1, r6                                        
            buffer =                                                  
              (rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
            fs->release_modified_count--;                             
            modified = true;                                          
          }                                                           
          buffer->user = (void*) 0;                                   
   19e8c:	e5803034 	str	r3, [r0, #52]	; 0x34                          
          rc = rtems_rfs_buffer_io_release (buffer, modified);        
   19e90:	eb001504 	bl	1f2a8 <rtems_rfs_buffer_bdbuf_release>         
   19e94:	e1a06000 	mov	r6, r0                                        
   19e98:	eaffffd4 	b	19df0 <rtems_rfs_buffer_handle_release+0xf0>    
   19e9c:	e2850064 	add	r0, r5, #100	; 0x64                           
   19ea0:	ebffca04 	bl	c6b8 <_Chain_Get>                              
          }                                                           
          else                                                        
          {                                                           
            buffer =                                                  
              (rtems_rfs_buffer*) rtems_chain_get (&fs->release_modified);
            fs->release_modified_count--;                             
   19ea4:	e5953070 	ldr	r3, [r5, #112]	; 0x70                         
   19ea8:	e2433001 	sub	r3, r3, #1                                    
   19eac:	e5853070 	str	r3, [r5, #112]	; 0x70                         
   19eb0:	e3a06001 	mov	r6, #1                                        
   19eb4:	eafffff2 	b	19e84 <rtems_rfs_buffer_handle_release+0x184>   
        {                                                             
          rtems_rfs_buffer* buffer;                                   
          bool              modified;                                 
                                                                      
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_RELEASE))
            printf ("rtems-rfs: buffer-release: local cache overflow:"
   19eb8:	e5951070 	ldr	r1, [r5, #112]	; 0x70                         <== NOT EXECUTED
   19ebc:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          <== NOT EXECUTED
   19ec0:	e59f0018 	ldr	r0, [pc, #24]	; 19ee0 <rtems_rfs_buffer_handle_release+0x1e0><== NOT EXECUTED
   19ec4:	e0811003 	add	r1, r1, r3                                    <== NOT EXECUTED
   19ec8:	eb001975 	bl	204a4 <printf>                                 <== NOT EXECUTED
   19ecc:	eaffffe3 	b	19e60 <rtems_rfs_buffer_handle_release+0x160>   <== NOT EXECUTED
                                                                      

00019ee4 <rtems_rfs_buffer_handle_request>: int rtems_rfs_buffer_handle_request (rtems_rfs_file_system* fs, rtems_rfs_buffer_handle* handle, rtems_rfs_buffer_block block, bool read) {
   19ee4:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
   19ee8:	e1a04001 	mov	r4, r1                                        
                                                                      
  /*                                                                  
   * If the handle has a buffer release it. This allows a handle to be reused
   * without needing to close then open it again.                     
   */                                                                 
  if (rtems_rfs_buffer_handle_has_block (handle))                     
   19eec:	e5911008 	ldr	r1, [r1, #8]                                  
   19ef0:	e3510000 	cmp	r1, #0                                        
int                                                                   
rtems_rfs_buffer_handle_request (rtems_rfs_file_system*   fs,         
                                 rtems_rfs_buffer_handle* handle,     
                                 rtems_rfs_buffer_block   block,      
                                 bool                     read)       
{                                                                     
   19ef4:	e24dd004 	sub	sp, sp, #4                                    
   19ef8:	e1a05000 	mov	r5, r0                                        
   19efc:	e1a06002 	mov	r6, r2                                        
   19f00:	e20380ff 	and	r8, r3, #255	; 0xff                           
                                                                      
  /*                                                                  
   * If the handle has a buffer release it. This allows a handle to be reused
   * without needing to close then open it again.                     
   */                                                                 
  if (rtems_rfs_buffer_handle_has_block (handle))                     
   19f04:	0a000015 	beq	19f60 <rtems_rfs_buffer_handle_request+0x7c>  
  {                                                                   
    /*                                                                
     * Treat block 0 as special to handle the loading of the super block.
     */                                                               
    if (block && (rtems_rfs_buffer_bnum (handle) == block))           
   19f08:	e3520000 	cmp	r2, #0                                        
   19f0c:	0a000003 	beq	19f20 <rtems_rfs_buffer_handle_request+0x3c>  
   19f10:	e5943004 	ldr	r3, [r4, #4]                                  
   19f14:	e1530002 	cmp	r3, r2                                        
      return 0;                                                       
   19f18:	03a07000 	moveq	r7, #0                                      
  if (rtems_rfs_buffer_handle_has_block (handle))                     
  {                                                                   
    /*                                                                
     * Treat block 0 as special to handle the loading of the super block.
     */                                                               
    if (block && (rtems_rfs_buffer_bnum (handle) == block))           
   19f1c:	0a000009 	beq	19f48 <rtems_rfs_buffer_handle_request+0x64>  
      return 0;                                                       
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
   19f20:	e3a00c01 	mov	r0, #256	; 0x100                              
   19f24:	e3a01000 	mov	r1, #0                                        
   19f28:	ebffe240 	bl	12830 <rtems_rfs_trace>                        
   19f2c:	e3500000 	cmp	r0, #0                                        
   19f30:	1a000036 	bne	1a010 <rtems_rfs_buffer_handle_request+0x12c> 
      printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
              rtems_rfs_buffer_bnum (handle));                        
                                                                      
    rc = rtems_rfs_buffer_handle_release (fs, handle);                
   19f34:	e1a00005 	mov	r0, r5                                        
   19f38:	e1a01004 	mov	r1, r4                                        
   19f3c:	ebffff6f 	bl	19d00 <rtems_rfs_buffer_handle_release>        
    if (rc > 0)                                                       
   19f40:	e2507000 	subs	r7, r0, #0                                   
   19f44:	da000002 	ble	19f54 <rtems_rfs_buffer_handle_request+0x70>  
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
            block, read ? "read" : "get", handle->buffer->block,      
            handle->buffer->references);                              
                                                                      
  return 0;                                                           
}                                                                     
   19f48:	e1a00007 	mov	r0, r7                                        
   19f4c:	e28dd004 	add	sp, sp, #4                                    
   19f50:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
              rtems_rfs_buffer_bnum (handle));                        
                                                                      
    rc = rtems_rfs_buffer_handle_release (fs, handle);                
    if (rc > 0)                                                       
      return rc;                                                      
    handle->dirty = false;                                            
   19f54:	e3a03000 	mov	r3, #0                                        
   19f58:	e5c43000 	strb	r3, [r4]                                     
    handle->bnum = 0;                                                 
   19f5c:	e5843004 	str	r3, [r4, #4]                                  
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
   19f60:	e3a00c01 	mov	r0, #256	; 0x100                              
   19f64:	e3a01000 	mov	r1, #0                                        
   19f68:	ebffe230 	bl	12830 <rtems_rfs_trace>                        
   19f6c:	e3500000 	cmp	r0, #0                                        
   19f70:	1a000069 	bne	1a11c <rtems_rfs_buffer_handle_request+0x238> 
   * currently attached to a handle. If it is share the access. A buffer could
   * be shared where different parts of the block have separate functions. An
   * example is an inode block and the file system needs to handle 2 inodes in
   * the same block at the same time.                                 
   */                                                                 
  if (fs->buffers_count)                                              
   19f74:	e5953050 	ldr	r3, [r5, #80]	; 0x50                          
   19f78:	e3530000 	cmp	r3, #0                                        
   19f7c:	1a000053 	bne	1a0d0 <rtems_rfs_buffer_handle_request+0x1ec> 
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 
   19f80:	e5943008 	ldr	r3, [r4, #8]                                  
  /*                                                                  
   * If the buffer has not been found check the local cache of released
   * buffers. There are release and released modified lists to preserve the
   * state.                                                           
   */                                                                 
  if (!rtems_rfs_fs_no_local_cache (fs) &&                            
   19f84:	e5952000 	ldr	r2, [r5]                                      
   19f88:	e3120002 	tst	r2, #2                                        
   19f8c:	0a000023 	beq	1a020 <rtems_rfs_buffer_handle_request+0x13c> 
  }                                                                   
                                                                      
  /*                                                                  
   * If not located we request the buffer from the I/O layer.         
   */                                                                 
  if (!rtems_rfs_buffer_handle_has_block (handle))                    
   19f90:	e3530000 	cmp	r3, #0                                        
   19f94:	0a000033 	beq	1a068 <rtems_rfs_buffer_handle_request+0x184> 
  }                                                                   
                                                                      
  /*                                                                  
   * Increase the reference count of the buffer.                      
   */                                                                 
  rtems_rfs_buffer_refs_up (handle);                                  
   19f98:	e5932030 	ldr	r2, [r3, #48]	; 0x30                          
   19f9c:	e2822001 	add	r2, r2, #1                                    
RTEMS_INLINE_ROUTINE void rtems_chain_append(                         
  rtems_chain_control *the_chain,                                     
  rtems_chain_node    *the_node                                       
)                                                                     
{                                                                     
  _Chain_Append( the_chain, the_node );                               
   19fa0:	e1a01003 	mov	r1, r3                                        
   19fa4:	e5832030 	str	r2, [r3, #48]	; 0x30                          
   19fa8:	e2850044 	add	r0, r5, #68	; 0x44                            
   19fac:	ebffc9b6 	bl	c68c <_Chain_Append>                           
  rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));  
  fs->buffers_count++;                                                
   19fb0:	e5952050 	ldr	r2, [r5, #80]	; 0x50                          
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
   19fb4:	e5943008 	ldr	r3, [r4, #8]                                  
  /*                                                                  
   * Increase the reference count of the buffer.                      
   */                                                                 
  rtems_rfs_buffer_refs_up (handle);                                  
  rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));  
  fs->buffers_count++;                                                
   19fb8:	e2822001 	add	r2, r2, #1                                    
   19fbc:	e5852050 	str	r2, [r5, #80]	; 0x50                          
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
   19fc0:	e3a00c01 	mov	r0, #256	; 0x100                              
   */                                                                 
  rtems_rfs_buffer_refs_up (handle);                                  
  rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));  
  fs->buffers_count++;                                                
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
   19fc4:	e5836034 	str	r6, [r3, #52]	; 0x34                          
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
   19fc8:	e3a01000 	mov	r1, #0                                        
  rtems_rfs_buffer_refs_up (handle);                                  
  rtems_chain_append (&fs->buffers, rtems_rfs_buffer_link (handle));  
  fs->buffers_count++;                                                
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
   19fcc:	e5846004 	str	r6, [r4, #4]                                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
   19fd0:	ebffe216 	bl	12830 <rtems_rfs_trace>                        
   19fd4:	e2507000 	subs	r7, r0, #0                                   
   19fd8:	0affffda 	beq	19f48 <rtems_rfs_buffer_handle_request+0x64>  
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
            block, read ? "read" : "get", handle->buffer->block,      
   19fdc:	e5942008 	ldr	r2, [r4, #8]                                  <== NOT EXECUTED
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
   19fe0:	e59fe17c 	ldr	lr, [pc, #380]	; 1a164 <rtems_rfs_buffer_handle_request+0x280><== NOT EXECUTED
   19fe4:	e592c030 	ldr	ip, [r2, #48]	; 0x30                          <== NOT EXECUTED
   19fe8:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
   19fec:	e5923018 	ldr	r3, [r2, #24]                                 <== NOT EXECUTED
   19ff0:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   19ff4:	e59f216c 	ldr	r2, [pc, #364]	; 1a168 <rtems_rfs_buffer_handle_request+0x284><== NOT EXECUTED
   19ff8:	e59f016c 	ldr	r0, [pc, #364]	; 1a16c <rtems_rfs_buffer_handle_request+0x288><== NOT EXECUTED
   19ffc:	01a0200e 	moveq	r2, lr                                      <== NOT EXECUTED
   1a000:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
            block, read ? "read" : "get", handle->buffer->block,      
            handle->buffer->references);                              
                                                                      
  return 0;                                                           
   1a004:	e3a07000 	mov	r7, #0                                        <== NOT EXECUTED
                                                                      
  handle->buffer->user = (void*) ((intptr_t) block);                  
  handle->bnum = block;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 " bdbuf-%s=%" PRIu32 " refs=%d\n",
   1a008:	eb001925 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a00c:	eaffffcd 	b	19f48 <rtems_rfs_buffer_handle_request+0x64>    <== NOT EXECUTED
     */                                                               
    if (block && (rtems_rfs_buffer_bnum (handle) == block))           
      return 0;                                                       
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: handle has buffer: %" PRIu32 "\n",
   1a010:	e5941004 	ldr	r1, [r4, #4]                                  <== NOT EXECUTED
   1a014:	e59f0154 	ldr	r0, [pc, #340]	; 1a170 <rtems_rfs_buffer_handle_request+0x28c><== NOT EXECUTED
   1a018:	eb001921 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a01c:	eaffffc4 	b	19f34 <rtems_rfs_buffer_handle_request+0x50>    <== NOT EXECUTED
  /*                                                                  
   * If the buffer has not been found check the local cache of released
   * buffers. There are release and released modified lists to preserve the
   * state.                                                           
   */                                                                 
  if (!rtems_rfs_fs_no_local_cache (fs) &&                            
   1a020:	e3530000 	cmp	r3, #0                                        
   1a024:	1affffdb 	bne	19f98 <rtems_rfs_buffer_handle_request+0xb4>  
      !rtems_rfs_buffer_handle_has_block (handle))                    
  {                                                                   
    /*                                                                
     * Check the local cache of released buffers.                     
     */                                                               
    if (fs->release_count)                                            
   1a028:	e5953060 	ldr	r3, [r5, #96]	; 0x60                          
   1a02c:	e3530000 	cmp	r3, #0                                        
   1a030:	1a000042 	bne	1a140 <rtems_rfs_buffer_handle_request+0x25c> 
      handle->buffer = rtems_rfs_scan_chain (&fs->release,            
                                             &fs->release_count,      
                                             block);                  
                                                                      
    if (!rtems_rfs_buffer_handle_has_block (handle) &&                
   1a034:	e5953070 	ldr	r3, [r5, #112]	; 0x70                         
   1a038:	e3530000 	cmp	r3, #0                                        
   1a03c:	0a000009 	beq	1a068 <rtems_rfs_buffer_handle_request+0x184> 
        fs->release_modified_count)                                   
    {                                                                 
      handle->buffer = rtems_rfs_scan_chain (&fs->release_modified,   
   1a040:	e1a02006 	mov	r2, r6                                        
   1a044:	e2850064 	add	r0, r5, #100	; 0x64                           
   1a048:	e2851070 	add	r1, r5, #112	; 0x70                           
   1a04c:	ebfffeee 	bl	19c0c <rtems_rfs_scan_chain>                   
                                             &fs->release_modified_count,
                                             block);                  
      /*                                                              
       * If we found a buffer retain the dirty buffer state.          
       */                                                             
      if (rtems_rfs_buffer_handle_has_block (handle))                 
   1a050:	e3500000 	cmp	r0, #0                                        
        rtems_rfs_buffer_mark_dirty (handle);                         
   1a054:	13a02001 	movne	r2, #1                                      
                                             block);                  
                                                                      
    if (!rtems_rfs_buffer_handle_has_block (handle) &&                
        fs->release_modified_count)                                   
    {                                                                 
      handle->buffer = rtems_rfs_scan_chain (&fs->release_modified,   
   1a058:	e1a03000 	mov	r3, r0                                        
   1a05c:	e5840008 	str	r0, [r4, #8]                                  
                                             block);                  
      /*                                                              
       * If we found a buffer retain the dirty buffer state.          
       */                                                             
      if (rtems_rfs_buffer_handle_has_block (handle))                 
        rtems_rfs_buffer_mark_dirty (handle);                         
   1a060:	15c42000 	strbne	r2, [r4]                                   
                                             &fs->release_modified_count,
                                             block);                  
      /*                                                              
       * If we found a buffer retain the dirty buffer state.          
       */                                                             
      if (rtems_rfs_buffer_handle_has_block (handle))                 
   1a064:	1affffcb 	bne	19f98 <rtems_rfs_buffer_handle_request+0xb4>  
  /*                                                                  
   * If not located we request the buffer from the I/O layer.         
   */                                                                 
  if (!rtems_rfs_buffer_handle_has_block (handle))                    
  {                                                                   
    rc = rtems_rfs_buffer_io_request (fs, block, read, &handle->buffer);
   1a068:	e1a00005 	mov	r0, r5                                        
   1a06c:	e1a01006 	mov	r1, r6                                        
   1a070:	e1a02008 	mov	r2, r8                                        
   1a074:	e2843008 	add	r3, r4, #8                                    
   1a078:	eb00147d 	bl	1f274 <rtems_rfs_buffer_bdbuf_request>         
                                                                      
    if (rc > 0)                                                       
   1a07c:	e2507000 	subs	r7, r0, #0                                   
   1a080:	da000029 	ble	1a12c <rtems_rfs_buffer_handle_request+0x248> 
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))    
   1a084:	e3a00c01 	mov	r0, #256	; 0x100                              <== NOT EXECUTED
   1a088:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a08c:	ebffe1e7 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a090:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a094:	0affffab 	beq	19f48 <rtems_rfs_buffer_handle_request+0x64>  <== NOT EXECUTED
        printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
   1a098:	e59f30c8 	ldr	r3, [pc, #200]	; 1a168 <rtems_rfs_buffer_handle_request+0x284><== NOT EXECUTED
   1a09c:	e59f20c0 	ldr	r2, [pc, #192]	; 1a164 <rtems_rfs_buffer_handle_request+0x280><== NOT EXECUTED
   1a0a0:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
   1a0a4:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1a0a8:	11a08003 	movne	r8, r3                                      <== NOT EXECUTED
   1a0ac:	01a08002 	moveq	r8, r2                                      <== NOT EXECUTED
   1a0b0:	eb001da9 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a0b4:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1a0b8:	e58d0000 	str	r0, [sp]                                      <== NOT EXECUTED
   1a0bc:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
   1a0c0:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
   1a0c4:	e59f00a8 	ldr	r0, [pc, #168]	; 1a174 <rtems_rfs_buffer_handle_request+0x290><== NOT EXECUTED
   1a0c8:	eb0018f5 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a0cc:	eaffff9d 	b	19f48 <rtems_rfs_buffer_handle_request+0x64>    <== NOT EXECUTED
  if (fs->buffers_count)                                              
  {                                                                   
    /*                                                                
     * Check the active buffer list for shared buffers.               
     */                                                               
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
   1a0d0:	e2850044 	add	r0, r5, #68	; 0x44                            
   1a0d4:	e2851050 	add	r1, r5, #80	; 0x50                            
   1a0d8:	e1a02006 	mov	r2, r6                                        
   1a0dc:	ebfffeca 	bl	19c0c <rtems_rfs_scan_chain>                   
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
   1a0e0:	e3500000 	cmp	r0, #0                                        
  if (fs->buffers_count)                                              
  {                                                                   
    /*                                                                
     * Check the active buffer list for shared buffers.               
     */                                                               
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
   1a0e4:	e5840008 	str	r0, [r4, #8]                                  
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
   1a0e8:	01a03000 	moveq	r3, r0                                      
   1a0ec:	0affffa4 	beq	19f84 <rtems_rfs_buffer_handle_request+0xa0>  
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
   1a0f0:	e3a00c01 	mov	r0, #256	; 0x100                              
   1a0f4:	e3a01000 	mov	r1, #0                                        
   1a0f8:	ebffe1cc 	bl	12830 <rtems_rfs_trace>                        
     * Check the active buffer list for shared buffers.               
     */                                                               
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
   1a0fc:	e3500000 	cmp	r0, #0                                        
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 
              rtems_rfs_buffer_refs (handle) + 1);                    
   1a100:	e5943008 	ldr	r3, [r4, #8]                                  
     * Check the active buffer list for shared buffers.               
     */                                                               
    handle->buffer = rtems_rfs_scan_chain (&fs->buffers,              
                                           &fs->buffers_count,        
                                           block);                    
    if (rtems_rfs_buffer_handle_has_block (handle) &&                 
   1a104:	0affff9e 	beq	19f84 <rtems_rfs_buffer_handle_request+0xa0>  
        rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))      
      printf ("rtems-rfs: buffer-request: buffer shared: refs: %d\n", 
   1a108:	e5931030 	ldr	r1, [r3, #48]	; 0x30                          <== NOT EXECUTED
   1a10c:	e59f0064 	ldr	r0, [pc, #100]	; 1a178 <rtems_rfs_buffer_handle_request+0x294><== NOT EXECUTED
   1a110:	e2811001 	add	r1, r1, #1                                    <== NOT EXECUTED
   1a114:	eb0018e2 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a118:	eaffff98 	b	19f80 <rtems_rfs_buffer_handle_request+0x9c>    <== NOT EXECUTED
    handle->dirty = false;                                            
    handle->bnum = 0;                                                 
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_HANDLE_REQUEST))        
    printf ("rtems-rfs: buffer-request: block=%" PRIu32 "\n", block); 
   1a11c:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1a120:	e59f0054 	ldr	r0, [pc, #84]	; 1a17c <rtems_rfs_buffer_handle_request+0x298><== NOT EXECUTED
   1a124:	eb0018de 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a128:	eaffff91 	b	19f74 <rtems_rfs_buffer_handle_request+0x90>    <== NOT EXECUTED
        printf ("rtems-rfs: buffer-request: block=%" PRIu32 ": bdbuf-%s: %d: %s\n",
                block, read ? "read" : "get", rc, strerror (rc));     
      return rc;                                                      
    }                                                                 
                                                                      
    rtems_chain_set_off_chain (rtems_rfs_buffer_link(handle));        
   1a12c:	e5943008 	ldr	r3, [r4, #8]                                  
   1a130:	e3a02000 	mov	r2, #0                                        
   1a134:	e5832004 	str	r2, [r3, #4]                                  
   1a138:	e5832000 	str	r2, [r3]                                      
   1a13c:	eaffff95 	b	19f98 <rtems_rfs_buffer_handle_request+0xb4>    
  {                                                                   
    /*                                                                
     * Check the local cache of released buffers.                     
     */                                                               
    if (fs->release_count)                                            
      handle->buffer = rtems_rfs_scan_chain (&fs->release,            
   1a140:	e2850054 	add	r0, r5, #84	; 0x54                            
   1a144:	e2851060 	add	r1, r5, #96	; 0x60                            
   1a148:	e1a02006 	mov	r2, r6                                        
   1a14c:	ebfffeae 	bl	19c0c <rtems_rfs_scan_chain>                   
                                             &fs->release_count,      
                                             block);                  
                                                                      
    if (!rtems_rfs_buffer_handle_has_block (handle) &&                
   1a150:	e3500000 	cmp	r0, #0                                        
  {                                                                   
    /*                                                                
     * Check the local cache of released buffers.                     
     */                                                               
    if (fs->release_count)                                            
      handle->buffer = rtems_rfs_scan_chain (&fs->release,            
   1a154:	e1a03000 	mov	r3, r0                                        
   1a158:	e5840008 	str	r0, [r4, #8]                                  
                                             &fs->release_count,      
                                             block);                  
                                                                      
    if (!rtems_rfs_buffer_handle_has_block (handle) &&                
   1a15c:	1affff8d 	bne	19f98 <rtems_rfs_buffer_handle_request+0xb4>  
   1a160:	eaffffb3 	b	1a034 <rtems_rfs_buffer_handle_request+0x150>   
                                                                      

0001a180 <rtems_rfs_buffer_open>: return rc; } int rtems_rfs_buffer_open (const char* name, rtems_rfs_file_system* fs) {
   1a180:	e92d4030 	push	{r4, r5, lr}                                 
   1a184:	e1a05000 	mov	r5, r0                                        
   1a188:	e24dd048 	sub	sp, sp, #72	; 0x48                            
   1a18c:	e1a04001 	mov	r4, r1                                        
  struct stat st;                                                     
#if RTEMS_RFS_USE_LIBBLOCK                                            
  int rv;                                                             
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
   1a190:	e3a00020 	mov	r0, #32                                       
   1a194:	e3a01000 	mov	r1, #0                                        
   1a198:	ebffe1a4 	bl	12830 <rtems_rfs_trace>                        
   1a19c:	e3500000 	cmp	r0, #0                                        
   1a1a0:	1a000015 	bne	1a1fc <rtems_rfs_buffer_open+0x7c>            
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
                                                                      
  fs->device = open (name, O_RDWR);                                   
   1a1a4:	e1a00005 	mov	r0, r5                                        
   1a1a8:	e3a01002 	mov	r1, #2                                        
   1a1ac:	ebffb7d4 	bl	8104 <open>                                    
  if (fs->device < 0)                                                 
   1a1b0:	e3500000 	cmp	r0, #0                                        
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
                                                                      
  fs->device = open (name, O_RDWR);                                   
   1a1b4:	e584000c 	str	r0, [r4, #12]                                 
  if (fs->device < 0)                                                 
   1a1b8:	ba000018 	blt	1a220 <rtems_rfs_buffer_open+0xa0>            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
      printf ("rtems-rfs: buffer-open: cannot open file\n");          
    return ENXIO;                                                     
  }                                                                   
                                                                      
  if (fstat (fs->device, &st) < 0)                                    
   1a1bc:	e1a0100d 	mov	r1, sp                                        
   1a1c0:	ebffb445 	bl	72dc <fstat>                                   
   1a1c4:	e3500000 	cmp	r0, #0                                        
   1a1c8:	ba000031 	blt	1a294 <rtems_rfs_buffer_open+0x114>           
                                                                      
#if RTEMS_RFS_USE_LIBBLOCK                                            
  /*                                                                  
   * Is the device a block device ?                                   
   */                                                                 
  if (!S_ISBLK (st.st_mode))                                          
   1a1cc:	e59d300c 	ldr	r3, [sp, #12]                                 
   1a1d0:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
   1a1d4:	e3530a06 	cmp	r3, #24576	; 0x6000                           
   1a1d8:	0a000019 	beq	1a244 <rtems_rfs_buffer_open+0xc4>            
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
   1a1dc:	e3a00008 	mov	r0, #8                                        <== NOT EXECUTED
   1a1e0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a1e4:	ebffe191 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a1e8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a1ec:	1a000023 	bne	1a280 <rtems_rfs_buffer_open+0x100>           <== NOT EXECUTED
  rv = rtems_disk_fd_get_disk_device (fs->device, &fs->disk);         
  if (rv != 0)                                                        
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
      printf ("rtems-rfs: buffer-open: cannot obtain the disk\n");    
    return ENXIO;                                                     
   1a1f0:	e3a00006 	mov	r0, #6                                        <== NOT EXECUTED
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
            rtems_rfs_fs_media_blocks (fs),                           
            rtems_rfs_fs_media_block_size (fs));                      
                                                                      
  return 0;                                                           
}                                                                     
   1a1f4:	e28dd048 	add	sp, sp, #72	; 0x48                            
   1a1f8:	e8bd8030 	pop	{r4, r5, pc}                                  
#if RTEMS_RFS_USE_LIBBLOCK                                            
  int rv;                                                             
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
   1a1fc:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a200:	e59f00f4 	ldr	r0, [pc, #244]	; 1a2fc <rtems_rfs_buffer_open+0x17c><== NOT EXECUTED
   1a204:	eb0018a6 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
  fs->device = open (name, O_RDWR);                                   
   1a208:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a20c:	e3a01002 	mov	r1, #2                                        <== NOT EXECUTED
   1a210:	ebffb7bb 	bl	8104 <open>                                    <== NOT EXECUTED
  if (fs->device < 0)                                                 
   1a214:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-open: opening: %s\n", name);           
                                                                      
  fs->device = open (name, O_RDWR);                                   
   1a218:	e584000c 	str	r0, [r4, #12]                                 <== NOT EXECUTED
  if (fs->device < 0)                                                 
   1a21c:	aaffffe6 	bge	1a1bc <rtems_rfs_buffer_open+0x3c>            <== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
   1a220:	e3a00008 	mov	r0, #8                                        <== NOT EXECUTED
   1a224:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a228:	ebffe180 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a22c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a230:	0affffee 	beq	1a1f0 <rtems_rfs_buffer_open+0x70>            <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: cannot open file\n");          
   1a234:	e59f00c4 	ldr	r0, [pc, #196]	; 1a300 <rtems_rfs_buffer_open+0x180><== NOT EXECUTED
   1a238:	eb001931 	bl	20704 <puts>                                   <== NOT EXECUTED
    return ENXIO;                                                     
   1a23c:	e3a00006 	mov	r0, #6                                        <== NOT EXECUTED
   1a240:	eaffffeb 	b	1a1f4 <rtems_rfs_buffer_open+0x74>              <== NOT EXECUTED
static inline int rtems_disk_fd_get_disk_device(                      
  int fd,                                                             
  rtems_disk_device **dd_ptr                                          
)                                                                     
{                                                                     
  return ioctl(fd, RTEMS_BLKIO_GETDISKDEV, dd_ptr);                   
   1a244:	e594000c 	ldr	r0, [r4, #12]                                 
   1a248:	e59f10b4 	ldr	r1, [pc, #180]	; 1a304 <rtems_rfs_buffer_open+0x184>
   1a24c:	e2842010 	add	r2, r4, #16                                   
   1a250:	ebffb46d 	bl	740c <ioctl>                                   
                                                                      
  /*                                                                  
   * Check that device is registred as a block device and lock it.    
   */                                                                 
  rv = rtems_disk_fd_get_disk_device (fs->device, &fs->disk);         
  if (rv != 0)                                                        
   1a254:	e2505000 	subs	r5, r0, #0                                   
   1a258:	0a00001b 	beq	1a2cc <rtems_rfs_buffer_open+0x14c>           
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
   1a25c:	e3a00008 	mov	r0, #8                                        <== NOT EXECUTED
   1a260:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a264:	ebffe171 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a268:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a26c:	0affffdf 	beq	1a1f0 <rtems_rfs_buffer_open+0x70>            <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: cannot obtain the disk\n");    
   1a270:	e59f0090 	ldr	r0, [pc, #144]	; 1a308 <rtems_rfs_buffer_open+0x188><== NOT EXECUTED
   1a274:	eb001922 	bl	20704 <puts>                                   <== NOT EXECUTED
    return ENXIO;                                                     
   1a278:	e3a00006 	mov	r0, #6                                        <== NOT EXECUTED
   1a27c:	eaffffdc 	b	1a1f4 <rtems_rfs_buffer_open+0x74>              <== NOT EXECUTED
   * Is the device a block device ?                                   
   */                                                                 
  if (!S_ISBLK (st.st_mode))                                          
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
      printf ("rtems-rfs: buffer-open: '%s' is not a block device\n", name);
   1a280:	e59f0084 	ldr	r0, [pc, #132]	; 1a30c <rtems_rfs_buffer_open+0x18c><== NOT EXECUTED
   1a284:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a288:	eb001885 	bl	204a4 <printf>                                 <== NOT EXECUTED
    return ENXIO;                                                     
   1a28c:	e3a00006 	mov	r0, #6                                        <== NOT EXECUTED
   1a290:	eaffffd7 	b	1a1f4 <rtems_rfs_buffer_open+0x74>              <== NOT EXECUTED
    return ENXIO;                                                     
  }                                                                   
                                                                      
  if (fstat (fs->device, &st) < 0)                                    
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
   1a294:	e3a00008 	mov	r0, #8                                        <== NOT EXECUTED
   1a298:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a29c:	ebffe163 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a2a0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a2a4:	0affffd1 	beq	1a1f0 <rtems_rfs_buffer_open+0x70>            <== NOT EXECUTED
      printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",       
              name, strerror (errno));                                
   1a2a8:	eb0014b9 	bl	1f594 <__errno>                                <== NOT EXECUTED
  }                                                                   
                                                                      
  if (fstat (fs->device, &st) < 0)                                    
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_OPEN))                
      printf ("rtems-rfs: buffer-open: stat '%s' failed: %s\n",       
   1a2ac:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   1a2b0:	eb001d29 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a2b4:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a2b8:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1a2bc:	e59f004c 	ldr	r0, [pc, #76]	; 1a310 <rtems_rfs_buffer_open+0x190><== NOT EXECUTED
   1a2c0:	eb001877 	bl	204a4 <printf>                                 <== NOT EXECUTED
              name, strerror (errno));                                
    return ENXIO;                                                     
   1a2c4:	e3a00006 	mov	r0, #6                                        <== NOT EXECUTED
   1a2c8:	eaffffc9 	b	1a1f4 <rtems_rfs_buffer_open+0x74>              <== NOT EXECUTED
#else                                                                 
  fs->media_size = st.st_size;                                        
  strcat (fs->name, name);                                            
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
   1a2cc:	e3a00020 	mov	r0, #32                                       
   1a2d0:	e3a01000 	mov	r1, #0                                        
   1a2d4:	ebffe155 	bl	12830 <rtems_rfs_trace>                        
   1a2d8:	e3500000 	cmp	r0, #0                                        
   1a2dc:	0affffc4 	beq	1a1f4 <rtems_rfs_buffer_open+0x74>            
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
            rtems_rfs_fs_media_blocks (fs),                           
   1a2e0:	e5943010 	ldr	r3, [r4, #16]                                 <== NOT EXECUTED
  fs->media_size = st.st_size;                                        
  strcat (fs->name, name);                                            
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-open: blks=%" PRId32 ", blk-size=%" PRId32 "\n",
   1a2e4:	e283101c 	add	r1, r3, #28                                   <== NOT EXECUTED
   1a2e8:	e59f0024 	ldr	r0, [pc, #36]	; 1a314 <rtems_rfs_buffer_open+0x194><== NOT EXECUTED
   1a2ec:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
   1a2f0:	eb00186b 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_media_blocks (fs),                           
            rtems_rfs_fs_media_block_size (fs));                      
                                                                      
  return 0;                                                           
   1a2f4:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a2f8:	eaffffbd 	b	1a1f4 <rtems_rfs_buffer_open+0x74>              <== NOT EXECUTED
                                                                      

0001a420 <rtems_rfs_buffer_setblksize>: return result; } int rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size) {
   1a420:	e92d4030 	push	{r4, r5, lr}                                 
   1a424:	e24dd004 	sub	sp, sp, #4                                    
   1a428:	e58d1000 	str	r1, [sp]                                      
   1a42c:	e1a04000 	mov	r4, r0                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))            
   1a430:	e3a01000 	mov	r1, #0                                        
   1a434:	e3a00b01 	mov	r0, #1024	; 0x400                             
   1a438:	ebffe0fc 	bl	12830 <rtems_rfs_trace>                        
   1a43c:	e3500000 	cmp	r0, #0                                        
   1a440:	1a00001b 	bne	1a4b4 <rtems_rfs_buffer_setblksize+0x94>      
    printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size); 
                                                                      
  rc = rtems_rfs_buffers_release (fs);                                
   1a444:	e1a00004 	mov	r0, r4                                        
   1a448:	ebffffd6 	bl	1a3a8 <rtems_rfs_buffers_release>              
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
   1a44c:	e2505000 	subs	r5, r0, #0                                   
   1a450:	da000004 	ble	1a468 <rtems_rfs_buffer_setblksize+0x48>      
   1a454:	e3a00b01 	mov	r0, #1024	; 0x400                             <== NOT EXECUTED
   1a458:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a45c:	ebffe0f3 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a460:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a464:	1a00001d 	bne	1a4e0 <rtems_rfs_buffer_setblksize+0xc0>      <== NOT EXECUTED
    printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_buffer_sync (fs);                                    
   1a468:	e1a00004 	mov	r0, r4                                        
   1a46c:	ebffffa9 	bl	1a318 <rtems_rfs_buffer_sync>                  
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
   1a470:	e2505000 	subs	r5, r0, #0                                   
   1a474:	da000004 	ble	1a48c <rtems_rfs_buffer_setblksize+0x6c>      
   1a478:	e3a00b01 	mov	r0, #1024	; 0x400                             <== NOT EXECUTED
   1a47c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a480:	ebffe0ea 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a484:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a488:	1a00000d 	bne	1a4c4 <rtems_rfs_buffer_setblksize+0xa4>      <== NOT EXECUTED
    printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);     
   1a48c:	e5943010 	ldr	r3, [r4, #16]                                 
   1a490:	e59f1070 	ldr	r1, [pc, #112]	; 1a508 <rtems_rfs_buffer_setblksize+0xe8>
   1a494:	e1a00003 	mov	r0, r3                                        
   1a498:	e1a0200d 	mov	r2, sp                                        
   1a49c:	e1a0e00f 	mov	lr, pc                                        
   1a4a0:	e593f038 	ldr	pc, [r3, #56]	; 0x38                          
  if (rc < 0)                                                         
   1a4a4:	e3500000 	cmp	r0, #0                                        
   1a4a8:	ba000013 	blt	1a4fc <rtems_rfs_buffer_setblksize+0xdc>      
    rc = errno;                                                       
#endif                                                                
  return rc;                                                          
}                                                                     
   1a4ac:	e28dd004 	add	sp, sp, #4                                    
   1a4b0:	e8bd8030 	pop	{r4, r5, pc}                                  
rtems_rfs_buffer_setblksize (rtems_rfs_file_system* fs, size_t size)  
{                                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))            
    printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size); 
   1a4b4:	e59d1000 	ldr	r1, [sp]                                      <== NOT EXECUTED
   1a4b8:	e59f004c 	ldr	r0, [pc, #76]	; 1a50c <rtems_rfs_buffer_setblksize+0xec><== NOT EXECUTED
   1a4bc:	eb0017f8 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a4c0:	eaffffdf 	b	1a444 <rtems_rfs_buffer_setblksize+0x24>        <== NOT EXECUTED
    printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_buffer_sync (fs);                                    
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
    printf ("rtems-rfs: buffer-setblksize: device sync failed: %d: %s\n",
   1a4c4:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a4c8:	eb001ca3 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a4cc:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a4d0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1a4d4:	e59f0034 	ldr	r0, [pc, #52]	; 1a510 <rtems_rfs_buffer_setblksize+0xf0><== NOT EXECUTED
   1a4d8:	eb0017f1 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a4dc:	eaffffea 	b	1a48c <rtems_rfs_buffer_setblksize+0x6c>        <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))            
    printf ("rtems-rfs: buffer-setblksize: block size: %zu\n", size); 
                                                                      
  rc = rtems_rfs_buffers_release (fs);                                
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SETBLKSIZE))
    printf ("rtems-rfs: buffer-setblksize: buffer release failed: %d: %s\n",
   1a4e0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a4e4:	eb001c9c 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a4e8:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1a4ec:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1a4f0:	e59f001c 	ldr	r0, [pc, #28]	; 1a514 <rtems_rfs_buffer_setblksize+0xf4><== NOT EXECUTED
   1a4f4:	eb0017ea 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a4f8:	eaffffda 	b	1a468 <rtems_rfs_buffer_setblksize+0x48>        <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rc = fs->disk->ioctl (fs->disk, RTEMS_BLKIO_SETBLKSIZE, &size);     
  if (rc < 0)                                                         
    rc = errno;                                                       
   1a4fc:	eb001424 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1a500:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   1a504:	eaffffe8 	b	1a4ac <rtems_rfs_buffer_setblksize+0x8c>        <== NOT EXECUTED
                                                                      

0001a318 <rtems_rfs_buffer_sync>: return rc; } int rtems_rfs_buffer_sync (rtems_rfs_file_system* fs) {
   1a318:	e92d4030 	push	{r4, r5, lr}                                 
  int result = 0;                                                     
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rtems_status_code sc;                                               
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
   1a31c:	e3a01000 	mov	r1, #0                                        
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffer_sync (rtems_rfs_file_system* fs)                     
{                                                                     
   1a320:	e1a04000 	mov	r4, r0                                        
  int result = 0;                                                     
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rtems_status_code sc;                                               
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
   1a324:	e3a00020 	mov	r0, #32                                       
   1a328:	ebffe140 	bl	12830 <rtems_rfs_trace>                        
   1a32c:	e3500000 	cmp	r0, #0                                        
   1a330:	1a000017 	bne	1a394 <rtems_rfs_buffer_sync+0x7c>            
                                                                      
  /*                                                                  
   * @todo Split in the separate files for each type.                 
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
   1a334:	e5940010 	ldr	r0, [r4, #16]                                 
   1a338:	ebffeaf7 	bl	14f1c <rtems_bdbuf_syncdev>                    
  if (sc != RTEMS_SUCCESSFUL)                                         
   1a33c:	e2505000 	subs	r5, r0, #0                                   
   1a340:	1a000003 	bne	1a354 <rtems_rfs_buffer_sync+0x3c>            
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                
      printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",     
              rtems_status_text (sc));                                
    result = EIO;                                                     
  }                                                                   
  rtems_disk_release (fs->disk);                                      
   1a344:	e5940010 	ldr	r0, [r4, #16]                                 
   1a348:	ebffa49e 	bl	35c8 <rtems_disk_release>                      
      printf ("rtems-rfs: buffer-sync: file sync failed: %d: %s\n",   
              result, strerror (result));                             
  }                                                                   
#endif                                                                
  return result;                                                      
}                                                                     
   1a34c:	e1a00005 	mov	r0, r5                                        
   1a350:	e8bd8030 	pop	{r4, r5, pc}                                  
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                
   1a354:	e3a00020 	mov	r0, #32                                       <== NOT EXECUTED
   1a358:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a35c:	ebffe133 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a360:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",     
              rtems_status_text (sc));                                
    result = EIO;                                                     
   1a364:	03a05005 	moveq	r5, #5                                      <== NOT EXECUTED
   */                                                                 
#if RTEMS_RFS_USE_LIBBLOCK                                            
  sc = rtems_bdbuf_syncdev (rtems_rfs_fs_device (fs));                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                
   1a368:	0afffff5 	beq	1a344 <rtems_rfs_buffer_sync+0x2c>            <== NOT EXECUTED
      printf ("rtems-rfs: buffer-sync: device sync failed: %s\n",     
   1a36c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a370:	ebffb325 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1a374:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1a378:	e59f0020 	ldr	r0, [pc, #32]	; 1a3a0 <rtems_rfs_buffer_sync+0x88><== NOT EXECUTED
   1a37c:	eb001848 	bl	204a4 <printf>                                 <== NOT EXECUTED
              rtems_status_text (sc));                                
    result = EIO;                                                     
   1a380:	e3a05005 	mov	r5, #5                                        <== NOT EXECUTED
  }                                                                   
  rtems_disk_release (fs->disk);                                      
   1a384:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
   1a388:	ebffa48e 	bl	35c8 <rtems_disk_release>                      <== NOT EXECUTED
      printf ("rtems-rfs: buffer-sync: file sync failed: %d: %s\n",   
              result, strerror (result));                             
  }                                                                   
#endif                                                                
  return result;                                                      
}                                                                     
   1a38c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1a390:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
#if RTEMS_RFS_USE_LIBBLOCK                                            
  rtems_status_code sc;                                               
#endif                                                                
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_SYNC))                  
    printf ("rtems-rfs: buffer-sync: syncing\n");                     
   1a394:	e59f0008 	ldr	r0, [pc, #8]	; 1a3a4 <rtems_rfs_buffer_sync+0x8c><== NOT EXECUTED
   1a398:	eb0018d9 	bl	20704 <puts>                                   <== NOT EXECUTED
   1a39c:	eaffffe4 	b	1a334 <rtems_rfs_buffer_sync+0x1c>              <== NOT EXECUTED
                                                                      

0001a3a8 <rtems_rfs_buffers_release>: return rrc; } int rtems_rfs_buffers_release (rtems_rfs_file_system* fs) {
   1a3a8:	e92d4030 	push	{r4, r5, lr}                                 
  int rrc = 0;                                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
   1a3ac:	e3a01000 	mov	r1, #0                                        
  return rrc;                                                         
}                                                                     
                                                                      
int                                                                   
rtems_rfs_buffers_release (rtems_rfs_file_system* fs)                 
{                                                                     
   1a3b0:	e1a04000 	mov	r4, r0                                        
  int rrc = 0;                                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
   1a3b4:	e3a00040 	mov	r0, #64	; 0x40                                
   1a3b8:	ebffe11c 	bl	12830 <rtems_rfs_trace>                        
   1a3bc:	e3500000 	cmp	r0, #0                                        
   1a3c0:	1a00000f 	bne	1a404 <rtems_rfs_buffers_release+0x5c>        
    printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "         
            "release:%" PRIu32 " release-modified:%" PRIu32 "\n",     
            fs->buffers_count, fs->release_count, fs->release_modified_count);
                                                                      
  rc = rtems_rfs_release_chain (&fs->release,                         
   1a3c4:	e2841060 	add	r1, r4, #96	; 0x60                            
   1a3c8:	e3a02000 	mov	r2, #0                                        
   1a3cc:	e2840054 	add	r0, r4, #84	; 0x54                            
   1a3d0:	ebfffde7 	bl	19b74 <rtems_rfs_release_chain>                
                                &fs->release_count,                   
                                false);                               
  if ((rc > 0) && (rrc == 0))                                         
    rrc = rc;                                                         
  rc = rtems_rfs_release_chain (&fs->release_modified,                
   1a3d4:	e2841070 	add	r1, r4, #112	; 0x70                           
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
    printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "         
            "release:%" PRIu32 " release-modified:%" PRIu32 "\n",     
            fs->buffers_count, fs->release_count, fs->release_modified_count);
                                                                      
  rc = rtems_rfs_release_chain (&fs->release,                         
   1a3d8:	e1c05fc0 	bic	r5, r0, r0, asr #31                           
                                &fs->release_count,                   
                                false);                               
  if ((rc > 0) && (rrc == 0))                                         
    rrc = rc;                                                         
  rc = rtems_rfs_release_chain (&fs->release_modified,                
   1a3dc:	e3a02001 	mov	r2, #1                                        
   1a3e0:	e2840064 	add	r0, r4, #100	; 0x64                           
   1a3e4:	ebfffde2 	bl	19b74 <rtems_rfs_release_chain>                
                                &fs->release_modified_count,          
                                true);                                
  if ((rc > 0) && (rrc == 0))                                         
   1a3e8:	e2753001 	rsbs	r3, r5, #1                                   
   1a3ec:	33a03000 	movcc	r3, #0                                      
   1a3f0:	e3500000 	cmp	r0, #0                                        
   1a3f4:	d3a03000 	movle	r3, #0                                      
    rrc = rc;                                                         
                                                                      
  return rrc;                                                         
}                                                                     
   1a3f8:	e3530000 	cmp	r3, #0                                        
   1a3fc:	01a00005 	moveq	r0, r5                                      
   1a400:	e8bd8030 	pop	{r4, r5, pc}                                  
{                                                                     
  int rrc = 0;                                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_RELEASE))               
    printf ("rtems-rfs: buffers-release: active:%" PRIu32 " "         
   1a404:	e5941050 	ldr	r1, [r4, #80]	; 0x50                          <== NOT EXECUTED
   1a408:	e5942060 	ldr	r2, [r4, #96]	; 0x60                          <== NOT EXECUTED
   1a40c:	e5943070 	ldr	r3, [r4, #112]	; 0x70                         <== NOT EXECUTED
   1a410:	e59f0004 	ldr	r0, [pc, #4]	; 1a41c <rtems_rfs_buffers_release+0x74><== NOT EXECUTED
   1a414:	eb001822 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a418:	eaffffe9 	b	1a3c4 <rtems_rfs_buffers_release+0x1c>          <== NOT EXECUTED
                                                                      

0001ab20 <rtems_rfs_dir_add_entry>: rtems_rfs_dir_add_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, const char* name, size_t length, rtems_rfs_ino ino) {
   1ab20:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1ab24:	e24dd074 	sub	sp, sp, #116	; 0x74                           
   1ab28:	e58d1004 	str	r1, [sp, #4]                                  
   1ab2c:	e1a05000 	mov	r5, r0                                        
  rtems_rfs_block_map     map;                                        
  rtems_rfs_block_pos     bpos;                                       
  rtems_rfs_buffer_handle buffer;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
   1ab30:	e3a01000 	mov	r1, #0                                        
   1ab34:	e3a00202 	mov	r0, #536870912	; 0x20000000                   
rtems_rfs_dir_add_entry (rtems_rfs_file_system*  fs,                  
                         rtems_rfs_inode_handle* dir,                 
                         const char*             name,                
                         size_t                  length,              
                         rtems_rfs_ino           ino)                 
{                                                                     
   1ab38:	e1a0b002 	mov	fp, r2                                        
   1ab3c:	e1a09003 	mov	r9, r3                                        
  rtems_rfs_block_map     map;                                        
  rtems_rfs_block_pos     bpos;                                       
  rtems_rfs_buffer_handle buffer;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
   1ab40:	ebffdf3a 	bl	12830 <rtems_rfs_trace>                        
   1ab44:	e3500000 	cmp	r0, #0                                        
   1ab48:	1a000076 	bne	1ad28 <rtems_rfs_dir_add_entry+0x208>         
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (", len=%zd\n", length);                                   
  }                                                                   
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
   1ab4c:	e1a00005 	mov	r0, r5                                        
   1ab50:	e59d1004 	ldr	r1, [sp, #4]                                  
   1ab54:	e28d2008 	add	r2, sp, #8                                    
   1ab58:	ebfff8f6 	bl	18f38 <rtems_rfs_block_map_open>               
  if (rc > 0)                                                         
   1ab5c:	e2504000 	subs	r4, r0, #0                                   
   1ab60:	da000002 	ble	1ab70 <rtems_rfs_dir_add_entry+0x50>          
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
   1ab64:	e1a00004 	mov	r0, r4                                        
   1ab68:	e28dd074 	add	sp, sp, #116	; 0x74                           
   1ab6c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1ab70:	e3a03000 	mov	r3, #0                                        
   1ab74:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        
  handle->bnum  = 0;                                                  
   1ab78:	e58d3068 	str	r3, [sp, #104]	; 0x68                         
  handle->buffer = NULL;                                              
   1ab7c:	e58d306c 	str	r3, [sp, #108]	; 0x6c                         
 * @param bpos A pointer to the block position.                       
 */                                                                   
static inline void                                                    
rtems_rfs_block_set_bpos_zero (rtems_rfs_block_pos* bpos)             
{                                                                     
  bpos->bno = 0;                                                      
   1ab80:	e58d3058 	str	r3, [sp, #88]	; 0x58                          
  bpos->boff = 0;                                                     
   1ab84:	e58d305c 	str	r3, [sp, #92]	; 0x5c                          
  bpos->block = 0;                                                    
   1ab88:	e58d3060 	str	r3, [sp, #96]	; 0x60                          
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1ab8c:	e59f63a4 	ldr	r6, [pc, #932]	; 1af38 <rtems_rfs_dir_add_entry+0x418>
    /*                                                                
     * Locate the first block. If an error the block will be 0. If the map is
     * empty which happens when creating a directory and adding the first entry
     * the seek will return ENXIO. In this case we need to grow the directory.
     */                                                               
    rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);          
   1ab90:	e1a00005 	mov	r0, r5                                        
   1ab94:	e28d1008 	add	r1, sp, #8                                    
   1ab98:	e28d2058 	add	r2, sp, #88	; 0x58                            
   1ab9c:	e28d3070 	add	r3, sp, #112	; 0x70                           
   1aba0:	ebfff9b1 	bl	1926c <rtems_rfs_block_map_find>               
    if (rc > 0)                                                       
   1aba4:	e3500000 	cmp	r0, #0                                        
   1aba8:	da0000a4 	ble	1ae40 <rtems_rfs_dir_add_entry+0x320>         
    {                                                                 
      if (rc != ENXIO)                                                
   1abac:	e3500006 	cmp	r0, #6                                        
   1abb0:	1a0000b6 	bne	1ae90 <rtems_rfs_dir_add_entry+0x370>         
      }                                                               
                                                                      
      /*                                                              
       * We have reached the end of the directory so add a block.     
       */                                                             
      rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);            
   1abb4:	e1a00005 	mov	r0, r5                                        
   1abb8:	e28d1008 	add	r1, sp, #8                                    
   1abbc:	e3a02001 	mov	r2, #1                                        
   1abc0:	e28d3070 	add	r3, sp, #112	; 0x70                           
   1abc4:	ebfffa2e 	bl	19484 <rtems_rfs_block_map_grow>               
      if (rc > 0)                                                     
   1abc8:	e3500000 	cmp	r0, #0                                        
   1abcc:	ca0000bf 	bgt	1aed0 <rtems_rfs_dir_add_entry+0x3b0>         
   1abd0:	e3a03000 	mov	r3, #0                                        
                  "block map grow failed for ino %" PRIu32 ": %d: %s\n",
                  rtems_rfs_inode_ino (dir), rc, strerror (rc));      
        break;                                                        
      }                                                               
                                                                      
      read = false;                                                   
   1abd4:	e1a07003 	mov	r7, r3                                        
    }                                                                 
                                                                      
    bpos.bno++;                                                       
   1abd8:	e59dc058 	ldr	ip, [sp, #88]	; 0x58                          
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
   1abdc:	e1a00005 	mov	r0, r5                                        
      }                                                               
                                                                      
      read = false;                                                   
    }                                                                 
                                                                      
    bpos.bno++;                                                       
   1abe0:	e28cc001 	add	ip, ip, #1                                    
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
   1abe4:	e28d1064 	add	r1, sp, #100	; 0x64                           
   1abe8:	e59d2070 	ldr	r2, [sp, #112]	; 0x70                         
      }                                                               
                                                                      
      read = false;                                                   
    }                                                                 
                                                                      
    bpos.bno++;                                                       
   1abec:	e58dc058 	str	ip, [sp, #88]	; 0x58                          
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
   1abf0:	ebfffcbb 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
    if (rc > 0)                                                       
   1abf4:	e3500000 	cmp	r0, #0                                        
   1abf8:	ca000093 	bgt	1ae4c <rtems_rfs_dir_add_entry+0x32c>         
                "block buffer req failed for ino %" PRIu32 ": %d: %s\n",
                rtems_rfs_inode_ino (dir), rc, strerror (rc));        
      break;                                                          
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
   1abfc:	e59d306c 	ldr	r3, [sp, #108]	; 0x6c                         
                                                                      
    if (!read)                                                        
   1ac00:	e3570000 	cmp	r7, #0                                        
                "block buffer req failed for ino %" PRIu32 ": %d: %s\n",
                rtems_rfs_inode_ino (dir), rc, strerror (rc));        
      break;                                                          
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
   1ac04:	e593701c 	ldr	r7, [r3, #28]                                 
                                                                      
    if (!read)                                                        
   1ac08:	0a000058 	beq	1ad70 <rtems_rfs_dir_add_entry+0x250>         
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
                                                                      
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1ac0c:	e5958008 	ldr	r8, [r5, #8]                                  
   1ac10:	e258e00a 	subs	lr, r8, #10                                  
   1ac14:	0affffdd 	beq	1ab90 <rtems_rfs_dir_add_entry+0x70>          
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1ac18:	e5d73009 	ldrb	r3, [r7, #9]                                 
   1ac1c:	e5d70008 	ldrb	r0, [r7, #8]                                 
   1ac20:	e1830400 	orr	r0, r3, r0, lsl #8                            
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1ac24:	e1500006 	cmp	r0, r6                                        
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1ac28:	e5d73000 	ldrb	r3, [r7]                                     
   1ac2c:	e5d71001 	ldrb	r1, [r7, #1]                                 
   1ac30:	e5d7c002 	ldrb	ip, [r7, #2]                                 
   1ac34:	e5d72003 	ldrb	r2, [r7, #3]                                 
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1ac38:	0a000051 	beq	1ad84 <rtems_rfs_dir_add_entry+0x264>         
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1ac3c:	e1a0c40c 	lsl	ip, ip, #8                                    
   1ac40:	e18cc801 	orr	ip, ip, r1, lsl #16                           
   1ac44:	e18cc002 	orr	ip, ip, r2                                    
   1ac48:	e18ccc03 	orr	ip, ip, r3, lsl #24                           
    entry  = rtems_rfs_buffer_data (&buffer);                         
                                                                      
    if (!read)                                                        
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
                                                                      
    offset = 0;                                                       
   1ac4c:	e3a04000 	mov	r4, #0                                        
   1ac50:	ea000017 	b	1acb4 <rtems_rfs_dir_add_entry+0x194>           
        }                                                             
                                                                      
        break;                                                        
      }                                                               
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1ac54:	e595301c 	ldr	r3, [r5, #28]                                 
   1ac58:	e35c0000 	cmp	ip, #0                                        
   1ac5c:	11500003 	cmpne	r0, r3                                      
   1ac60:	2a000016 	bcs	1acc0 <rtems_rfs_dir_add_entry+0x1a0>         
   1ac64:	e5953014 	ldr	r3, [r5, #20]                                 
   1ac68:	e153000c 	cmp	r3, ip                                        
   1ac6c:	3a000013 	bcc	1acc0 <rtems_rfs_dir_add_entry+0x1a0>         
        rtems_rfs_block_map_close (fs, &map);                         
        return EIO;                                                   
      }                                                               
                                                                      
      entry  += elength;                                              
      offset += elength;                                              
   1ac70:	e0844000 	add	r4, r4, r0                                    
    if (!read)                                                        
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
                                                                      
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1ac74:	e154000e 	cmp	r4, lr                                        
   1ac78:	e1a0a004 	mov	sl, r4                                        
   1ac7c:	2affffc3 	bcs	1ab90 <rtems_rfs_dir_add_entry+0x70>          
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1ac80:	e5d72001 	ldrb	r2, [r7, #1]                                 
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1ac84:	e5d7c008 	ldrb	ip, [r7, #8]                                 
   1ac88:	e5d70009 	ldrb	r0, [r7, #9]                                 
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1ac8c:	e5d71000 	ldrb	r1, [r7]                                     
   1ac90:	e1a02802 	lsl	r2, r2, #16                                   
   1ac94:	e5d73003 	ldrb	r3, [r7, #3]                                 
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1ac98:	e180040c 	orr	r0, r0, ip, lsl #8                            
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1ac9c:	e1822c01 	orr	r2, r2, r1, lsl #24                           
   1aca0:	e5d7c002 	ldrb	ip, [r7, #2]                                 
   1aca4:	e1822003 	orr	r2, r2, r3                                    
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1aca8:	e1500006 	cmp	r0, r6                                        
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1acac:	e182c40c 	orr	ip, r2, ip, lsl #8                            
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1acb0:	0a000034 	beq	1ad88 <rtems_rfs_dir_add_entry+0x268>         
        }                                                             
                                                                      
        break;                                                        
      }                                                               
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1acb4:	e350000a 	cmp	r0, #10                                       
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
        return EIO;                                                   
      }                                                               
                                                                      
      entry  += elength;                                              
   1acb8:	e0877000 	add	r7, r7, r0                                    
        }                                                             
                                                                      
        break;                                                        
      }                                                               
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1acbc:	caffffe4 	bgt	1ac54 <rtems_rfs_dir_add_entry+0x134>         
   1acc0:	e1a0a000 	mov	sl, r0                                        <== NOT EXECUTED
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
   1acc4:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1acc8:	e3a00202 	mov	r0, #536870912	; 0x20000000                   <== NOT EXECUTED
   1accc:	e1a0800c 	mov	r8, ip                                        <== NOT EXECUTED
   1acd0:	ebffded6 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1acd4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1acd8:	0a000006 	beq	1acf8 <rtems_rfs_dir_add_entry+0x1d8>         <== NOT EXECUTED
          printf ("rtems-rfs: dir-add-entry: "                        
   1acdc:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
   1ace0:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
   1ace4:	e5901008 	ldr	r1, [r0, #8]                                  <== NOT EXECUTED
   1ace8:	e1a03008 	mov	r3, r8                                        <== NOT EXECUTED
   1acec:	e59f0248 	ldr	r0, [pc, #584]	; 1af3c <rtems_rfs_dir_add_entry+0x41c><== NOT EXECUTED
   1acf0:	e58d4000 	str	r4, [sp]                                      <== NOT EXECUTED
   1acf4:	eb0015ea 	bl	204a4 <printf>                                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1acf8:	e28d1064 	add	r1, sp, #100	; 0x64                           <== NOT EXECUTED
   1acfc:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1ad00:	ebfffbfe 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1ad04:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
                  rtems_rfs_inode_ino (dir), elength, eino, offset);  
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
   1ad08:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1ad0c:	e28d1008 	add	r1, sp, #8                                    <== NOT EXECUTED
   1ad10:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1ad14:	e58d3068 	str	r3, [sp, #104]	; 0x68                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1ad18:	e58d306c 	str	r3, [sp, #108]	; 0x6c                         <== NOT EXECUTED
        return EIO;                                                   
   1ad1c:	e3a04005 	mov	r4, #5                                        <== NOT EXECUTED
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
          printf ("rtems-rfs: dir-add-entry: "                        
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04x\n",
                  rtems_rfs_inode_ino (dir), elength, eino, offset);  
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
   1ad20:	ebfff8de 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
        return EIO;                                                   
   1ad24:	eaffff8e 	b	1ab64 <rtems_rfs_dir_add_entry+0x44>            <== NOT EXECUTED
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",       
   1ad28:	e59d2004 	ldr	r2, [sp, #4]                                  <== NOT EXECUTED
   1ad2c:	e59f020c 	ldr	r0, [pc, #524]	; 1af40 <rtems_rfs_dir_add_entry+0x420><== NOT EXECUTED
   1ad30:	e5921008 	ldr	r1, [r2, #8]                                  <== NOT EXECUTED
   1ad34:	eb0015da 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_inode_ino (dir));                               
    for (c = 0; c < length; c++)                                      
   1ad38:	e3590000 	cmp	r9, #0                                        <== NOT EXECUTED
   1ad3c:	0a000007 	beq	1ad60 <rtems_rfs_dir_add_entry+0x240>         <== NOT EXECUTED
   1ad40:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   1ad44:	e1a04003 	mov	r4, r3                                        <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1ad48:	e7db0003 	ldrb	r0, [fp, r3]                                 <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",       
            rtems_rfs_inode_ino (dir));                               
    for (c = 0; c < length; c++)                                      
   1ad4c:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1ad50:	eb00163d 	bl	2064c <putchar>                                <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))                
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-add-entry: dir=%" PRId32 ", name=",       
            rtems_rfs_inode_ino (dir));                               
    for (c = 0; c < length; c++)                                      
   1ad54:	e1540009 	cmp	r4, r9                                        <== NOT EXECUTED
   1ad58:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   1ad5c:	1afffff9 	bne	1ad48 <rtems_rfs_dir_add_entry+0x228>         <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (", len=%zd\n", length);                                   
   1ad60:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   1ad64:	e59f01d8 	ldr	r0, [pc, #472]	; 1af44 <rtems_rfs_dir_add_entry+0x424><== NOT EXECUTED
   1ad68:	eb0015cd 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1ad6c:	eaffff76 	b	1ab4c <rtems_rfs_dir_add_entry+0x2c>            <== NOT EXECUTED
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
                                                                      
    if (!read)                                                        
      memset (entry, 0xff, rtems_rfs_fs_block_size (fs));             
   1ad70:	e1a00007 	mov	r0, r7                                        
   1ad74:	e3a010ff 	mov	r1, #255	; 0xff                               
   1ad78:	e5952008 	ldr	r2, [r5, #8]                                  
   1ad7c:	eb001557 	bl	202e0 <memset>                                 
   1ad80:	eaffffa1 	b	1ac0c <rtems_rfs_dir_add_entry+0xec>            
                                                                      
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1ad84:	e3a0a000 	mov	sl, #0                                        
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
   1ad88:	e289300a 	add	r3, r9, #10                                   
            (rtems_rfs_fs_block_size (fs) - offset))                  
   1ad8c:	e06a8008 	rsb	r8, sl, r8                                    
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
      {                                                               
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
   1ad90:	e1530008 	cmp	r3, r8                                        
   1ad94:	2affff7d 	bcs	1ab90 <rtems_rfs_dir_add_entry+0x70>          
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
   1ad98:	e1a01009 	mov	r1, r9                                        
   1ad9c:	e1a0000b 	mov	r0, fp                                        
   1ada0:	e58d3004 	str	r3, [sp, #4]                                  
   1ada4:	eb00115e 	bl	1f324 <rtems_rfs_dir_hash>                     
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
   1ada8:	e59d3098 	ldr	r3, [sp, #152]	; 0x98                         
          rtems_rfs_dir_set_entry_length (entry,                      
   1adac:	e59d2004 	ldr	r2, [sp, #4]                                  
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
   1adb0:	e1a0e823 	lsr	lr, r3, #16                                   
   1adb4:	e1a0c423 	lsr	ip, r3, #8                                    
   1adb8:	e1a04c23 	lsr	r4, r3, #24                                   
          rtems_rfs_dir_set_entry_length (entry,                      
   1adbc:	e1a03422 	lsr	r3, r2, #8                                    
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
   1adc0:	e1a0ac20 	lsr	sl, r0, #24                                   
   1adc4:	e1a08820 	lsr	r8, r0, #16                                   
   1adc8:	e1a06420 	lsr	r6, r0, #8                                    
   1adcc:	e5c70007 	strb	r0, [r7, #7]                                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
          rtems_rfs_dir_set_entry_length (entry,                      
   1add0:	e5c73008 	strb	r3, [r7, #8]                                 
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
   1add4:	e59d0098 	ldr	r0, [sp, #152]	; 0x98                         
          rtems_rfs_dir_set_entry_length (entry,                      
   1add8:	e59d3004 	ldr	r3, [sp, #4]                                  
                                          RTEMS_RFS_DIR_ENTRY_SIZE + length);
          memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);    
   1addc:	e1a02009 	mov	r2, r9                                        
   1ade0:	e1a0100b 	mov	r1, fp                                        
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
   1ade4:	e5c74000 	strb	r4, [r7]                                     
   1ade8:	e5c7e001 	strb	lr, [r7, #1]                                 
   1adec:	e5c7c002 	strb	ip, [r7, #2]                                 
   1adf0:	e5c70003 	strb	r0, [r7, #3]                                 
          rtems_rfs_dir_set_entry_length (entry,                      
   1adf4:	e5c73009 	strb	r3, [r7, #9]                                 
        if ((length + RTEMS_RFS_DIR_ENTRY_SIZE) <                     
            (rtems_rfs_fs_block_size (fs) - offset))                  
        {                                                             
          uint32_t hash;                                              
          hash = rtems_rfs_dir_hash (name, length);                   
          rtems_rfs_dir_set_entry_hash (entry, hash);                 
   1adf8:	e5c7a004 	strb	sl, [r7, #4]                                 
   1adfc:	e5c78005 	strb	r8, [r7, #5]                                 
   1ae00:	e5c76006 	strb	r6, [r7, #6]                                 
          rtems_rfs_dir_set_entry_ino (entry, ino);                   
          rtems_rfs_dir_set_entry_length (entry,                      
                                          RTEMS_RFS_DIR_ENTRY_SIZE + length);
          memcpy (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length);    
   1ae04:	e287000a 	add	r0, r7, #10                                   
   1ae08:	eb0014b1 	bl	200d4 <memcpy>                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1ae0c:	e28d1064 	add	r1, sp, #100	; 0x64                           
          rtems_rfs_buffer_mark_dirty (&buffer);                      
   1ae10:	e3a03001 	mov	r3, #1                                        
   1ae14:	e1a00005 	mov	r0, r5                                        
  handle->dirty = false;                                              
   1ae18:	e3a04000 	mov	r4, #0                                        
   1ae1c:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1ae20:	ebfffbb6 	bl	19d00 <rtems_rfs_buffer_handle_release>        
          rtems_rfs_buffer_handle_close (fs, &buffer);                
          rtems_rfs_block_map_close (fs, &map);                       
   1ae24:	e1a00005 	mov	r0, r5                                        
   1ae28:	e28d1008 	add	r1, sp, #8                                    
  handle->dirty = false;                                              
   1ae2c:	e5cd4064 	strb	r4, [sp, #100]	; 0x64                        
  handle->bnum  = 0;                                                  
   1ae30:	e58d4068 	str	r4, [sp, #104]	; 0x68                         
  handle->buffer = NULL;                                              
   1ae34:	e58d406c 	str	r4, [sp, #108]	; 0x6c                         
   1ae38:	ebfff898 	bl	190a0 <rtems_rfs_block_map_close>              
          return 0;                                                   
   1ae3c:	eaffff48 	b	1ab64 <rtems_rfs_dir_add_entry+0x44>            
     * Locate the first block. If an error the block will be 0. If the map is
     * empty which happens when creating a directory and adding the first entry
     * the seek will return ENXIO. In this case we need to grow the directory.
     */                                                               
    rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);          
    if (rc > 0)                                                       
   1ae40:	e3a03001 	mov	r3, #1                                        
  while (true)                                                        
  {                                                                   
    rtems_rfs_block_no block;                                         
    uint8_t*           entry;                                         
    int                offset;                                        
    bool               read = true;                                   
   1ae44:	e1a07003 	mov	r7, r3                                        
   1ae48:	eaffff62 	b	1abd8 <rtems_rfs_dir_add_entry+0xb8>            
   1ae4c:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    bpos.bno++;                                                       
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))            
   1ae50:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ae54:	e3a00202 	mov	r0, #536870912	; 0x20000000                   <== NOT EXECUTED
   1ae58:	ebffde74 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1ae5c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1ae60:	1a00002a 	bne	1af10 <rtems_rfs_dir_add_entry+0x3f0>         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1ae64:	e28d1064 	add	r1, sp, #100	; 0x64                           <== NOT EXECUTED
   1ae68:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1ae6c:	ebfffba3 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1ae70:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
      offset += elength;                                              
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
   1ae74:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1ae78:	e28d1008 	add	r1, sp, #8                                    <== NOT EXECUTED
   1ae7c:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1ae80:	e58d3068 	str	r3, [sp, #104]	; 0x68                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1ae84:	e58d306c 	str	r3, [sp, #108]	; 0x6c                         <== NOT EXECUTED
   1ae88:	ebfff884 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
  return rc;                                                          
   1ae8c:	eaffff34 	b	1ab64 <rtems_rfs_dir_add_entry+0x44>            <== NOT EXECUTED
   1ae90:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    rc = rtems_rfs_block_map_find (fs, &map, &bpos, &block);          
    if (rc > 0)                                                       
    {                                                                 
      if (rc != ENXIO)                                                
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
   1ae94:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ae98:	e3a00202 	mov	r0, #536870912	; 0x20000000                   <== NOT EXECUTED
   1ae9c:	ebffde63 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1aea0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1aea4:	0affffee 	beq	1ae64 <rtems_rfs_dir_add_entry+0x344>         <== NOT EXECUTED
          printf ("rtems-rfs: dir-add-entry: "                        
   1aea8:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
   1aeac:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1aeb0:	e5936008 	ldr	r6, [r3, #8]                                  <== NOT EXECUTED
   1aeb4:	eb001a28 	bl	2175c <strerror>                               <== NOT EXECUTED
   1aeb8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1aebc:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1aec0:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   1aec4:	e59f007c 	ldr	r0, [pc, #124]	; 1af48 <rtems_rfs_dir_add_entry+0x428><== NOT EXECUTED
   1aec8:	eb001575 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1aecc:	eaffffe4 	b	1ae64 <rtems_rfs_dir_add_entry+0x344>           <== NOT EXECUTED
   1aed0:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
       * We have reached the end of the directory so add a block.     
       */                                                             
      rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);            
      if (rc > 0)                                                     
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))          
   1aed4:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1aed8:	e3a00202 	mov	r0, #536870912	; 0x20000000                   <== NOT EXECUTED
   1aedc:	ebffde53 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1aee0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1aee4:	0affffde 	beq	1ae64 <rtems_rfs_dir_add_entry+0x344>         <== NOT EXECUTED
          printf ("rtems-rfs: dir-add-entry: "                        
   1aee8:	e59d0004 	ldr	r0, [sp, #4]                                  <== NOT EXECUTED
   1aeec:	e5906008 	ldr	r6, [r0, #8]                                  <== NOT EXECUTED
   1aef0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1aef4:	eb001a18 	bl	2175c <strerror>                               <== NOT EXECUTED
   1aef8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1aefc:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1af00:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   1af04:	e59f0040 	ldr	r0, [pc, #64]	; 1af4c <rtems_rfs_dir_add_entry+0x42c><== NOT EXECUTED
   1af08:	eb001565 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1af0c:	eaffffd4 	b	1ae64 <rtems_rfs_dir_add_entry+0x344>           <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, read);  
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_ADD_ENTRY))            
        printf ("rtems-rfs: dir-add-entry: "                          
   1af10:	e59d2004 	ldr	r2, [sp, #4]                                  <== NOT EXECUTED
   1af14:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1af18:	e5926008 	ldr	r6, [r2, #8]                                  <== NOT EXECUTED
   1af1c:	eb001a0e 	bl	2175c <strerror>                               <== NOT EXECUTED
   1af20:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1af24:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1af28:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   1af2c:	e59f001c 	ldr	r0, [pc, #28]	; 1af50 <rtems_rfs_dir_add_entry+0x430><== NOT EXECUTED
   1af30:	eb00155b 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1af34:	eaffffca 	b	1ae64 <rtems_rfs_dir_add_entry+0x344>           <== NOT EXECUTED
                                                                      

0001af54 <rtems_rfs_dir_del_entry>: int rtems_rfs_dir_del_entry (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, rtems_rfs_ino ino, uint32_t offset) {
   1af54:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1af58:	e24dd074 	sub	sp, sp, #116	; 0x74                           
   1af5c:	e58d100c 	str	r1, [sp, #12]                                 
   1af60:	e1a04000 	mov	r4, r0                                        
  rtems_rfs_block_no      block;                                      
  rtems_rfs_buffer_handle buffer;                                     
  bool                    search;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))                
   1af64:	e3a01000 	mov	r1, #0                                        
   1af68:	e3a00101 	mov	r0, #1073741824	; 0x40000000                  
int                                                                   
rtems_rfs_dir_del_entry (rtems_rfs_file_system*  fs,                  
                         rtems_rfs_inode_handle* dir,                 
                         rtems_rfs_ino           ino,                 
                         uint32_t                offset)              
{                                                                     
   1af6c:	e1a09002 	mov	r9, r2                                        
   1af70:	e58d3010 	str	r3, [sp, #16]                                 
  rtems_rfs_block_no      block;                                      
  rtems_rfs_buffer_handle buffer;                                     
  bool                    search;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))                
   1af74:	ebffde2d 	bl	12830 <rtems_rfs_trace>                        
   1af78:	e3500000 	cmp	r0, #0                                        
   1af7c:	1a000008 	bne	1afa4 <rtems_rfs_dir_del_entry+0x50>          
    printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
            rtems_rfs_inode_ino (dir), ino, offset);                  
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
   1af80:	e1a00004 	mov	r0, r4                                        
   1af84:	e59d100c 	ldr	r1, [sp, #12]                                 
   1af88:	e28d2014 	add	r2, sp, #20                                   
   1af8c:	ebfff7e9 	bl	18f38 <rtems_rfs_block_map_open>               
  if (rc > 0)                                                         
   1af90:	e2506000 	subs	r6, r0, #0                                   
   1af94:	da00000e 	ble	1afd4 <rtems_rfs_dir_del_entry+0x80>          
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
   1af98:	e1a00006 	mov	r0, r6                                        
   1af9c:	e28dd074 	add	sp, sp, #116	; 0x74                           
   1afa0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  rtems_rfs_buffer_handle buffer;                                     
  bool                    search;                                     
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))                
    printf ("rtems-rfs: dir-del-entry: dir=%" PRId32 ", entry=%" PRId32 " offset=%" PRIu32 "\n",
   1afa4:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1afa8:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
   1afac:	e59c1008 	ldr	r1, [ip, #8]                                  <== NOT EXECUTED
   1afb0:	e59d3010 	ldr	r3, [sp, #16]                                 <== NOT EXECUTED
   1afb4:	e59f03dc 	ldr	r0, [pc, #988]	; 1b398 <rtems_rfs_dir_del_entry+0x444><== NOT EXECUTED
   1afb8:	eb001539 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_inode_ino (dir), ino, offset);                  
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
   1afbc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1afc0:	e59d100c 	ldr	r1, [sp, #12]                                 <== NOT EXECUTED
   1afc4:	e28d2014 	add	r2, sp, #20                                   <== NOT EXECUTED
   1afc8:	ebfff7da 	bl	18f38 <rtems_rfs_block_map_open>               <== NOT EXECUTED
  if (rc > 0)                                                         
   1afcc:	e2506000 	subs	r6, r0, #0                                   <== NOT EXECUTED
   1afd0:	cafffff0 	bgt	1af98 <rtems_rfs_dir_del_entry+0x44>          <== NOT EXECUTED
    return rc;                                                        
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
   1afd4:	e3a05000 	mov	r5, #0                                        
   1afd8:	e28dc070 	add	ip, sp, #112	; 0x70                           
   1afdc:	e1a00004 	mov	r0, r4                                        
   1afe0:	e28d1014 	add	r1, sp, #20                                   
   1afe4:	e59d2010 	ldr	r2, [sp, #16]                                 
   1afe8:	e1a03005 	mov	r3, r5                                        
   1afec:	e58dc000 	str	ip, [sp]                                      
   1aff0:	ebfff8f7 	bl	193d4 <rtems_rfs_block_map_seek>               
  if (rc > 0)                                                         
   1aff4:	e2506000 	subs	r6, r0, #0                                   
   1aff8:	da000005 	ble	1b014 <rtems_rfs_dir_del_entry+0xc0>          
  {                                                                   
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
   1affc:	e3560006 	cmp	r6, #6                                        <== NOT EXECUTED
    rtems_rfs_block_map_close (fs, &map);                             
   1b000:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1b004:	e28d1014 	add	r1, sp, #20                                   <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
  if (rc > 0)                                                         
  {                                                                   
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
   1b008:	03a06002 	moveq	r6, #2                                      <== NOT EXECUTED
    rtems_rfs_block_map_close (fs, &map);                             
   1b00c:	ebfff823 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
    return rc;                                                        
   1b010:	eaffffe0 	b	1af98 <rtems_rfs_dir_del_entry+0x44>            <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Only search if the offset is 0 else we are at that position.     
   */                                                                 
  search = offset ? false : true;                                     
   1b014:	e59d3010 	ldr	r3, [sp, #16]                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1b018:	e5cd5064 	strb	r5, [sp, #100]	; 0x64                        
   1b01c:	e273b001 	rsbs	fp, r3, #1                                   
  handle->bnum  = 0;                                                  
   1b020:	e58d5068 	str	r5, [sp, #104]	; 0x68                         
  handle->buffer = NULL;                                              
   1b024:	e58d506c 	str	r5, [sp, #108]	; 0x6c                         
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b028:	e59fc36c 	ldr	ip, [pc, #876]	; 1b39c <rtems_rfs_dir_del_entry+0x448>
  }                                                                   
                                                                      
  /*                                                                  
   * Only search if the offset is 0 else we are at that position.     
   */                                                                 
  search = offset ? false : true;                                     
   1b02c:	33a0b000 	movcc	fp, #0                                      
  while (rc == 0)                                                     
  {                                                                   
    uint8_t* entry;                                                   
    int      eoffset;                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
   1b030:	e1a00004 	mov	r0, r4                                        
   1b034:	e28d1064 	add	r1, sp, #100	; 0x64                           
   1b038:	e59d2070 	ldr	r2, [sp, #112]	; 0x70                         
   1b03c:	e3a03001 	mov	r3, #1                                        
   1b040:	e58dc008 	str	ip, [sp, #8]                                  
   1b044:	ebfffba6 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
    if (rc > 0)                                                       
   1b048:	e2506000 	subs	r6, r0, #0                                   
   1b04c:	e59dc008 	ldr	ip, [sp, #8]                                  
   1b050:	ca0000c1 	bgt	1b35c <rtems_rfs_dir_del_entry+0x408>         
                                                                      
    /*                                                                
     * If we are searching start at the beginning of the block. If not searching
     * skip to the offset in the block.                               
     */                                                               
    if (search)                                                       
   1b054:	e35b0000 	cmp	fp, #0                                        
   1b058:	0a000047 	beq	1b17c <rtems_rfs_dir_del_entry+0x228>         
   1b05c:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   1b060:	e5947008 	ldr	r7, [r4, #8]                                  <== NOT EXECUTED
      eoffset = 0;                                                    
   1b064:	e1a00002 	mov	r0, r2                                        <== NOT EXECUTED
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b068:	e247a00a 	sub	sl, r7, #10                                   
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
   1b06c:	e59d306c 	ldr	r3, [sp, #108]	; 0x6c                         
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b070:	e152000a 	cmp	r2, sl                                        
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
   1b074:	e593101c 	ldr	r1, [r3, #28]                                 
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b078:	2a000047 	bcs	1b19c <rtems_rfs_dir_del_entry+0x248>         
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
   1b07c:	e0813002 	add	r3, r1, r2                                    
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1b080:	e5d3e009 	ldrb	lr, [r3, #9]                                 
   1b084:	e5d38008 	ldrb	r8, [r3, #8]                                 
   1b088:	e18e8408 	orr	r8, lr, r8, lsl #8                            
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b08c:	e158000c 	cmp	r8, ip                                        
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b090:	e7d12002 	ldrb	r2, [r1, r2]                                 
   1b094:	e5d35001 	ldrb	r5, [r3, #1]                                 
   1b098:	e5d3e002 	ldrb	lr, [r3, #2]                                 
   1b09c:	e5d31003 	ldrb	r1, [r3, #3]                                 
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b0a0:	0a00003d 	beq	1b19c <rtems_rfs_dir_del_entry+0x248>         
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b0a4:	e1a05805 	lsl	r5, r5, #16                                   
   1b0a8:	e185540e 	orr	r5, r5, lr, lsl #8                            
   1b0ac:	e1855001 	orr	r5, r5, r1                                    
   1b0b0:	e1855c02 	orr	r5, r5, r2, lsl #24                           
   1b0b4:	ea00001b 	b	1b128 <rtems_rfs_dir_del_entry+0x1d4>           
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1b0b8:	e594201c 	ldr	r2, [r4, #28]                                 
   1b0bc:	e3550000 	cmp	r5, #0                                        
   1b0c0:	11580002 	cmpne	r8, r2                                      
   1b0c4:	2a000019 	bcs	1b130 <rtems_rfs_dir_del_entry+0x1dc>         
   1b0c8:	e5942014 	ldr	r2, [r4, #20]                                 
   1b0cc:	e1520005 	cmp	r2, r5                                        
   1b0d0:	3a000016 	bcc	1b130 <rtems_rfs_dir_del_entry+0x1dc>         
                  rtems_rfs_inode_ino (dir), elength, eino, block, eoffset);
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      if (ino == rtems_rfs_dir_entry_ino (entry))                     
   1b0d4:	e1590005 	cmp	r9, r5                                        
   1b0d8:	0a000047 	beq	1b1fc <rtems_rfs_dir_del_entry+0x2a8>         
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
        return 0;                                                     
      }                                                               
                                                                      
      if (!search)                                                    
   1b0dc:	e35b0000 	cmp	fp, #0                                        <== NOT EXECUTED
      {                                                               
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      entry   += elength;                                             
   1b0e0:	e0833008 	add	r3, r3, r8                                    <== NOT EXECUTED
      eoffset += elength;                                             
   1b0e4:	e0800008 	add	r0, r0, r8                                    <== NOT EXECUTED
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
        return 0;                                                     
      }                                                               
                                                                      
      if (!search)                                                    
   1b0e8:	0a000017 	beq	1b14c <rtems_rfs_dir_del_entry+0x1f8>         <== NOT EXECUTED
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
                                                                      
    entry = rtems_rfs_buffer_data (&buffer) + eoffset;                
                                                                      
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b0ec:	e150000a 	cmp	r0, sl                                        <== NOT EXECUTED
   1b0f0:	2a000029 	bcs	1b19c <rtems_rfs_dir_del_entry+0x248>         <== NOT EXECUTED
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b0f4:	e5d31001 	ldrb	r1, [r3, #1]                                 <== NOT EXECUTED
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1b0f8:	e5d35009 	ldrb	r5, [r3, #9]                                 <== NOT EXECUTED
   1b0fc:	e5d38008 	ldrb	r8, [r3, #8]                                 <== NOT EXECUTED
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b100:	e5d3e000 	ldrb	lr, [r3]                                     <== NOT EXECUTED
   1b104:	e1a01801 	lsl	r1, r1, #16                                   <== NOT EXECUTED
   1b108:	e5d32003 	ldrb	r2, [r3, #3]                                 <== NOT EXECUTED
    while (eoffset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1b10c:	e1858408 	orr	r8, r5, r8, lsl #8                            <== NOT EXECUTED
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b110:	e1811c0e 	orr	r1, r1, lr, lsl #24                           <== NOT EXECUTED
   1b114:	e5d35002 	ldrb	r5, [r3, #2]                                 <== NOT EXECUTED
   1b118:	e1811002 	orr	r1, r1, r2                                    <== NOT EXECUTED
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b11c:	e158000c 	cmp	r8, ip                                        <== NOT EXECUTED
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b120:	e1815405 	orr	r5, r1, r5, lsl #8                            <== NOT EXECUTED
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b124:	0a00001c 	beq	1b19c <rtems_rfs_dir_del_entry+0x248>         <== NOT EXECUTED
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1b128:	e358000a 	cmp	r8, #10                                       
   1b12c:	caffffe1 	bgt	1b0b8 <rtems_rfs_dir_del_entry+0x164>         
   1b130:	e1a0a005 	mov	sl, r5                                        <== NOT EXECUTED
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
   1b134:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1b138:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
   1b13c:	e3a00101 	mov	r0, #1073741824	; 0x40000000                  <== NOT EXECUTED
   1b140:	ebffddba 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1b144:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1b148:	1a000021 	bne	1b1d4 <rtems_rfs_dir_del_entry+0x280>         <== NOT EXECUTED
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
      if (rc == ENXIO)                                                
        rc = ENOENT;                                                  
   1b14c:	e3a06005 	mov	r6, #5                                        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1b150:	e28d1064 	add	r1, sp, #100	; 0x64                           <== NOT EXECUTED
   1b154:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1b158:	ebfffae8 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1b15c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
   1b160:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1b164:	e28d1014 	add	r1, sp, #20                                   <== NOT EXECUTED
   1b168:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1b16c:	e58d3068 	str	r3, [sp, #104]	; 0x68                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1b170:	e58d306c 	str	r3, [sp, #108]	; 0x6c                         <== NOT EXECUTED
   1b174:	ebfff7c9 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
  return rc;                                                          
   1b178:	eaffff86 	b	1af98 <rtems_rfs_dir_del_entry+0x44>            <== NOT EXECUTED
     * skip to the offset in the block.                               
     */                                                               
    if (search)                                                       
      eoffset = 0;                                                    
    else                                                              
      eoffset = offset % rtems_rfs_fs_block_size (fs);                
   1b17c:	e5947008 	ldr	r7, [r4, #8]                                  
   1b180:	e59d0010 	ldr	r0, [sp, #16]                                 
   1b184:	e1a01007 	mov	r1, r7                                        
   1b188:	e58dc008 	str	ip, [sp, #8]                                  
   1b18c:	eb004799 	bl	2cff8 <__umodsi3>                              
   1b190:	e59dc008 	ldr	ip, [sp, #8]                                  
   1b194:	e1a02000 	mov	r2, r0                                        
   1b198:	eaffffb2 	b	1b068 <rtems_rfs_dir_del_entry+0x114>           
                                                                      
      entry   += elength;                                             
      eoffset += elength;                                             
    }                                                                 
                                                                      
    if (rc == 0)                                                      
   1b19c:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
   1b1a0:	1affffea 	bne	1b150 <rtems_rfs_dir_del_entry+0x1fc>         <== NOT EXECUTED
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
   1b1a4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1b1a8:	e28d1014 	add	r1, sp, #20                                   <== NOT EXECUTED
   1b1ac:	e28d2070 	add	r2, sp, #112	; 0x70                           <== NOT EXECUTED
   1b1b0:	e58dc008 	str	ip, [sp, #8]                                  <== NOT EXECUTED
   1b1b4:	ebfff8a5 	bl	19450 <rtems_rfs_block_map_next_block>         <== NOT EXECUTED
      if (rc == ENXIO)                                                
   1b1b8:	e3500006 	cmp	r0, #6                                        <== NOT EXECUTED
      eoffset += elength;                                             
    }                                                                 
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
   1b1bc:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
      if (rc == ENXIO)                                                
   1b1c0:	e59dc008 	ldr	ip, [sp, #8]                                  <== NOT EXECUTED
   1b1c4:	0a000062 	beq	1b354 <rtems_rfs_dir_del_entry+0x400>         <== NOT EXECUTED
  /*                                                                  
   * Only search if the offset is 0 else we are at that position.     
   */                                                                 
  search = offset ? false : true;                                     
                                                                      
  while (rc == 0)                                                     
   1b1c8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1b1cc:	0affff97 	beq	1b030 <rtems_rfs_dir_del_entry+0xdc>          <== NOT EXECUTED
   1b1d0:	eaffffde 	b	1b150 <rtems_rfs_dir_del_entry+0x1fc>           <== NOT EXECUTED
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
   1b1d4:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1b1d8:	e59c1008 	ldr	r1, [ip, #8]                                  <== NOT EXECUTED
   1b1dc:	e59dc070 	ldr	ip, [sp, #112]	; 0x70                         <== NOT EXECUTED
   1b1e0:	e1a02008 	mov	r2, r8                                        <== NOT EXECUTED
   1b1e4:	e1a0300a 	mov	r3, sl                                        <== NOT EXECUTED
   1b1e8:	e59f01b0 	ldr	r0, [pc, #432]	; 1b3a0 <rtems_rfs_dir_del_entry+0x44c><== NOT EXECUTED
   1b1ec:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   1b1f0:	e58d5004 	str	r5, [sp, #4]                                  <== NOT EXECUTED
   1b1f4:	eb0014aa 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1b1f8:	eaffffd3 	b	1b14c <rtems_rfs_dir_del_entry+0x1f8>           <== NOT EXECUTED
   1b1fc:	e1a02007 	mov	r2, r7                                        
      }                                                               
                                                                      
      if (ino == rtems_rfs_dir_entry_ino (entry))                     
      {                                                               
        uint32_t remaining;                                           
        remaining = rtems_rfs_fs_block_size (fs) - (eoffset + elength);
   1b200:	e0886000 	add	r6, r8, r0                                    
   1b204:	e0666002 	rsb	r6, r6, r2                                    
   1b208:	e1a07003 	mov	r7, r3                                        
        memmove (entry, entry + elength, remaining);                  
   1b20c:	e0831008 	add	r1, r3, r8                                    
   1b210:	e1a02006 	mov	r2, r6                                        
   1b214:	e1a05000 	mov	r5, r0                                        
   1b218:	e1a00003 	mov	r0, r3                                        
   1b21c:	eb0013e2 	bl	201ac <memmove>                                
        memset (entry + remaining, 0xff, elength);                    
   1b220:	e3a010ff 	mov	r1, #255	; 0xff                               
   1b224:	e1a02008 	mov	r2, r8                                        
   1b228:	e0870006 	add	r0, r7, r6                                    
   1b22c:	eb00142b 	bl	202e0 <memset>                                 
         * block and it is the last block in the map shrink the map.  
         *                                                            
         * @note We could check again to see if the new end block in the map is
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
   1b230:	e5d76008 	ldrb	r6, [r7, #8]                                 
   1b234:	e5d73009 	ldrb	r3, [r7, #9]                                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
   1b238:	e3a00101 	mov	r0, #1073741824	; 0x40000000                  
   1b23c:	e3a01000 	mov	r1, #0                                        
         * block and it is the last block in the map shrink the map.  
         *                                                            
         * @note We could check again to see if the new end block in the map is
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
   1b240:	e1836406 	orr	r6, r3, r6, lsl #8                            
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
   1b244:	ebffdd79 	bl	12830 <rtems_rfs_trace>                        
   1b248:	e3500000 	cmp	r0, #0                                        
   1b24c:	0a000011 	beq	1b298 <rtems_rfs_dir_del_entry+0x344>         
          printf ("rtems-rfs: dir-del-entry: "                        
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
   1b250:	e59d2024 	ldr	r2, [sp, #36]	; 0x24                          <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
   1b254:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
   1b258:	e59d101c 	ldr	r1, [sp, #28]                                 <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
   1b25c:	e59d3070 	ldr	r3, [sp, #112]	; 0x70                         <== NOT EXECUTED
   1b260:	1a000002 	bne	1b270 <rtems_rfs_dir_del_entry+0x31c>         <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
   1b264:	e3510000 	cmp	r1, #0                                        <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
   1b268:	059fc134 	ldreq	ip, [pc, #308]	; 1b3a4 <rtems_rfs_dir_del_entry+0x450><== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
   1b26c:	0a000004 	beq	1b284 <rtems_rfs_dir_del_entry+0x330>         <== NOT EXECUTED
   1b270:	e2411001 	sub	r1, r1, #1                                    <== NOT EXECUTED
         *       also empty. This way we could clean up an empty directory.
         */                                                           
        elength = rtems_rfs_dir_entry_length (entry);                 
                                                                      
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))          
          printf ("rtems-rfs: dir-del-entry: "                        
   1b274:	e59f0128 	ldr	r0, [pc, #296]	; 1b3a4 <rtems_rfs_dir_del_entry+0x450><== NOT EXECUTED
   1b278:	e1520001 	cmp	r2, r1                                        <== NOT EXECUTED
   1b27c:	e59fc124 	ldr	ip, [pc, #292]	; 1b3a8 <rtems_rfs_dir_del_entry+0x454><== NOT EXECUTED
   1b280:	01a0c000 	moveq	ip, r0                                      <== NOT EXECUTED
   1b284:	e59f0120 	ldr	r0, [pc, #288]	; 1b3ac <rtems_rfs_dir_del_entry+0x458><== NOT EXECUTED
   1b288:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   1b28c:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   1b290:	e88d1020 	stm	sp, {r5, ip}                                  <== NOT EXECUTED
   1b294:	eb001482 	bl	204a4 <printf>                                 <== NOT EXECUTED
                  "last block free for ino %" PRIu32 ": elength=%i block=%" PRIu32
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
                                                                      
        if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&                 
   1b298:	e59f30fc 	ldr	r3, [pc, #252]	; 1b39c <rtems_rfs_dir_del_entry+0x448>
   1b29c:	e1560003 	cmp	r6, r3                                        
   1b2a0:	03550000 	cmpeq	r5, #0                                      
   1b2a4:	1a000019 	bne	1b310 <rtems_rfs_dir_del_entry+0x3bc>         
            (eoffset == 0) && rtems_rfs_block_map_last (&map))        
   1b2a8:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          <== NOT EXECUTED
   1b2ac:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   1b2b0:	e59d201c 	ldr	r2, [sp, #28]                                 <== NOT EXECUTED
   1b2b4:	1a000022 	bne	1b344 <rtems_rfs_dir_del_entry+0x3f0>         <== NOT EXECUTED
   1b2b8:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
   1b2bc:	1a000020 	bne	1b344 <rtems_rfs_dir_del_entry+0x3f0>         <== NOT EXECUTED
        {                                                             
          rc = rtems_rfs_block_map_shrink (fs, &map, 1);              
   1b2c0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1b2c4:	e28d1014 	add	r1, sp, #20                                   <== NOT EXECUTED
   1b2c8:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
   1b2cc:	ebfff96a 	bl	1987c <rtems_rfs_block_map_shrink>             <== NOT EXECUTED
          if (rc > 0)                                                 
   1b2d0:	e2505000 	subs	r5, r0, #0                                   <== NOT EXECUTED
   1b2d4:	da00000d 	ble	1b310 <rtems_rfs_dir_del_entry+0x3bc>         <== NOT EXECUTED
          {                                                           
            if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))      
   1b2d8:	e3a00101 	mov	r0, #1073741824	; 0x40000000                  <== NOT EXECUTED
   1b2dc:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1b2e0:	ebffdd52 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1b2e4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1b2e8:	0a000008 	beq	1b310 <rtems_rfs_dir_del_entry+0x3bc>         <== NOT EXECUTED
              printf ("rtems-rfs: dir-del-entry: "                    
   1b2ec:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1b2f0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1b2f4:	e59c6008 	ldr	r6, [ip, #8]                                  <== NOT EXECUTED
   1b2f8:	eb001917 	bl	2175c <strerror>                               <== NOT EXECUTED
   1b2fc:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1b300:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1b304:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   1b308:	e59f00a0 	ldr	r0, [pc, #160]	; 1b3b0 <rtems_rfs_dir_del_entry+0x45c><== NOT EXECUTED
   1b30c:	eb001464 	bl	204a4 <printf>                                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1b310:	e28d1064 	add	r1, sp, #100	; 0x64                           
                      "block map shrink failed for ino %" PRIu32 ": %d: %s\n",
                      rtems_rfs_inode_ino (dir), rc, strerror (rc));  
          }                                                           
        }                                                             
                                                                      
        rtems_rfs_buffer_mark_dirty (&buffer);                        
   1b314:	e3a03001 	mov	r3, #1                                        
   1b318:	e1a00004 	mov	r0, r4                                        
  handle->dirty = false;                                              
   1b31c:	e3a06000 	mov	r6, #0                                        
   1b320:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1b324:	ebfffa75 	bl	19d00 <rtems_rfs_buffer_handle_release>        
        rtems_rfs_buffer_handle_close (fs, &buffer);                  
        rtems_rfs_block_map_close (fs, &map);                         
   1b328:	e1a00004 	mov	r0, r4                                        
   1b32c:	e28d1014 	add	r1, sp, #20                                   
  handle->dirty = false;                                              
   1b330:	e5cd6064 	strb	r6, [sp, #100]	; 0x64                        
  handle->bnum  = 0;                                                  
   1b334:	e58d6068 	str	r6, [sp, #104]	; 0x68                         
  handle->buffer = NULL;                                              
   1b338:	e58d606c 	str	r6, [sp, #108]	; 0x6c                         
   1b33c:	ebfff757 	bl	190a0 <rtems_rfs_block_map_close>              
        return 0;                                                     
   1b340:	eaffff14 	b	1af98 <rtems_rfs_dir_del_entry+0x44>            
                  " offset=%d last=%s\n",                             
                  ino, elength, block, eoffset,                       
                  rtems_rfs_block_map_last (&map) ? "yes" : "no");    
                                                                      
        if ((elength == RTEMS_RFS_DIR_ENTRY_EMPTY) &&                 
            (eoffset == 0) && rtems_rfs_block_map_last (&map))        
   1b344:	e2422001 	sub	r2, r2, #1                                    <== NOT EXECUTED
   1b348:	e1530002 	cmp	r3, r2                                        <== NOT EXECUTED
   1b34c:	1affffef 	bne	1b310 <rtems_rfs_dir_del_entry+0x3bc>         <== NOT EXECUTED
   1b350:	eaffffda 	b	1b2c0 <rtems_rfs_dir_del_entry+0x36c>           <== NOT EXECUTED
                                                                      
    if (rc == 0)                                                      
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
      if (rc == ENXIO)                                                
        rc = ENOENT;                                                  
   1b354:	e3a06002 	mov	r6, #2                                        <== NOT EXECUTED
   1b358:	eaffff7c 	b	1b150 <rtems_rfs_dir_del_entry+0x1fc>           <== NOT EXECUTED
    int      eoffset;                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_DEL_ENTRY))            
   1b35c:	e3a00101 	mov	r0, #1073741824	; 0x40000000                  <== NOT EXECUTED
   1b360:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1b364:	ebffdd31 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1b368:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1b36c:	0affff77 	beq	1b150 <rtems_rfs_dir_del_entry+0x1fc>         <== NOT EXECUTED
        printf ("rtems-rfs: dir-del-entry: "                          
   1b370:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1b374:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1b378:	e59c5008 	ldr	r5, [ip, #8]                                  <== NOT EXECUTED
   1b37c:	eb0018f6 	bl	2175c <strerror>                               <== NOT EXECUTED
   1b380:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1b384:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1b388:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   1b38c:	e59f0020 	ldr	r0, [pc, #32]	; 1b3b4 <rtems_rfs_dir_del_entry+0x460><== NOT EXECUTED
   1b390:	eb001443 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1b394:	eaffff6d 	b	1b150 <rtems_rfs_dir_del_entry+0x1fc>           <== NOT EXECUTED
                                                                      

0001b730 <rtems_rfs_dir_empty>: } int rtems_rfs_dir_empty (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir) {
   1b730:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1b734:	e1a05000 	mov	r5, r0                                        
   1b738:	e24dd064 	sub	sp, sp, #100	; 0x64                           
   1b73c:	e1a07001 	mov	r7, r1                                        
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  bool                    empty;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
   1b740:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 
   1b744:	e3a01000 	mov	r1, #0                                        
   1b748:	ebffdc38 	bl	12830 <rtems_rfs_trace>                        
   1b74c:	e3500000 	cmp	r0, #0                                        
   1b750:	1a000008 	bne	1b778 <rtems_rfs_dir_empty+0x48>              
    printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
                                                                      
  empty = true;                                                       
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
   1b754:	e1a00005 	mov	r0, r5                                        
   1b758:	e1a01007 	mov	r1, r7                                        
   1b75c:	e28d2004 	add	r2, sp, #4                                    
   1b760:	ebfff5f4 	bl	18f38 <rtems_rfs_block_map_open>               
  if (rc > 0)                                                         
   1b764:	e250b000 	subs	fp, r0, #0                                   
   1b768:	da00000b 	ble	1b79c <rtems_rfs_dir_empty+0x6c>              
    rc = ENOTEMPTY;                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
   1b76c:	e1a0000b 	mov	r0, fp                                        
   1b770:	e28dd064 	add	sp, sp, #100	; 0x64                           
   1b774:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  rtems_rfs_block_no      block;                                      
  bool                    empty;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
    printf ("rtems-rfs: dir-empty: dir=%" PRId32 "\n", rtems_rfs_inode_ino (dir));
   1b778:	e5971008 	ldr	r1, [r7, #8]                                  <== NOT EXECUTED
   1b77c:	e59f01f0 	ldr	r0, [pc, #496]	; 1b974 <rtems_rfs_dir_empty+0x244><== NOT EXECUTED
   1b780:	eb001347 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
  empty = true;                                                       
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
   1b784:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1b788:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   1b78c:	e28d2004 	add	r2, sp, #4                                    <== NOT EXECUTED
   1b790:	ebfff5e8 	bl	18f38 <rtems_rfs_block_map_open>               <== NOT EXECUTED
  if (rc > 0)                                                         
   1b794:	e250b000 	subs	fp, r0, #0                                   <== NOT EXECUTED
   1b798:	cafffff3 	bgt	1b76c <rtems_rfs_dir_empty+0x3c>              <== NOT EXECUTED
    return rc;                                                        
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);                
   1b79c:	e28d8060 	add	r8, sp, #96	; 0x60                            
   1b7a0:	e1a00005 	mov	r0, r5                                        
   1b7a4:	e28d1004 	add	r1, sp, #4                                    
   1b7a8:	e3a02000 	mov	r2, #0                                        
   1b7ac:	e3a03000 	mov	r3, #0                                        
   1b7b0:	e58d8000 	str	r8, [sp]                                      
   1b7b4:	ebfff706 	bl	193d4 <rtems_rfs_block_map_seek>               
  if (rc > 0)                                                         
   1b7b8:	e250b000 	subs	fp, r0, #0                                   
   1b7bc:	ca000068 	bgt	1b964 <rtems_rfs_dir_empty+0x234>             
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1b7c0:	e3a03000 	mov	r3, #0                                        
   1b7c4:	e5cd3054 	strb	r3, [sp, #84]	; 0x54                         
  handle->bnum  = 0;                                                  
   1b7c8:	e58d3058 	str	r3, [sp, #88]	; 0x58                          
  handle->buffer = NULL;                                              
   1b7cc:	e58d305c 	str	r3, [sp, #92]	; 0x5c                          
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b7d0:	e59f61a0 	ldr	r6, [pc, #416]	; 1b978 <rtems_rfs_dir_empty+0x248>
  while (empty)                                                       
  {                                                                   
    uint8_t* entry;                                                   
    int      offset;                                                  
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
   1b7d4:	e1a00005 	mov	r0, r5                                        
   1b7d8:	e28d1054 	add	r1, sp, #84	; 0x54                            
   1b7dc:	e59d2060 	ldr	r2, [sp, #96]	; 0x60                          
   1b7e0:	e3a03001 	mov	r3, #1                                        
   1b7e4:	ebfff9be 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
    if (rc > 0)                                                       
   1b7e8:	e250b000 	subs	fp, r0, #0                                   
   1b7ec:	ca00003c 	bgt	1b8e4 <rtems_rfs_dir_empty+0x1b4>             
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b7f0:	e5951008 	ldr	r1, [r5, #8]                                  
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
   1b7f4:	e59d305c 	ldr	r3, [sp, #92]	; 0x5c                          
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b7f8:	e251100a 	subs	r1, r1, #10                                  
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
   1b7fc:	e593301c 	ldr	r3, [r3, #28]                                 
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b800:	0a000047 	beq	1b924 <rtems_rfs_dir_empty+0x1f4>             
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1b804:	e5d32009 	ldrb	r2, [r3, #9]                                 
   1b808:	e5d39008 	ldrb	r9, [r3, #8]                                 
   1b80c:	e1829409 	orr	r9, r2, r9, lsl #8                            
      eino    = rtems_rfs_dir_entry_ino (entry);                      
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b810:	e1590006 	cmp	r9, r6                                        
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b814:	e5d32000 	ldrb	r2, [r3]                                     
   1b818:	e5d3e001 	ldrb	lr, [r3, #1]                                 
   1b81c:	e5d3c002 	ldrb	ip, [r3, #2]                                 
   1b820:	e5d30003 	ldrb	r0, [r3, #3]                                 
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b824:	0a00003e 	beq	1b924 <rtems_rfs_dir_empty+0x1f4>             
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b828:	e1a0a80e 	lsl	sl, lr, #16                                   
   1b82c:	e18aa40c 	orr	sl, sl, ip, lsl #8                            
   1b830:	e18aa000 	orr	sl, sl, r0                                    
   1b834:	e18aac02 	orr	sl, sl, r2, lsl #24                           
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    offset = 0;                                                       
   1b838:	e3a04000 	mov	r4, #0                                        
   1b83c:	ea000018 	b	1b8a4 <rtems_rfs_dir_empty+0x174>               
      /*                                                              
       * Ignore the current (.) and parent (..) entries. Anything else means
       * the directory is not empty.                                  
       */                                                             
      if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||             
           (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.')) &&               
   1b840:	e359000c 	cmp	r9, #12                                       
   1b844:	1a000024 	bne	1b8dc <rtems_rfs_dir_empty+0x1ac>             
          ((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 2)) ||             
   1b848:	e5d3200a 	ldrb	r2, [r3, #10]                                
   1b84c:	e352002e 	cmp	r2, #46	; 0x2e                                
   1b850:	1a000021 	bne	1b8dc <rtems_rfs_dir_empty+0x1ac>             
           (entry[RTEMS_RFS_DIR_ENTRY_SIZE] != '.') ||                
   1b854:	e5d3200b 	ldrb	r2, [r3, #11]                                
   1b858:	e352002e 	cmp	r2, #46	; 0x2e                                
   1b85c:	1a00001e 	bne	1b8dc <rtems_rfs_dir_empty+0x1ac>             
        empty = false;                                                
        break;                                                        
      }                                                               
                                                                      
      entry  += elength;                                              
      offset += elength;                                              
   1b860:	e0844009 	add	r4, r4, r9                                    
      break;                                                          
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    offset = 0;                                                       
                                                                      
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1b864:	e1540001 	cmp	r4, r1                                        
   1b868:	2a00002d 	bcs	1b924 <rtems_rfs_dir_empty+0x1f4>             
      {                                                               
        empty = false;                                                
        break;                                                        
      }                                                               
                                                                      
      entry  += elength;                                              
   1b86c:	e0833009 	add	r3, r3, r9                                    
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b870:	e5d3a001 	ldrb	sl, [r3, #1]                                 
   1b874:	e5d32000 	ldrb	r2, [r3]                                     
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1b878:	e5d39008 	ldrb	r9, [r3, #8]                                 
   1b87c:	e5d3c009 	ldrb	ip, [r3, #9]                                 
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b880:	e1a0a80a 	lsl	sl, sl, #16                                   
   1b884:	e5d30003 	ldrb	r0, [r3, #3]                                 
   1b888:	e18aac02 	orr	sl, sl, r2, lsl #24                           
    while (offset < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
   1b88c:	e18c9409 	orr	r9, ip, r9, lsl #8                            
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b890:	e5d32002 	ldrb	r2, [r3, #2]                                 
   1b894:	e18aa000 	orr	sl, sl, r0                                    
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b898:	e1590006 	cmp	r9, r6                                        
    {                                                                 
      rtems_rfs_ino eino;                                             
      int           elength;                                          
                                                                      
      elength = rtems_rfs_dir_entry_length (entry);                   
      eino    = rtems_rfs_dir_entry_ino (entry);                      
   1b89c:	e18aa402 	orr	sl, sl, r2, lsl #8                            
                                                                      
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
   1b8a0:	0a00001f 	beq	1b924 <rtems_rfs_dir_empty+0x1f4>             
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1b8a4:	e359000a 	cmp	r9, #10                                       
   1b8a8:	da000018 	ble	1b910 <rtems_rfs_dir_empty+0x1e0>             
   1b8ac:	e595201c 	ldr	r2, [r5, #28]                                 
   1b8b0:	e35a0000 	cmp	sl, #0                                        
   1b8b4:	11590002 	cmpne	r9, r2                                      
   1b8b8:	2a000014 	bcs	1b910 <rtems_rfs_dir_empty+0x1e0>             
   1b8bc:	e5952014 	ldr	r2, [r5, #20]                                 
   1b8c0:	e152000a 	cmp	r2, sl                                        
   1b8c4:	3a000011 	bcc	1b910 <rtems_rfs_dir_empty+0x1e0>             
                                                                      
      /*                                                              
       * Ignore the current (.) and parent (..) entries. Anything else means
       * the directory is not empty.                                  
       */                                                             
      if (((elength != (RTEMS_RFS_DIR_ENTRY_SIZE + 1)) ||             
   1b8c8:	e359000b 	cmp	r9, #11                                       
   1b8cc:	1affffdb 	bne	1b840 <rtems_rfs_dir_empty+0x110>             
   1b8d0:	e5d3200a 	ldrb	r2, [r3, #10]                                
   1b8d4:	e352002e 	cmp	r2, #46	; 0x2e                                
   1b8d8:	0affffe0 	beq	1b860 <rtems_rfs_dir_empty+0x130>             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ((rc == 0) && !empty)                                            
    rc = ENOTEMPTY;                                                   
   1b8dc:	e35b0000 	cmp	fp, #0                                        
   1b8e0:	03a0b05a 	moveq	fp, #90	; 0x5a                              
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1b8e4:	e28d1054 	add	r1, sp, #84	; 0x54                            
   1b8e8:	e1a00005 	mov	r0, r5                                        
   1b8ec:	ebfff903 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  handle->dirty = false;                                              
   1b8f0:	e3a03000 	mov	r3, #0                                        
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
   1b8f4:	e1a00005 	mov	r0, r5                                        
   1b8f8:	e28d1004 	add	r1, sp, #4                                    
   1b8fc:	e5cd3054 	strb	r3, [sp, #84]	; 0x54                         
  handle->bnum  = 0;                                                  
   1b900:	e58d3058 	str	r3, [sp, #88]	; 0x58                          
  handle->buffer = NULL;                                              
   1b904:	e58d305c 	str	r3, [sp, #92]	; 0x5c                          
   1b908:	ebfff5e4 	bl	190a0 <rtems_rfs_block_map_close>              
  return rc;                                                          
   1b90c:	eaffff96 	b	1b76c <rtems_rfs_dir_empty+0x3c>                
      if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                       
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))              
   1b910:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1b914:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
   1b918:	ebffdbc4 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1b91c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1b920:	1a000008 	bne	1b948 <rtems_rfs_dir_empty+0x218>             <== NOT EXECUTED
      offset += elength;                                              
    }                                                                 
                                                                      
    if (empty)                                                        
    {                                                                 
      rc = rtems_rfs_block_map_next_block (fs, &map, &block);         
   1b924:	e1a00005 	mov	r0, r5                                        
   1b928:	e28d1004 	add	r1, sp, #4                                    
   1b92c:	e1a02008 	mov	r2, r8                                        
   1b930:	ebfff6c6 	bl	19450 <rtems_rfs_block_map_next_block>         
      if (rc > 0)                                                     
   1b934:	e250b000 	subs	fp, r0, #0                                   
   1b938:	daffffa5 	ble	1b7d4 <rtems_rfs_dir_empty+0xa4>              
      {                                                               
        if (rc == ENXIO)                                              
   1b93c:	e35b0006 	cmp	fp, #6                                        
   1b940:	03a0b000 	moveq	fp, #0                                      
   1b944:	eaffffe6 	b	1b8e4 <rtems_rfs_dir_empty+0x1b4>               
        break;                                                        
                                                                      
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_EMPTY))              
          printf ("rtems-rfs: dir-empty: "                            
   1b948:	e5971008 	ldr	r1, [r7, #8]                                  <== NOT EXECUTED
   1b94c:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
   1b950:	e1a0300a 	mov	r3, sl                                        <== NOT EXECUTED
   1b954:	e59f0020 	ldr	r0, [pc, #32]	; 1b97c <rtems_rfs_dir_empty+0x24c><== NOT EXECUTED
   1b958:	e58d4000 	str	r4, [sp]                                      <== NOT EXECUTED
   1b95c:	eb0012d0 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1b960:	eaffffef 	b	1b924 <rtems_rfs_dir_empty+0x1f4>               <== NOT EXECUTED
    return rc;                                                        
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);                
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_block_map_close (fs, &map);                             
   1b964:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1b968:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
   1b96c:	ebfff5cb 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
    return rc;                                                        
   1b970:	eaffff7d 	b	1b76c <rtems_rfs_dir_empty+0x3c>                <== NOT EXECUTED
                                                                      

0001f324 <rtems_rfs_dir_hash>: { uint32_t a,b,c; /* internal state */ union { const void *ptr; size_t i; } u; /* needed for Mac Powerbook G4 */ /* Set up the internal state */ a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;
   1f324:	e59fc1b4 	ldr	ip, [pc, #436]	; 1f4e0 <rtems_rfs_dir_hash+0x1bc>
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
   1f328:	e351000c 	cmp	r1, #12                                       
{                                                                     
  uint32_t a,b,c;                             /* internal state */    
  union { const void *ptr; size_t i; } u;     /* needed for Mac Powerbook G4 */
                                                                      
  /* Set up the internal state */                                     
  a = b = c = 0xdeadbeef + ((uint32_t)length) + initval;              
   1f32c:	e081c00c 	add	ip, r1, ip                                    
*/                                                                    
                                                                      
#define initval (20010928)                                            
uint32_t                                                              
rtems_rfs_dir_hash (const void *key, size_t length)                   
{                                                                     
   1f330:	e92d0ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp}             
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
   1f334:	e1a03000 	mov	r3, r0                                        
   1f338:	e1a0200c 	mov	r2, ip                                        
   1f33c:	e1a0a00c 	mov	sl, ip                                        
   1f340:	9a00002d 	bls	1f3fc <rtems_rfs_dir_hash+0xd8>               
    {                                                                 
      a += k[0];                                                      
   1f344:	e5d36000 	ldrb	r6, [r3]                                     
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
   1f348:	e5d30008 	ldrb	r0, [r3, #8]                                 
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
   1f34c:	e5d39001 	ldrb	r9, [r3, #1]                                 
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
   1f350:	e5d38009 	ldrb	r8, [r3, #9]                                 
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
   1f354:	e5d37004 	ldrb	r7, [r3, #4]                                 
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
   1f358:	e086a00a 	add	sl, r6, sl                                    
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
   1f35c:	e080000c 	add	r0, r0, ip                                    
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
   1f360:	e5d36002 	ldrb	r6, [r3, #2]                                 
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
   1f364:	e5d3500a 	ldrb	r5, [r3, #10]                                
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
   1f368:	e5d3c003 	ldrb	ip, [r3, #3]                                 
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
   1f36c:	e5d3b005 	ldrb	fp, [r3, #5]                                 
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
   1f370:	e5d3400b 	ldrb	r4, [r3, #11]                                
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
   1f374:	e08aa409 	add	sl, sl, r9, lsl #8                            
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
   1f378:	e0800408 	add	r0, r0, r8, lsl #8                            
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
   1f37c:	e0872002 	add	r2, r7, r2                                    
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
   1f380:	e5d39006 	ldrb	r9, [r3, #6]                                 
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
   1f384:	e08aa806 	add	sl, sl, r6, lsl #16                           
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
   1f388:	e0800805 	add	r0, r0, r5, lsl #16                           
      c += ((uint32_t)k[11])<<24;                                     
   1f38c:	e0804c04 	add	r4, r0, r4, lsl #24                           
    while (length > 12)                                               
    {                                                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
   1f390:	e08acc0c 	add	ip, sl, ip, lsl #24                           
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
   1f394:	e5d30007 	ldrb	r0, [r3, #7]                                 
      a += k[0];                                                      
      a += ((uint32_t)k[1])<<8;                                       
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
   1f398:	e082b40b 	add	fp, r2, fp, lsl #8                            
      b += ((uint32_t)k[6])<<16;                                      
   1f39c:	e08bb809 	add	fp, fp, r9, lsl #16                           
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
   1f3a0:	e064c00c 	rsb	ip, r4, ip                                    
   1f3a4:	e02cce64 	eor	ip, ip, r4, ror #28                           
      a += ((uint32_t)k[2])<<16;                                      
      a += ((uint32_t)k[3])<<24;                                      
      b += k[4];                                                      
      b += ((uint32_t)k[5])<<8;                                       
      b += ((uint32_t)k[6])<<16;                                      
      b += ((uint32_t)k[7])<<24;                                      
   1f3a8:	e08bbc00 	add	fp, fp, r0, lsl #24                           
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
   1f3ac:	e06c900b 	rsb	r9, ip, fp                                    
   1f3b0:	e0299d6c 	eor	r9, r9, ip, ror #26                           
   1f3b4:	e084400b 	add	r4, r4, fp                                    
   1f3b8:	e0697004 	rsb	r7, r9, r4                                    
   1f3bc:	e0277c69 	eor	r7, r7, r9, ror #24                           
   1f3c0:	e08cc004 	add	ip, ip, r4                                    
   1f3c4:	e067a00c 	rsb	sl, r7, ip                                    
   1f3c8:	e02aa867 	eor	sl, sl, r7, ror #16                           
   1f3cc:	e089900c 	add	r9, r9, ip                                    
   1f3d0:	e06a2009 	rsb	r2, sl, r9                                    
   1f3d4:	e02226ea 	eor	r2, r2, sl, ror #13                           
   1f3d8:	e0877009 	add	r7, r7, r9                                    
      length -= 12;                                                   
   1f3dc:	e241100c 	sub	r1, r1, #12                                   
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
   1f3e0:	e08aa007 	add	sl, sl, r7                                    
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
   1f3e4:	e351000c 	cmp	r1, #12                                       
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
   1f3e8:	e0627007 	rsb	r7, r2, r7                                    
   1f3ec:	e027ce62 	eor	ip, r7, r2, ror #28                           
      length -= 12;                                                   
      k += 12;                                                        
   1f3f0:	e283300c 	add	r3, r3, #12                                   
      b += ((uint32_t)k[7])<<24;                                      
      c += k[8];                                                      
      c += ((uint32_t)k[9])<<8;                                       
      c += ((uint32_t)k[10])<<16;                                     
      c += ((uint32_t)k[11])<<24;                                     
      mix(a,b,c);                                                     
   1f3f4:	e082200a 	add	r2, r2, sl                                    
                                                                      
  } else {                        /* need to read the key one byte at a time */
    const uint8_t *k = (const uint8_t *)key;                          
                                                                      
    /*--------------- all but the last block: affect some 32 bits of (a,b,c) */
    while (length > 12)                                               
   1f3f8:	8affffd1 	bhi	1f344 <rtems_rfs_dir_hash+0x20>               
      length -= 12;                                                   
      k += 12;                                                        
    }                                                                 
                                                                      
    /*-------------------------------- last block: affect all 32 bits of (c) */
    switch(length)                   /* all the case statements fall through */
   1f3fc:	e2411001 	sub	r1, r1, #1                                    
   1f400:	e351000b 	cmp	r1, #11                                       
   1f404:	979ff101 	ldrls	pc, [pc, r1, lsl #2]                        
   1f408:	ea000031 	b	1f4d4 <rtems_rfs_dir_hash+0x1b0>                <== NOT EXECUTED
   1f40c:	0001f494 	.word	0x0001f494                                  <== NOT EXECUTED
   1f410:	0001f48c 	.word	0x0001f48c                                  <== NOT EXECUTED
   1f414:	0001f484 	.word	0x0001f484                                  <== NOT EXECUTED
   1f418:	0001f47c 	.word	0x0001f47c                                  <== NOT EXECUTED
   1f41c:	0001f474 	.word	0x0001f474                                  <== NOT EXECUTED
   1f420:	0001f46c 	.word	0x0001f46c                                  <== NOT EXECUTED
   1f424:	0001f464 	.word	0x0001f464                                  <== NOT EXECUTED
   1f428:	0001f45c 	.word	0x0001f45c                                  <== NOT EXECUTED
   1f42c:	0001f454 	.word	0x0001f454                                  <== NOT EXECUTED
   1f430:	0001f44c 	.word	0x0001f44c                                  <== NOT EXECUTED
   1f434:	0001f444 	.word	0x0001f444                                  <== NOT EXECUTED
   1f438:	0001f43c 	.word	0x0001f43c                                  <== NOT EXECUTED
    {                                                                 
      case 12: c+=((uint32_t)k[11])<<24;                              
   1f43c:	e5d3100b 	ldrb	r1, [r3, #11]                                
   1f440:	e08ccc01 	add	ip, ip, r1, lsl #24                           
      case 11: c+=((uint32_t)k[10])<<16;                              
   1f444:	e5d3100a 	ldrb	r1, [r3, #10]                                
   1f448:	e08cc801 	add	ip, ip, r1, lsl #16                           
      case 10: c+=((uint32_t)k[9])<<8;                                
   1f44c:	e5d31009 	ldrb	r1, [r3, #9]                                 
   1f450:	e08cc401 	add	ip, ip, r1, lsl #8                            
      case 9 : c+=k[8];                                               
   1f454:	e5d31008 	ldrb	r1, [r3, #8]                                 
   1f458:	e08cc001 	add	ip, ip, r1                                    
      case 8 : b+=((uint32_t)k[7])<<24;                               
   1f45c:	e5d31007 	ldrb	r1, [r3, #7]                                 
   1f460:	e0822c01 	add	r2, r2, r1, lsl #24                           
      case 7 : b+=((uint32_t)k[6])<<16;                               
   1f464:	e5d31006 	ldrb	r1, [r3, #6]                                 
   1f468:	e0822801 	add	r2, r2, r1, lsl #16                           
      case 6 : b+=((uint32_t)k[5])<<8;                                
   1f46c:	e5d31005 	ldrb	r1, [r3, #5]                                 
   1f470:	e0822401 	add	r2, r2, r1, lsl #8                            
      case 5 : b+=k[4];                                               
   1f474:	e5d31004 	ldrb	r1, [r3, #4]                                 
   1f478:	e0822001 	add	r2, r2, r1                                    
      case 4 : a+=((uint32_t)k[3])<<24;                               
   1f47c:	e5d31003 	ldrb	r1, [r3, #3]                                 
   1f480:	e08aac01 	add	sl, sl, r1, lsl #24                           
      case 3 : a+=((uint32_t)k[2])<<16;                               
   1f484:	e5d31002 	ldrb	r1, [r3, #2]                                 
   1f488:	e08aa801 	add	sl, sl, r1, lsl #16                           
      case 2 : a+=((uint32_t)k[1])<<8;                                
   1f48c:	e5d31001 	ldrb	r1, [r3, #1]                                 
   1f490:	e08aa401 	add	sl, sl, r1, lsl #8                            
      case 1 : a+=k[0];                                               
   1f494:	e5d31000 	ldrb	r1, [r3]                                     
        break;                                                        
      case 0 : return c;                                              
    }                                                                 
  }                                                                   
                                                                      
  final(a,b,c);                                                       
   1f498:	e02c3002 	eor	r3, ip, r2                                    
   1f49c:	e0433962 	sub	r3, r3, r2, ror #18                           
      case 6 : b+=((uint32_t)k[5])<<8;                                
      case 5 : b+=k[4];                                               
      case 4 : a+=((uint32_t)k[3])<<24;                               
      case 3 : a+=((uint32_t)k[2])<<16;                               
      case 2 : a+=((uint32_t)k[1])<<8;                                
      case 1 : a+=k[0];                                               
   1f4a0:	e08aa001 	add	sl, sl, r1                                    
        break;                                                        
      case 0 : return c;                                              
    }                                                                 
  }                                                                   
                                                                      
  final(a,b,c);                                                       
   1f4a4:	e023a00a 	eor	sl, r3, sl                                    
   1f4a8:	e04aaae3 	sub	sl, sl, r3, ror #21                           
   1f4ac:	e02a2002 	eor	r2, sl, r2                                    
   1f4b0:	e04223ea 	sub	r2, r2, sl, ror #7                            
   1f4b4:	e0223003 	eor	r3, r2, r3                                    
   1f4b8:	e0433862 	sub	r3, r3, r2, ror #16                           
   1f4bc:	e023a00a 	eor	sl, r3, sl                                    
   1f4c0:	e04aae63 	sub	sl, sl, r3, ror #28                           
   1f4c4:	e02a2002 	eor	r2, sl, r2                                    
   1f4c8:	e042296a 	sub	r2, r2, sl, ror #18                           
   1f4cc:	e022c003 	eor	ip, r2, r3                                    
   1f4d0:	e04cc462 	sub	ip, ip, r2, ror #8                            
  return c;                                                           
}                                                                     
   1f4d4:	e1a0000c 	mov	r0, ip                                        
   1f4d8:	e8bd0ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp}              
   1f4dc:	e12fff1e 	bx	lr                                             
                                                                      

0001a5f0 <rtems_rfs_dir_lookup_ino>: rtems_rfs_inode_handle* inode, const char* name, int length, rtems_rfs_ino* ino, uint32_t* offset) {
   1a5f0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1a5f4:	e24dd074 	sub	sp, sp, #116	; 0x74                           
   1a5f8:	e58d100c 	str	r1, [sp, #12]                                 
   1a5fc:	e1a06000 	mov	r6, r0                                        
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle entries;                                    
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
   1a600:	e3a01000 	mov	r1, #0                                        
   1a604:	e3a00301 	mov	r0, #67108864	; 0x4000000                     
                          rtems_rfs_inode_handle* inode,              
                          const char*             name,               
                          int                     length,             
                          rtems_rfs_ino*          ino,                
                          uint32_t*               offset)             
{                                                                     
   1a608:	e1a0b002 	mov	fp, r2                                        
   1a60c:	e1a09003 	mov	r9, r3                                        
   1a610:	e59d7098 	ldr	r7, [sp, #152]	; 0x98                         
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle entries;                                    
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
   1a614:	ebffe085 	bl	12830 <rtems_rfs_trace>                        
   1a618:	e3500000 	cmp	r0, #0                                        
   1a61c:	1a000012 	bne	1a66c <rtems_rfs_dir_lookup_ino+0x7c>         
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
  }                                                                   
                                                                      
  *ino = RTEMS_RFS_EMPTY_INO;                                         
  *offset = 0;                                                        
   1a620:	e59dc09c 	ldr	ip, [sp, #156]	; 0x9c                         
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
  }                                                                   
                                                                      
  *ino = RTEMS_RFS_EMPTY_INO;                                         
   1a624:	e3a04000 	mov	r4, #0                                        
   1a628:	e5874000 	str	r4, [r7]                                      
  *offset = 0;                                                        
                                                                      
  rc = rtems_rfs_block_map_open (fs, inode, &map);                    
   1a62c:	e1a00006 	mov	r0, r6                                        
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
  }                                                                   
                                                                      
  *ino = RTEMS_RFS_EMPTY_INO;                                         
  *offset = 0;                                                        
   1a630:	e58c4000 	str	r4, [ip]                                      
                                                                      
  rc = rtems_rfs_block_map_open (fs, inode, &map);                    
   1a634:	e59d100c 	ldr	r1, [sp, #12]                                 
   1a638:	e28d2014 	add	r2, sp, #20                                   
   1a63c:	ebfffa3d 	bl	18f38 <rtems_rfs_block_map_open>               
  if (rc > 0)                                                         
   1a640:	e3500000 	cmp	r0, #0                                        
   1a644:	e58d0008 	str	r0, [sp, #8]                                  
   1a648:	da000017 	ble	1a6ac <rtems_rfs_dir_lookup_ino+0xbc>         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))             
   1a64c:	e3a00301 	mov	r0, #67108864	; 0x4000000                     <== NOT EXECUTED
   1a650:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a654:	ebffe075 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a658:	e1500004 	cmp	r0, r4                                        <== NOT EXECUTED
   1a65c:	1a0000e7 	bne	1aa00 <rtems_rfs_dir_lookup_ino+0x410>        <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &entries);                       
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
   1a660:	e59d0008 	ldr	r0, [sp, #8]                                  
   1a664:	e28dd074 	add	sp, sp, #116	; 0x74                           
   1a668:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
   1a66c:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1a670:	e59f0478 	ldr	r0, [pc, #1144]	; 1aaf0 <rtems_rfs_dir_lookup_ino+0x500><== NOT EXECUTED
   1a674:	e59c1008 	ldr	r1, [ip, #8]                                  <== NOT EXECUTED
   1a678:	eb001789 	bl	204a4 <printf>                                 <== NOT EXECUTED
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
   1a67c:	e3590000 	cmp	r9, #0                                        <== NOT EXECUTED
   1a680:	da000005 	ble	1a69c <rtems_rfs_dir_lookup_ino+0xac>         <== NOT EXECUTED
   1a684:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1a688:	e7db0004 	ldrb	r0, [fp, r4]                                 <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
   1a68c:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1a690:	eb0017ed 	bl	2064c <putchar>                                <== NOT EXECUTED
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))               
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: dir-lookup-ino: lookup ino: root=%" PRId32 ", path=",
            inode->ino);                                              
    for (c = 0; c < length; c++)                                      
   1a694:	e1540009 	cmp	r4, r9                                        <== NOT EXECUTED
   1a698:	1afffffa 	bne	1a688 <rtems_rfs_dir_lookup_ino+0x98>         <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (", len=%d\n", length);                                    
   1a69c:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   1a6a0:	e59f044c 	ldr	r0, [pc, #1100]	; 1aaf4 <rtems_rfs_dir_lookup_ino+0x504><== NOT EXECUTED
   1a6a4:	eb00177e 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a6a8:	eaffffdc 	b	1a620 <rtems_rfs_dir_lookup_ino+0x30>           <== NOT EXECUTED
    uint32_t           hash;                                          
                                                                      
    /*                                                                
     * Calculate the hash of the look up string.                      
     */                                                               
    hash = rtems_rfs_dir_hash (name, length);                         
   1a6ac:	e1a01009 	mov	r1, r9                                        
   1a6b0:	e1a0000b 	mov	r0, fp                                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1a6b4:	e5cd4064 	strb	r4, [sp, #100]	; 0x64                        
  handle->bnum  = 0;                                                  
   1a6b8:	e58d4068 	str	r4, [sp, #104]	; 0x68                         
  handle->buffer = NULL;                                              
   1a6bc:	e58d406c 	str	r4, [sp, #108]	; 0x6c                         
   1a6c0:	eb001317 	bl	1f324 <rtems_rfs_dir_hash>                     
                                                                      
    /*                                                                
     * Locate the first block. The map points to the start after open so just
     * seek 0. If an error the block will be 0.                       
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
   1a6c4:	e28de070 	add	lr, sp, #112	; 0x70                           
    uint32_t           hash;                                          
                                                                      
    /*                                                                
     * Calculate the hash of the look up string.                      
     */                                                               
    hash = rtems_rfs_dir_hash (name, length);                         
   1a6c8:	e1a0a000 	mov	sl, r0                                        
                                                                      
    /*                                                                
     * Locate the first block. The map points to the start after open so just
     * seek 0. If an error the block will be 0.                       
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
   1a6cc:	e28d1014 	add	r1, sp, #20                                   
   1a6d0:	e1a00006 	mov	r0, r6                                        
   1a6d4:	e3a02000 	mov	r2, #0                                        
   1a6d8:	e3a03000 	mov	r3, #0                                        
   1a6dc:	e58de000 	str	lr, [sp]                                      
   1a6e0:	ebfffb3b 	bl	193d4 <rtems_rfs_block_map_seek>               
    if (rc > 0)                                                       
   1a6e4:	e3500000 	cmp	r0, #0                                        
   1a6e8:	e58d0008 	str	r0, [sp, #8]                                  
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
                                                                      
        if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                     
   1a6ec:	d59f8404 	ldrle	r8, [pc, #1028]	; 1aaf8 <rtems_rfs_dir_lookup_ino+0x508>
    /*                                                                
     * Locate the first block. The map points to the start after open so just
     * seek 0. If an error the block will be 0.                       
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
    if (rc > 0)                                                       
   1a6f0:	da00002c 	ble	1a7a8 <rtems_rfs_dir_lookup_ino+0x1b8>        
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
   1a6f4:	e3a00301 	mov	r0, #67108864	; 0x4000000                     <== NOT EXECUTED
   1a6f8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a6fc:	ebffe04b 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a700:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a704:	1a0000cf 	bne	1aa48 <rtems_rfs_dir_lookup_ino+0x458>        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1a708:	e28d1064 	add	r1, sp, #100	; 0x64                           <== NOT EXECUTED
   1a70c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1a710:	ebfffd7a 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
        printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
                rc, strerror (rc));                                   
      if (rc == ENXIO)                                                
        rc = ENOENT;                                                  
   1a714:	e59dc008 	ldr	ip, [sp, #8]                                  <== NOT EXECUTED
   1a718:	e35c0006 	cmp	ip, #6                                        <== NOT EXECUTED
  handle->dirty = false;                                              
   1a71c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   1a720:	03a0c002 	moveq	ip, #2                                      <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &entries);                   
      rtems_rfs_block_map_close (fs, &map);                           
   1a724:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1a728:	e28d1014 	add	r1, sp, #20                                   <== NOT EXECUTED
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
                rc, strerror (rc));                                   
      if (rc == ENXIO)                                                
        rc = ENOENT;                                                  
   1a72c:	e58dc008 	str	ip, [sp, #8]                                  <== NOT EXECUTED
   1a730:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1a734:	e58d3068 	str	r3, [sp, #104]	; 0x68                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1a738:	e58d306c 	str	r3, [sp, #108]	; 0x6c                         <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &entries);                   
      rtems_rfs_block_map_close (fs, &map);                           
   1a73c:	ebfffa57 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
      return rc;                                                      
   1a740:	eaffffc6 	b	1a660 <rtems_rfs_dir_lookup_ino+0x70>           <== NOT EXECUTED
                                                                      
        map.bpos.boff += elength;                                     
        entry += elength;                                             
      }                                                               
                                                                      
      if (rc == 0)                                                    
   1a744:	e59dc010 	ldr	ip, [sp, #16]                                 
   1a748:	e35c0000 	cmp	ip, #0                                        
   1a74c:	1a000088 	bne	1a974 <rtems_rfs_dir_lookup_ino+0x384>        
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
   1a750:	e1a00006 	mov	r0, r6                                        
   1a754:	e28d1014 	add	r1, sp, #20                                   
   1a758:	e28d2070 	add	r2, sp, #112	; 0x70                           
   1a75c:	ebfffb3b 	bl	19450 <rtems_rfs_block_map_next_block>         
        if ((rc > 0) && (rc != ENXIO))                                
   1a760:	e3500006 	cmp	r0, #6                                        
   1a764:	13500000 	cmpne	r0, #0                                      
        entry += elength;                                             
      }                                                               
                                                                      
      if (rc == 0)                                                    
      {                                                               
        rc = rtems_rfs_block_map_next_block (fs, &map, &block);       
   1a768:	e58d0008 	str	r0, [sp, #8]                                  
        if ((rc > 0) && (rc != ENXIO))                                
   1a76c:	da0000ad 	ble	1aa28 <rtems_rfs_dir_lookup_ino+0x438>        
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
   1a770:	e3a00301 	mov	r0, #67108864	; 0x4000000                     <== NOT EXECUTED
   1a774:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a778:	ebffe02c 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a77c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a780:	0a000008 	beq	1a7a8 <rtems_rfs_dir_lookup_ino+0x1b8>        <== NOT EXECUTED
            printf ("rtems-rfs: dir-lookup-ino: "                     
   1a784:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1a788:	e59d0008 	ldr	r0, [sp, #8]                                  <== NOT EXECUTED
   1a78c:	e59c4008 	ldr	r4, [ip, #8]                                  <== NOT EXECUTED
   1a790:	eb001bf1 	bl	2175c <strerror>                               <== NOT EXECUTED
   1a794:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   1a798:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1a79c:	e59d2008 	ldr	r2, [sp, #8]                                  <== NOT EXECUTED
   1a7a0:	e59f0354 	ldr	r0, [pc, #852]	; 1aafc <rtems_rfs_dir_lookup_ino+0x50c><== NOT EXECUTED
   1a7a4:	eb00173e 	bl	204a4 <printf>                                 <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &entries);                   
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    while ((rc == 0) && block)                                        
   1a7a8:	e59dc008 	ldr	ip, [sp, #8]                                  
   1a7ac:	e35c0000 	cmp	ip, #0                                        
   1a7b0:	1a0000a1 	bne	1aa3c <rtems_rfs_dir_lookup_ino+0x44c>        
   1a7b4:	e59d3070 	ldr	r3, [sp, #112]	; 0x70                         
   1a7b8:	e3530000 	cmp	r3, #0                                        
   1a7bc:	0a0000b9 	beq	1aaa8 <rtems_rfs_dir_lookup_ino+0x4b8>        
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
   1a7c0:	e3a00301 	mov	r0, #67108864	; 0x4000000                     
   1a7c4:	e3a01000 	mov	r1, #0                                        
   1a7c8:	ebffe018 	bl	12830 <rtems_rfs_trace>                        
   1a7cc:	e3500000 	cmp	r0, #0                                        
   1a7d0:	1a00007b 	bne	1a9c4 <rtems_rfs_dir_lookup_ino+0x3d4>        
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
                rtems_rfs_inode_ino (inode), map.bpos.bno);           
                                                                      
      rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
   1a7d4:	e1a00006 	mov	r0, r6                                        
   1a7d8:	e28d1064 	add	r1, sp, #100	; 0x64                           
   1a7dc:	e59d2070 	ldr	r2, [sp, #112]	; 0x70                         
   1a7e0:	e3a03001 	mov	r3, #1                                        
   1a7e4:	ebfffdbe 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
      if (rc > 0)                                                     
   1a7e8:	e3500000 	cmp	r0, #0                                        
   1a7ec:	e58d0010 	str	r0, [sp, #16]                                 
   1a7f0:	ca00009b 	bgt	1aa64 <rtems_rfs_dir_lookup_ino+0x474>        
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1a7f4:	e5963008 	ldr	r3, [r6, #8]                                  
   1a7f8:	e353000a 	cmp	r3, #10                                       
      /*                                                              
       * Search the block to see if the name matches. A hash of 0xffff or 0x0
       * means the entry is empty.                                    
       */                                                             
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
   1a7fc:	e59d306c 	ldr	r3, [sp, #108]	; 0x6c                         
   1a800:	e593401c 	ldr	r4, [r3, #28]                                 
                                                                      
      map.bpos.boff = 0;                                              
   1a804:	e3a03000 	mov	r3, #0                                        
   1a808:	e58d3028 	str	r3, [sp, #40]	; 0x28                          
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1a80c:	1a000008 	bne	1a834 <rtems_rfs_dir_lookup_ino+0x244>        
   1a810:	eaffffcb 	b	1a744 <rtems_rfs_dir_lookup_ino+0x154>          <== NOT EXECUTED
            rtems_rfs_block_map_close (fs, &map);                     
            return 0;                                                 
          }                                                           
        }                                                             
                                                                      
        map.bpos.boff += elength;                                     
   1a814:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1a818:	e5962008 	ldr	r2, [r6, #8]                                  
            rtems_rfs_block_map_close (fs, &map);                     
            return 0;                                                 
          }                                                           
        }                                                             
                                                                      
        map.bpos.boff += elength;                                     
   1a81c:	e0853003 	add	r3, r5, r3                                    
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1a820:	e242200a 	sub	r2, r2, #10                                   
   1a824:	e1520003 	cmp	r2, r3                                        
            rtems_rfs_block_map_close (fs, &map);                     
            return 0;                                                 
          }                                                           
        }                                                             
                                                                      
        map.bpos.boff += elength;                                     
   1a828:	e58d3028 	str	r3, [sp, #40]	; 0x28                          
        entry += elength;                                             
   1a82c:	e0844005 	add	r4, r4, r5                                    
                                                                      
      entry = rtems_rfs_buffer_data (&entries);                       
                                                                      
      map.bpos.boff = 0;                                              
                                                                      
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
   1a830:	9affffc3 	bls	1a744 <rtems_rfs_dir_lookup_ino+0x154>        
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a834:	e5d41001 	ldrb	r1, [r4, #1]                                 
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
   1a838:	e5d40009 	ldrb	r0, [r4, #9]                                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a83c:	e5d4c000 	ldrb	ip, [r4]                                     
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
   1a840:	e5d45008 	ldrb	r5, [r4, #8]                                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a844:	e5d42003 	ldrb	r2, [r4, #3]                                 
   1a848:	e1a01801 	lsl	r1, r1, #16                                   
   1a84c:	e1811c0c 	orr	r1, r1, ip, lsl #24                           
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
        elength = rtems_rfs_dir_entry_length (entry);                 
   1a850:	e1805405 	orr	r5, r0, r5, lsl #8                            
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
   1a854:	e5d40005 	ldrb	r0, [r4, #5]                                 
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a858:	e1812002 	orr	r2, r1, r2                                    
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
   1a85c:	e5d41004 	ldrb	r1, [r4, #4]                                 
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a860:	e5d43002 	ldrb	r3, [r4, #2]                                 
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
   1a864:	e1a00800 	lsl	r0, r0, #16                                   
   1a868:	e1800c01 	orr	r0, r0, r1, lsl #24                           
   1a86c:	e5d41007 	ldrb	r1, [r4, #7]                                 
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a870:	e1823403 	orr	r3, r2, r3, lsl #8                            
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
   1a874:	e5d42006 	ldrb	r2, [r4, #6]                                 
   1a878:	e1801001 	orr	r1, r0, r1                                    
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
                                                                      
        if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                     
   1a87c:	e1550008 	cmp	r5, r8                                        
      while (map.bpos.boff < (rtems_rfs_fs_block_size (fs) - RTEMS_RFS_DIR_ENTRY_SIZE))
      {                                                               
        uint32_t ehash;                                               
        int      elength;                                             
                                                                      
        ehash  = rtems_rfs_dir_entry_hash (entry);                    
   1a880:	e1811402 	orr	r1, r1, r2, lsl #8                            
        elength = rtems_rfs_dir_entry_length (entry);                 
        *ino = rtems_rfs_dir_entry_ino (entry);                       
   1a884:	e5873000 	str	r3, [r7]                                      
                                                                      
        if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                     
   1a888:	0affffad 	beq	1a744 <rtems_rfs_dir_lookup_ino+0x154>        
          break;                                                      
                                                                      
        if (rtems_rfs_dir_entry_valid (fs, elength, *ino))            
   1a88c:	e355000a 	cmp	r5, #10                                       
   1a890:	da000030 	ble	1a958 <rtems_rfs_dir_lookup_ino+0x368>        
   1a894:	e596c01c 	ldr	ip, [r6, #28]                                 
   1a898:	e155000c 	cmp	r5, ip                                        
   1a89c:	2a00002d 	bcs	1a958 <rtems_rfs_dir_lookup_ino+0x368>        
   1a8a0:	e3530000 	cmp	r3, #0                                        
   1a8a4:	0a00002b 	beq	1a958 <rtems_rfs_dir_lookup_ino+0x368>        
   1a8a8:	e5962014 	ldr	r2, [r6, #20]                                 
   1a8ac:	e1530002 	cmp	r3, r2                                        
   1a8b0:	8a000028 	bhi	1a958 <rtems_rfs_dir_lookup_ino+0x368>        
                    rtems_rfs_inode_ino (inode), elength, *ino, map.bpos.boff);
          rc = EIO;                                                   
          break;                                                      
        }                                                             
                                                                      
        if (ehash == hash)                                            
   1a8b4:	e151000a 	cmp	r1, sl                                        
   1a8b8:	1affffd5 	bne	1a814 <rtems_rfs_dir_lookup_ino+0x224>        
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
   1a8bc:	e3a00302 	mov	r0, #134217728	; 0x8000000                    
   1a8c0:	e3a01000 	mov	r1, #0                                        
   1a8c4:	ebffdfd9 	bl	12830 <rtems_rfs_trace>                        
   1a8c8:	e3500000 	cmp	r0, #0                                        
   1a8cc:	1a00002b 	bne	1a980 <rtems_rfs_dir_lookup_ino+0x390>        
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
                                                                      
          if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
   1a8d0:	e284000a 	add	r0, r4, #10                                   
   1a8d4:	e1a0100b 	mov	r1, fp                                        
   1a8d8:	e1a02009 	mov	r2, r9                                        
   1a8dc:	eb0015cf 	bl	20020 <memcmp>                                 
   1a8e0:	e3500000 	cmp	r0, #0                                        
   1a8e4:	1affffca 	bne	1a814 <rtems_rfs_dir_lookup_ino+0x224>        
          {                                                           
            *offset = rtems_rfs_block_map_pos (fs, &map);             
   1a8e8:	e1a00006 	mov	r0, r6                                        
   1a8ec:	e28d1024 	add	r1, sp, #36	; 0x24                            
   1a8f0:	ebfff963 	bl	18e84 <rtems_rfs_block_get_pos>                
   1a8f4:	e59dc09c 	ldr	ip, [sp, #156]	; 0x9c                         
                                                                      
            if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND))
   1a8f8:	e3a01000 	mov	r1, #0                                        
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
                                                                      
          if (memcmp (entry + RTEMS_RFS_DIR_ENTRY_SIZE, name, length) == 0)
          {                                                           
            *offset = rtems_rfs_block_map_pos (fs, &map);             
   1a8fc:	e58c0000 	str	r0, [ip]                                      
                                                                      
            if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_FOUND))
   1a900:	e3a00201 	mov	r0, #268435456	; 0x10000000                   
   1a904:	ebffdfc9 	bl	12830 <rtems_rfs_trace>                        
   1a908:	e3500000 	cmp	r0, #0                                        
   1a90c:	0a000006 	beq	1a92c <rtems_rfs_dir_lookup_ino+0x33c>        
              printf ("rtems-rfs: dir-lookup-ino: "                   
   1a910:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1a914:	e59c1008 	ldr	r1, [ip, #8]                                  <== NOT EXECUTED
   1a918:	e59dc09c 	ldr	ip, [sp, #156]	; 0x9c                         <== NOT EXECUTED
   1a91c:	e59f01dc 	ldr	r0, [pc, #476]	; 1ab00 <rtems_rfs_dir_lookup_ino+0x510><== NOT EXECUTED
   1a920:	e5972000 	ldr	r2, [r7]                                      <== NOT EXECUTED
   1a924:	e59c3000 	ldr	r3, [ip]                                      <== NOT EXECUTED
   1a928:	eb0016dd 	bl	204a4 <printf>                                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1a92c:	e28d1064 	add	r1, sp, #100	; 0x64                           
   1a930:	e1a00006 	mov	r0, r6                                        
   1a934:	ebfffcf1 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  handle->dirty = false;                                              
   1a938:	e3a03000 	mov	r3, #0                                        
                rtems_rfs_inode_ino (inode), rc, strerror (rc));      
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &entries);                       
  rtems_rfs_block_map_close (fs, &map);                               
   1a93c:	e1a00006 	mov	r0, r6                                        
   1a940:	e28d1014 	add	r1, sp, #20                                   
   1a944:	e5cd3064 	strb	r3, [sp, #100]	; 0x64                        
  handle->bnum  = 0;                                                  
   1a948:	e58d3068 	str	r3, [sp, #104]	; 0x68                         
  handle->buffer = NULL;                                              
   1a94c:	e58d306c 	str	r3, [sp, #108]	; 0x6c                         
   1a950:	ebfff9d2 	bl	190a0 <rtems_rfs_block_map_close>              
  return rc;                                                          
   1a954:	eaffff41 	b	1a660 <rtems_rfs_dir_lookup_ino+0x70>           
        if (elength == RTEMS_RFS_DIR_ENTRY_EMPTY)                     
          break;                                                      
                                                                      
        if (rtems_rfs_dir_entry_valid (fs, elength, *ino))            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
   1a958:	e3a00301 	mov	r0, #67108864	; 0x4000000                     <== NOT EXECUTED
   1a95c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1a960:	ebffdfb2 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1a964:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1a968:	1a00001b 	bne	1a9dc <rtems_rfs_dir_lookup_ino+0x3ec>        <== NOT EXECUTED
            printf ("rtems-rfs: dir-lookup-ino: "                     
                    "block map next block failed in ino %" PRIu32 ": %d: %s\n",
                    rtems_rfs_inode_ino (inode), rc, strerror (rc));  
        }                                                             
        if (rc == ENXIO)                                              
          rc = ENOENT;                                                
   1a96c:	e3a0c005 	mov	ip, #5                                        <== NOT EXECUTED
   1a970:	e58dc010 	str	ip, [sp, #16]                                 <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &entries);                   
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    while ((rc == 0) && block)                                        
   1a974:	e59dc010 	ldr	ip, [sp, #16]                                 
   1a978:	e58dc008 	str	ip, [sp, #8]                                  
   1a97c:	eaffffea 	b	1a92c <rtems_rfs_dir_lookup_ino+0x33c>          
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
   1a980:	e58d5000 	str	r5, [sp]                                      <== NOT EXECUTED
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
   1a984:	e5d40001 	ldrb	r0, [r4, #1]                                 <== NOT EXECUTED
   1a988:	e5d4c000 	ldrb	ip, [r4]                                     <== NOT EXECUTED
   1a98c:	e5d42003 	ldrb	r2, [r4, #3]                                 <== NOT EXECUTED
   1a990:	e1a00800 	lsl	r0, r0, #16                                   <== NOT EXECUTED
   1a994:	e5d43002 	ldrb	r3, [r4, #2]                                 <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
   1a998:	e59de00c 	ldr	lr, [sp, #12]                                 <== NOT EXECUTED
                    "checking entry for ino %" PRId32 ": bno=%04" PRIx32 "/off=%04" PRIx32
                    " length:%d ino:%" PRId32 "\n",                   
                    rtems_rfs_inode_ino (inode), map.bpos.bno, map.bpos.boff,
                    elength, rtems_rfs_dir_entry_ino (entry));        
   1a99c:	e180cc0c 	orr	ip, r0, ip, lsl #24                           <== NOT EXECUTED
   1a9a0:	e18cc002 	orr	ip, ip, r2                                    <== NOT EXECUTED
        }                                                             
                                                                      
        if (ehash == hash)                                            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO_CHECK)) 
            printf ("rtems-rfs: dir-lookup-ino: "                     
   1a9a4:	e28d2024 	add	r2, sp, #36	; 0x24                            <== NOT EXECUTED
   1a9a8:	e18cc403 	orr	ip, ip, r3, lsl #8                            <== NOT EXECUTED
   1a9ac:	e59e1008 	ldr	r1, [lr, #8]                                  <== NOT EXECUTED
   1a9b0:	e892000c 	ldm	r2, {r2, r3}                                  <== NOT EXECUTED
   1a9b4:	e59f0148 	ldr	r0, [pc, #328]	; 1ab04 <rtems_rfs_dir_lookup_ino+0x514><== NOT EXECUTED
   1a9b8:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
   1a9bc:	eb0016b8 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a9c0:	eaffffc2 	b	1a8d0 <rtems_rfs_dir_lookup_ino+0x2e0>          <== NOT EXECUTED
    while ((rc == 0) && block)                                        
    {                                                                 
      uint8_t* entry;                                                 
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " bno=%" PRId32 "\n",
   1a9c4:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1a9c8:	e59d2024 	ldr	r2, [sp, #36]	; 0x24                          <== NOT EXECUTED
   1a9cc:	e59c1008 	ldr	r1, [ip, #8]                                  <== NOT EXECUTED
   1a9d0:	e59f0130 	ldr	r0, [pc, #304]	; 1ab08 <rtems_rfs_dir_lookup_ino+0x518><== NOT EXECUTED
   1a9d4:	eb0016b2 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a9d8:	eaffff7d 	b	1a7d4 <rtems_rfs_dir_lookup_ino+0x1e4>          <== NOT EXECUTED
          break;                                                      
                                                                      
        if (rtems_rfs_dir_entry_valid (fs, elength, *ino))            
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
   1a9dc:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1a9e0:	e59c1008 	ldr	r1, [ip, #8]                                  <== NOT EXECUTED
   1a9e4:	e59dc028 	ldr	ip, [sp, #40]	; 0x28                          <== NOT EXECUTED
   1a9e8:	e5973000 	ldr	r3, [r7]                                      <== NOT EXECUTED
   1a9ec:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   1a9f0:	e59f0114 	ldr	r0, [pc, #276]	; 1ab0c <rtems_rfs_dir_lookup_ino+0x51c><== NOT EXECUTED
   1a9f4:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   1a9f8:	eb0016a9 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1a9fc:	eaffffda 	b	1a96c <rtems_rfs_dir_lookup_ino+0x37c>          <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_block_map_open (fs, inode, &map);                    
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))             
      printf ("rtems-rfs: dir-lookup-ino: map open failed for ino %" PRIu32 ": %d: %s",
   1aa00:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1aa04:	e59d0008 	ldr	r0, [sp, #8]                                  <== NOT EXECUTED
   1aa08:	e59c4008 	ldr	r4, [ip, #8]                                  <== NOT EXECUTED
   1aa0c:	eb001b52 	bl	2175c <strerror>                               <== NOT EXECUTED
   1aa10:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   1aa14:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1aa18:	e59d2008 	ldr	r2, [sp, #8]                                  <== NOT EXECUTED
   1aa1c:	e59f00ec 	ldr	r0, [pc, #236]	; 1ab10 <rtems_rfs_dir_lookup_ino+0x520><== NOT EXECUTED
   1aa20:	eb00169f 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1aa24:	eaffff0d 	b	1a660 <rtems_rfs_dir_lookup_ino+0x70>           <== NOT EXECUTED
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))       
            printf ("rtems-rfs: dir-lookup-ino: "                     
                    "block map next block failed in ino %" PRIu32 ": %d: %s\n",
                    rtems_rfs_inode_ino (inode), rc, strerror (rc));  
        }                                                             
        if (rc == ENXIO)                                              
   1aa28:	e59dc008 	ldr	ip, [sp, #8]                                  
   1aa2c:	e35c0006 	cmp	ip, #6                                        
   1aa30:	1affff5c 	bne	1a7a8 <rtems_rfs_dir_lookup_ino+0x1b8>        
          rc = ENOENT;                                                
   1aa34:	e3a0c002 	mov	ip, #2                                        
   1aa38:	e58dc008 	str	ip, [sp, #8]                                  
      rtems_rfs_buffer_handle_close (fs, &entries);                   
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    while ((rc == 0) && block)                                        
   1aa3c:	e59dc008 	ldr	ip, [sp, #8]                                  
   1aa40:	e58dc010 	str	ip, [sp, #16]                                 
   1aa44:	eaffffca 	b	1a974 <rtems_rfs_dir_lookup_ino+0x384>          
     */                                                               
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block map find failed: %d: %s\n",
   1aa48:	e59d0008 	ldr	r0, [sp, #8]                                  <== NOT EXECUTED
   1aa4c:	eb001b42 	bl	2175c <strerror>                               <== NOT EXECUTED
   1aa50:	e59d1008 	ldr	r1, [sp, #8]                                  <== NOT EXECUTED
   1aa54:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1aa58:	e59f00b4 	ldr	r0, [pc, #180]	; 1ab14 <rtems_rfs_dir_lookup_ino+0x524><== NOT EXECUTED
   1aa5c:	eb001690 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1aa60:	eaffff28 	b	1a708 <rtems_rfs_dir_lookup_ino+0x118>          <== NOT EXECUTED
                rtems_rfs_inode_ino (inode), map.bpos.bno);           
                                                                      
      rc = rtems_rfs_buffer_handle_request (fs, &entries, block, true);
      if (rc > 0)                                                     
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))         
   1aa64:	e3a00301 	mov	r0, #67108864	; 0x4000000                     <== NOT EXECUTED
   1aa68:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1aa6c:	ebffdf6f 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1aa70:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1aa74:	0affffbe 	beq	1a974 <rtems_rfs_dir_lookup_ino+0x384>        <== NOT EXECUTED
          printf ("rtems-rfs: dir-lookup-ino: block read, ino=%" PRIu32 " block=%" PRId32 ": %d: %s\n",
   1aa78:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1aa7c:	e59d0010 	ldr	r0, [sp, #16]                                 <== NOT EXECUTED
   1aa80:	e59c5008 	ldr	r5, [ip, #8]                                  <== NOT EXECUTED
   1aa84:	e59d4070 	ldr	r4, [sp, #112]	; 0x70                         <== NOT EXECUTED
   1aa88:	eb001b33 	bl	2175c <strerror>                               <== NOT EXECUTED
   1aa8c:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1aa90:	e58d0000 	str	r0, [sp]                                      <== NOT EXECUTED
   1aa94:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   1aa98:	e59d3010 	ldr	r3, [sp, #16]                                 <== NOT EXECUTED
   1aa9c:	e59f0074 	ldr	r0, [pc, #116]	; 1ab18 <rtems_rfs_dir_lookup_ino+0x528><== NOT EXECUTED
   1aaa0:	eb00167f 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1aaa4:	eaffffb2 	b	1a974 <rtems_rfs_dir_lookup_ino+0x384>          <== NOT EXECUTED
    }                                                                 
                                                                      
    if ((rc == 0) && (block == 0))                                    
    {                                                                 
      rc = EIO;                                                       
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
   1aaa8:	e3a00301 	mov	r0, #67108864	; 0x4000000                     <== NOT EXECUTED
   1aaac:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1aab0:	ebffdf5e 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1aab4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1aab8:	1a000002 	bne	1aac8 <rtems_rfs_dir_lookup_ino+0x4d8>        <== NOT EXECUTED
      }                                                               
    }                                                                 
                                                                      
    if ((rc == 0) && (block == 0))                                    
    {                                                                 
      rc = EIO;                                                       
   1aabc:	e3a0c005 	mov	ip, #5                                        <== NOT EXECUTED
   1aac0:	e58dc008 	str	ip, [sp, #8]                                  <== NOT EXECUTED
   1aac4:	eaffff98 	b	1a92c <rtems_rfs_dir_lookup_ino+0x33c>          <== NOT EXECUTED
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_LOOKUP_INO))           
        printf ("rtems-rfs: dir-lookup-ino: block is 0 in ino %" PRIu32 ": %d: %s\n",
   1aac8:	e59dc00c 	ldr	ip, [sp, #12]                                 <== NOT EXECUTED
   1aacc:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
   1aad0:	e59c4008 	ldr	r4, [ip, #8]                                  <== NOT EXECUTED
   1aad4:	eb001b20 	bl	2175c <strerror>                               <== NOT EXECUTED
   1aad8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   1aadc:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1aae0:	e3a02005 	mov	r2, #5                                        <== NOT EXECUTED
   1aae4:	e59f0030 	ldr	r0, [pc, #48]	; 1ab1c <rtems_rfs_dir_lookup_ino+0x52c><== NOT EXECUTED
   1aae8:	eb00166d 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1aaec:	eafffff2 	b	1aabc <rtems_rfs_dir_lookup_ino+0x4cc>          <== NOT EXECUTED
                                                                      

0001b3b8 <rtems_rfs_dir_read>: rtems_rfs_dir_read (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* dir, rtems_rfs_pos_rel offset, struct dirent* dirent, size_t* length) {
   1b3b8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1b3bc:	e1a05000 	mov	r5, r0                                        
   1b3c0:	e24dd06c 	sub	sp, sp, #108	; 0x6c                           
   1b3c4:	e1a0b001 	mov	fp, r1                                        
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
   1b3c8:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 
   1b3cc:	e3a01000 	mov	r1, #0                                        
rtems_rfs_dir_read (rtems_rfs_file_system*  fs,                       
                    rtems_rfs_inode_handle* dir,                      
                    rtems_rfs_pos_rel       offset,                   
                    struct dirent*          dirent,                   
                    size_t*                 length)                   
{                                                                     
   1b3d0:	e98d000c 	stmib	sp, {r2, r3}                                
   1b3d4:	e59d8094 	ldr	r8, [sp, #148]	; 0x94                         
  rtems_rfs_block_map     map;                                        
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
   1b3d8:	ebffdd14 	bl	12830 <rtems_rfs_trace>                        
   1b3dc:	e3500000 	cmp	r0, #0                                        
   1b3e0:	1a000026 	bne	1b480 <rtems_rfs_dir_read+0xc8>               
    printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
            rtems_rfs_inode_ino (dir), offset);                       
                                                                      
  *length = 0;                                                        
   1b3e4:	e3a03000 	mov	r3, #0                                        
   1b3e8:	e5883000 	str	r3, [r8]                                      
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
   1b3ec:	e1a00005 	mov	r0, r5                                        
   1b3f0:	e1a0100b 	mov	r1, fp                                        
   1b3f4:	e28d200c 	add	r2, sp, #12                                   
   1b3f8:	ebfff6ce 	bl	18f38 <rtems_rfs_block_map_open>               
  if (rc > 0)                                                         
   1b3fc:	e2504000 	subs	r4, r0, #0                                   
   1b400:	da000002 	ble	1b410 <rtems_rfs_dir_read+0x58>               
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
  return rc;                                                          
}                                                                     
   1b404:	e1a00004 	mov	r0, r4                                        
   1b408:	e28dd06c 	add	sp, sp, #108	; 0x6c                           
   1b40c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  if (((rtems_rfs_fs_block_size (fs) -                                
        (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
   1b410:	e5953008 	ldr	r3, [r5, #8]                                  
   1b414:	e3a07000 	mov	r7, #0                                        
   1b418:	e1a02003 	mov	r2, r3                                        
   1b41c:	e1a06003 	mov	r6, r3                                        
   1b420:	e99d0003 	ldmib	sp, {r0, r1}                                
   1b424:	e1a03007 	mov	r3, r7                                        
   1b428:	eb004ad9 	bl	2df94 <__moddi3>                               
                                                                      
  rc = rtems_rfs_block_map_open (fs, dir, &map);                      
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  if (((rtems_rfs_fs_block_size (fs) -                                
   1b42c:	e1a02006 	mov	r2, r6                                        
   1b430:	e1a03007 	mov	r3, r7                                        
   1b434:	e0522000 	subs	r2, r2, r0                                   
   1b438:	e0c33001 	sbc	r3, r3, r1                                    
   1b43c:	e352000b 	cmp	r2, #11                                       
   1b440:	e2d30000 	sbcs	r0, r3, #0                                   
   1b444:	ba000012 	blt	1b494 <rtems_rfs_dir_read+0xdc>               
        (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
    offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) *         
              rtems_rfs_fs_block_size (fs));                          
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
   1b448:	e28de068 	add	lr, sp, #104	; 0x68                           
   1b44c:	e1a00005 	mov	r0, r5                                        
   1b450:	e28d100c 	add	r1, sp, #12                                   
   1b454:	e99d000c 	ldmib	sp, {r2, r3}                                
   1b458:	e58de000 	str	lr, [sp]                                      
   1b45c:	ebfff7dc 	bl	193d4 <rtems_rfs_block_map_seek>               
  if (rc > 0)                                                         
   1b460:	e2504000 	subs	r4, r0, #0                                   
   1b464:	da000017 	ble	1b4c8 <rtems_rfs_dir_read+0x110>              
  {                                                                   
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
   1b468:	e3540006 	cmp	r4, #6                                        <== NOT EXECUTED
    rtems_rfs_block_map_close (fs, &map);                             
   1b46c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1b470:	e28d100c 	add	r1, sp, #12                                   <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_block_map_seek (fs, &map, offset, &block);           
  if (rc > 0)                                                         
  {                                                                   
    if (rc == ENXIO)                                                  
      rc = ENOENT;                                                    
   1b474:	03a04002 	moveq	r4, #2                                      <== NOT EXECUTED
    rtems_rfs_block_map_close (fs, &map);                             
   1b478:	ebfff708 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
    return rc;                                                        
   1b47c:	eaffffe0 	b	1b404 <rtems_rfs_dir_read+0x4c>                 <== NOT EXECUTED
  rtems_rfs_buffer_handle buffer;                                     
  rtems_rfs_block_no      block;                                      
  int                     rc;                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                     
    printf ("rtems-rfs: dir-read: dir=%" PRId32 " offset=%" PRId64 "\n",
   1b480:	e59b1008 	ldr	r1, [fp, #8]                                  <== NOT EXECUTED
   1b484:	e99d000c 	ldmib	sp, {r2, r3}                                <== NOT EXECUTED
   1b488:	e59f028c 	ldr	r0, [pc, #652]	; 1b71c <rtems_rfs_dir_read+0x364><== NOT EXECUTED
   1b48c:	eb001404 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1b490:	eaffffd3 	b	1b3e4 <rtems_rfs_dir_read+0x2c>                 <== NOT EXECUTED
  if (rc > 0)                                                         
    return rc;                                                        
                                                                      
  if (((rtems_rfs_fs_block_size (fs) -                                
        (offset % rtems_rfs_fs_block_size (fs))) <= RTEMS_RFS_DIR_ENTRY_SIZE))
    offset = (((offset / rtems_rfs_fs_block_size (fs)) + 1) *         
   1b494:	e99d0003 	ldmib	sp, {r0, r1}                                <== NOT EXECUTED
   1b498:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   1b49c:	e1a03007 	mov	r3, r7                                        <== NOT EXECUTED
   1b4a0:	eb004980 	bl	2daa8 <__divdi3>                               <== NOT EXECUTED
   1b4a4:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
   1b4a8:	e0922000 	adds	r2, r2, r0                                   <== NOT EXECUTED
   1b4ac:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   1b4b0:	e0a33001 	adc	r3, r3, r1                                    <== NOT EXECUTED
   1b4b4:	e0810296 	umull	r0, r1, r6, r2                              <== NOT EXECUTED
   1b4b8:	e02c1396 	mla	ip, r6, r3, r1                                <== NOT EXECUTED
   1b4bc:	e98d0003 	stmib	sp, {r0, r1}                                <== NOT EXECUTED
   1b4c0:	e58dc008 	str	ip, [sp, #8]                                  <== NOT EXECUTED
   1b4c4:	eaffffdf 	b	1b448 <rtems_rfs_dir_read+0x90>                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1b4c8:	e3a03000 	mov	r3, #0                                        
   1b4cc:	e5cd305c 	strb	r3, [sp, #92]	; 0x5c                         
  handle->bnum  = 0;                                                  
   1b4d0:	e58d3060 	str	r3, [sp, #96]	; 0x60                          
  handle->buffer = NULL;                                              
   1b4d4:	e58d3064 	str	r3, [sp, #100]	; 0x64                         
    uint8_t*      entry;                                              
    rtems_rfs_ino eino;                                               
    int           elength;                                            
    int           remaining;                                          
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
   1b4d8:	e28d105c 	add	r1, sp, #92	; 0x5c                            
   1b4dc:	e59d2068 	ldr	r2, [sp, #104]	; 0x68                         
   1b4e0:	e3a03001 	mov	r3, #1                                        
   1b4e4:	e1a00005 	mov	r0, r5                                        
   1b4e8:	ebfffa7d 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
    if (rc > 0)                                                       
   1b4ec:	e2504000 	subs	r4, r0, #0                                   
      break;                                                          
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
   1b4f0:	e3a01000 	mov	r1, #0                                        
   1b4f4:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 
    rtems_rfs_ino eino;                                               
    int           elength;                                            
    int           remaining;                                          
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, true);  
    if (rc > 0)                                                       
   1b4f8:	ca00002f 	bgt	1b5bc <rtems_rfs_dir_read+0x204>              
      rtems_rfs_buffer_handle_close (fs, &buffer);                    
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
   1b4fc:	e59d3064 	ldr	r3, [sp, #100]	; 0x64                         
    entry += map.bpos.boff;                                           
   1b500:	e59d7020 	ldr	r7, [sp, #32]                                 
      rtems_rfs_buffer_handle_close (fs, &buffer);                    
      rtems_rfs_block_map_close (fs, &map);                           
      return rc;                                                      
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
   1b504:	e593301c 	ldr	r3, [r3, #28]                                 
    entry += map.bpos.boff;                                           
   1b508:	e0836007 	add	r6, r3, r7                                    
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
   1b50c:	e5d6e009 	ldrb	lr, [r6, #9]                                 
    eino    = rtems_rfs_dir_entry_ino (entry);                        
   1b510:	e5d6c001 	ldrb	ip, [r6, #1]                                 
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
   1b514:	e5d62008 	ldrb	r2, [r6, #8]                                 
    eino    = rtems_rfs_dir_entry_ino (entry);                        
   1b518:	e7d3a007 	ldrb	sl, [r3, r7]                                 
    }                                                                 
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
   1b51c:	e18e2402 	orr	r2, lr, r2, lsl #8                            
    eino    = rtems_rfs_dir_entry_ino (entry);                        
   1b520:	e5d69003 	ldrb	r9, [r6, #3]                                 
   1b524:	e1a0c80c 	lsl	ip, ip, #16                                   
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
   1b528:	e59fe1f0 	ldr	lr, [pc, #496]	; 1b720 <rtems_rfs_dir_read+0x368>
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
   1b52c:	e5d63002 	ldrb	r3, [r6, #2]                                 
   1b530:	e18ccc0a 	orr	ip, ip, sl, lsl #24                           
   1b534:	e18cc009 	orr	ip, ip, r9                                    
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
   1b538:	e152000e 	cmp	r2, lr                                        
                                                                      
    entry  = rtems_rfs_buffer_data (&buffer);                         
    entry += map.bpos.boff;                                           
                                                                      
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
   1b53c:	e18cc403 	orr	ip, ip, r3, lsl #8                            
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
   1b540:	1a000028 	bne	1b5e8 <rtems_rfs_dir_read+0x230>              
        printf ("rtems-rfs: dir-read: found off:%" PRIooff_t " ino:%ld name=%s\n",
                dirent->d_off, dirent->d_ino, dirent->d_name);        
      break;                                                          
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
   1b544:	e5952008 	ldr	r2, [r5, #8]                                  
   1b548:	e5983000 	ldr	r3, [r8]                                      
   1b54c:	e0677002 	rsb	r7, r7, r2                                    
   1b550:	e0833007 	add	r3, r3, r7                                    
   1b554:	e5883000 	str	r3, [r8]                                      
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
   1b558:	ebffdcb4 	bl	12830 <rtems_rfs_trace>                        
   1b55c:	e3500000 	cmp	r0, #0                                        
   1b560:	1a000009 	bne	1b58c <rtems_rfs_dir_read+0x1d4>              
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
   1b564:	e1a00005 	mov	r0, r5                                        
   1b568:	e28d100c 	add	r1, sp, #12                                   
   1b56c:	e28d2068 	add	r2, sp, #104	; 0x68                           
   1b570:	ebfff7b6 	bl	19450 <rtems_rfs_block_map_next_block>         
    if (rc == ENXIO)                                                  
   1b574:	e3500006 	cmp	r0, #6                                        
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
   1b578:	e1a04000 	mov	r4, r0                                        
    if (rc == ENXIO)                                                  
   1b57c:	0a00000d 	beq	1b5b8 <rtems_rfs_dir_read+0x200>              
                                                                      
  /*                                                                  
   * Look for an empty entry and if this is the last block that is the end of
   * the directory.                                                   
   */                                                                 
  while (rc == 0)                                                     
   1b580:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1b584:	0affffd3 	beq	1b4d8 <rtems_rfs_dir_read+0x120>              <== NOT EXECUTED
   1b588:	ea00000b 	b	1b5bc <rtems_rfs_dir_read+0x204>                <== NOT EXECUTED
    }                                                                 
                                                                      
    *length += rtems_rfs_fs_block_size (fs) - map.bpos.boff;          
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
   1b58c:	e99d0006 	ldmib	sp, {r1, r2}                                <== NOT EXECUTED
   1b590:	e5983000 	ldr	r3, [r8]                                      <== NOT EXECUTED
   1b594:	e59f0188 	ldr	r0, [pc, #392]	; 1b724 <rtems_rfs_dir_read+0x36c><== NOT EXECUTED
   1b598:	eb0013c1 	bl	204a4 <printf>                                 <== NOT EXECUTED
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
   1b59c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1b5a0:	e28d100c 	add	r1, sp, #12                                   <== NOT EXECUTED
   1b5a4:	e28d2068 	add	r2, sp, #104	; 0x68                           <== NOT EXECUTED
   1b5a8:	ebfff7a8 	bl	19450 <rtems_rfs_block_map_next_block>         <== NOT EXECUTED
    if (rc == ENXIO)                                                  
   1b5ac:	e3500006 	cmp	r0, #6                                        <== NOT EXECUTED
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                   
      printf ("rtems-rfs: dir-read: next block: off:%" PRId64 " length:%zd\n",
              offset, *length);                                       
                                                                      
    rc = rtems_rfs_block_map_next_block (fs, &map, &block);           
   1b5b0:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
    if (rc == ENXIO)                                                  
   1b5b4:	1afffff1 	bne	1b580 <rtems_rfs_dir_read+0x1c8>              <== NOT EXECUTED
      rc = ENOENT;                                                    
   1b5b8:	e3a04002 	mov	r4, #2                                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1b5bc:	e28d105c 	add	r1, sp, #92	; 0x5c                            
   1b5c0:	e1a00005 	mov	r0, r5                                        
   1b5c4:	ebfff9cd 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  handle->dirty = false;                                              
   1b5c8:	e3a03000 	mov	r3, #0                                        
  }                                                                   
                                                                      
  rtems_rfs_buffer_handle_close (fs, &buffer);                        
  rtems_rfs_block_map_close (fs, &map);                               
   1b5cc:	e1a00005 	mov	r0, r5                                        
   1b5d0:	e28d100c 	add	r1, sp, #12                                   
   1b5d4:	e5cd305c 	strb	r3, [sp, #92]	; 0x5c                         
  handle->bnum  = 0;                                                  
   1b5d8:	e58d3060 	str	r3, [sp, #96]	; 0x60                          
  handle->buffer = NULL;                                              
   1b5dc:	e58d3064 	str	r3, [sp, #100]	; 0x64                         
   1b5e0:	ebfff6ae 	bl	190a0 <rtems_rfs_block_map_close>              
  return rc;                                                          
   1b5e4:	eaffff86 	b	1b404 <rtems_rfs_dir_read+0x4c>                 
    elength = rtems_rfs_dir_entry_length (entry);                     
    eino    = rtems_rfs_dir_entry_ino (entry);                        
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
    {                                                                 
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
   1b5e8:	e352000a 	cmp	r2, #10                                       
   1b5ec:	e1a0a002 	mov	sl, r2                                        
   1b5f0:	e1a0900c 	mov	r9, ip                                        
   1b5f4:	da000008 	ble	1b61c <rtems_rfs_dir_read+0x264>              
   1b5f8:	e595101c 	ldr	r1, [r5, #28]                                 
   1b5fc:	e35c0000 	cmp	ip, #0                                        
   1b600:	11520001 	cmpne	r2, r1                                      
   1b604:	33a01000 	movcc	r1, #0                                      
   1b608:	23a01001 	movcs	r1, #1                                      
   1b60c:	2a000002 	bcs	1b61c <rtems_rfs_dir_read+0x264>              
   1b610:	e5953014 	ldr	r3, [r5, #20]                                 
   1b614:	e153000c 	cmp	r3, ip                                        
   1b618:	2a00000e 	bcs	1b658 <rtems_rfs_dir_read+0x2a0>              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))               
   1b61c:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 <== NOT EXECUTED
   1b620:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1b624:	ebffdc81 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1b628:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
          printf ("rtems-rfs: dir-read: "                             
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
                  rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
        rc = EIO;                                                     
   1b62c:	03a04005 	moveq	r4, #5                                      <== NOT EXECUTED
                                                                      
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
    {                                                                 
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))               
   1b630:	0affffe1 	beq	1b5bc <rtems_rfs_dir_read+0x204>              <== NOT EXECUTED
          printf ("rtems-rfs: dir-read: "                             
   1b634:	e59dc020 	ldr	ip, [sp, #32]                                 <== NOT EXECUTED
   1b638:	e59b1008 	ldr	r1, [fp, #8]                                  <== NOT EXECUTED
   1b63c:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
   1b640:	e1a03009 	mov	r3, r9                                        <== NOT EXECUTED
   1b644:	e59f00dc 	ldr	r0, [pc, #220]	; 1b728 <rtems_rfs_dir_read+0x370><== NOT EXECUTED
   1b648:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
                  "bad length or ino for ino %" PRIu32 ": %u/%" PRId32 " @ %04" PRIx32 "\n",
                  rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
        rc = EIO;                                                     
   1b64c:	e3a04005 	mov	r4, #5                                        <== NOT EXECUTED
    if (elength != RTEMS_RFS_DIR_ENTRY_EMPTY)                         
    {                                                                 
      if (rtems_rfs_dir_entry_valid (fs, elength, eino))              
      {                                                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))               
          printf ("rtems-rfs: dir-read: "                             
   1b650:	eb001393 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1b654:	eaffffd8 	b	1b5bc <rtems_rfs_dir_read+0x204>                <== NOT EXECUTED
                  rtems_rfs_inode_ino (dir), elength, eino, map.bpos.boff);
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      memset (dirent, 0, sizeof (struct dirent));                     
   1b658:	e3a09e11 	mov	r9, #272	; 0x110                              
   1b65c:	e1a02009 	mov	r2, r9                                        
   1b660:	e59d0090 	ldr	r0, [sp, #144]	; 0x90                         
   1b664:	eb00131d 	bl	202e0 <memset>                                 
      dirent->d_off = offset;                                         
      dirent->d_reclen = sizeof (struct dirent);                      
                                                                      
      *length += elength;                                             
   1b668:	e5983000 	ldr	r3, [r8]                                      
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      memset (dirent, 0, sizeof (struct dirent));                     
      dirent->d_off = offset;                                         
   1b66c:	e99d0003 	ldmib	sp, {r0, r1}                                
   1b670:	e59dc090 	ldr	ip, [sp, #144]	; 0x90                         
      dirent->d_reclen = sizeof (struct dirent);                      
                                                                      
      *length += elength;                                             
   1b674:	e08a3003 	add	r3, sl, r3                                    
        rc = EIO;                                                     
        break;                                                        
      }                                                               
                                                                      
      memset (dirent, 0, sizeof (struct dirent));                     
      dirent->d_off = offset;                                         
   1b678:	e98c0003 	stmib	ip, {r0, r1}                                
      dirent->d_reclen = sizeof (struct dirent);                      
   1b67c:	e1cc90bc 	strh	r9, [ip, #12]                                
                                                                      
      *length += elength;                                             
   1b680:	e5883000 	str	r3, [r8]                                      
                                                                      
      remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength);
   1b684:	e5952008 	ldr	r2, [r5, #8]                                  
   1b688:	e0672002 	rsb	r2, r7, r2                                    
   1b68c:	e06a2002 	rsb	r2, sl, r2                                    
                                                                      
      if (remaining <= RTEMS_RFS_DIR_ENTRY_SIZE)                      
   1b690:	e352000a 	cmp	r2, #10                                       
        *length += remaining;                                         
   1b694:	d0823003 	addle	r3, r2, r3                                  
                                                                      
      elength -= RTEMS_RFS_DIR_ENTRY_SIZE;                            
      if (elength > NAME_MAX)                                         
        elength = NAME_MAX;                                           
                                                                      
      memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
   1b698:	e59dc090 	ldr	ip, [sp, #144]	; 0x90                         
      *length += elength;                                             
                                                                      
      remaining = rtems_rfs_fs_block_size (fs) - (map.bpos.boff + elength);
                                                                      
      if (remaining <= RTEMS_RFS_DIR_ENTRY_SIZE)                      
        *length += remaining;                                         
   1b69c:	d5883000 	strle	r3, [r8]                                    
                                                                      
      elength -= RTEMS_RFS_DIR_ENTRY_SIZE;                            
   1b6a0:	e24a800a 	sub	r8, sl, #10                                   
   1b6a4:	e35800ff 	cmp	r8, #255	; 0xff                               
   1b6a8:	a3a080ff 	movge	r8, #255	; 0xff                             
      if (elength > NAME_MAX)                                         
        elength = NAME_MAX;                                           
                                                                      
      memcpy (dirent->d_name, entry + RTEMS_RFS_DIR_ENTRY_SIZE, elength);
   1b6ac:	e28c7010 	add	r7, ip, #16                                   
   1b6b0:	e286100a 	add	r1, r6, #10                                   
   1b6b4:	e1a02008 	mov	r2, r8                                        
   1b6b8:	e1a00007 	mov	r0, r7                                        
   1b6bc:	eb001284 	bl	200d4 <memcpy>                                 
                                                                      
      dirent->d_ino = rtems_rfs_dir_entry_ino (entry);                
   1b6c0:	e5d61001 	ldrb	r1, [r6, #1]                                 
   1b6c4:	e5d60000 	ldrb	r0, [r6]                                     
   1b6c8:	e5d63003 	ldrb	r3, [r6, #3]                                 
   1b6cc:	e1a01801 	lsl	r1, r1, #16                                   
   1b6d0:	e5d62002 	ldrb	r2, [r6, #2]                                 
   1b6d4:	e1811c00 	orr	r1, r1, r0, lsl #24                           
   1b6d8:	e59dc090 	ldr	ip, [sp, #144]	; 0x90                         
   1b6dc:	e1813003 	orr	r3, r1, r3                                    
   1b6e0:	e1833402 	orr	r3, r3, r2, lsl #8                            
   1b6e4:	e58c3000 	str	r3, [ip]                                      
      dirent->d_namlen = elength;                                     
   1b6e8:	e1cc80be 	strh	r8, [ip, #14]                                
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_DIR_READ))                 
   1b6ec:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 
   1b6f0:	e3a01000 	mov	r1, #0                                        
   1b6f4:	ebffdc4d 	bl	12830 <rtems_rfs_trace>                        
   1b6f8:	e3500000 	cmp	r0, #0                                        
   1b6fc:	0affffae 	beq	1b5bc <rtems_rfs_dir_read+0x204>              
        printf ("rtems-rfs: dir-read: found off:%" PRIooff_t " ino:%ld name=%s\n",
   1b700:	e59dc090 	ldr	ip, [sp, #144]	; 0x90                         <== NOT EXECUTED
   1b704:	e59f0020 	ldr	r0, [pc, #32]	; 1b72c <rtems_rfs_dir_read+0x374><== NOT EXECUTED
   1b708:	e99c0006 	ldmib	ip, {r1, r2}                                <== NOT EXECUTED
   1b70c:	e59c3000 	ldr	r3, [ip]                                      <== NOT EXECUTED
   1b710:	e58d7000 	str	r7, [sp]                                      <== NOT EXECUTED
   1b714:	eb001362 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1b718:	eaffffa7 	b	1b5bc <rtems_rfs_dir_read+0x204>                <== NOT EXECUTED
                                                                      

0001bcac <rtems_rfs_file_close>: } int rtems_rfs_file_close (rtems_rfs_file_system* fs, rtems_rfs_file_handle* handle) {
   1bcac:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
   1bcb0:	e1a06000 	mov	r6, r0                                        
   1bcb4:	e1a04001 	mov	r4, r1                                        
  int rrc;                                                            
  int rc;                                                             
                                                                      
  rrc = 0;                                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                   
   1bcb8:	e3a00000 	mov	r0, #0                                        
   1bcbc:	e3a01010 	mov	r1, #16                                       
   1bcc0:	ebffdada 	bl	12830 <rtems_rfs_trace>                        
   1bcc4:	e3500000 	cmp	r0, #0                                        
   1bcc8:	1a00007d 	bne	1bec4 <rtems_rfs_file_close+0x218>            
    printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",        
            handle->shared->inode.ino);                               
                                                                      
  if (handle->shared->references > 0)                                 
   1bccc:	e594101c 	ldr	r1, [r4, #28]                                 
   1bcd0:	e5913008 	ldr	r3, [r1, #8]                                  
   1bcd4:	e3530000 	cmp	r3, #0                                        
    handle->shared->references--;                                     
   1bcd8:	c2433001 	subgt	r3, r3, #1                                  
   1bcdc:	c5813008 	strgt	r3, [r1, #8]                                
                                                                      
  if (handle->shared->references == 0)                                
   1bce0:	e3530000 	cmp	r3, #0                                        
   1bce4:	1a00006b 	bne	1be98 <rtems_rfs_file_close+0x1ec>            
  {                                                                   
    if (!rtems_rfs_inode_is_loaded (&handle->shared->inode))          
   1bce8:	e5913018 	ldr	r3, [r1, #24]                                 
   1bcec:	e3530000 	cmp	r3, #0                                        
   1bcf0:	0a00009d 	beq	1bf6c <rtems_rfs_file_close+0x2c0>            
    if (rrc == 0)                                                     
    {                                                                 
      /*                                                              
       * @todo This could be clever and only update if different.     
       */                                                             
      rtems_rfs_inode_set_atime (&handle->shared->inode,              
   1bcf4:	e591208c 	ldr	r2, [r1, #140]	; 0x8c                         
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
   1bcf8:	e1a00c22 	lsr	r0, r2, #24                                   
   1bcfc:	e5c30010 	strb	r0, [r3, #16]                                
   1bd00:	e5913018 	ldr	r3, [r1, #24]                                 
   1bd04:	e1a00822 	lsr	r0, r2, #16                                   
   1bd08:	e5c30011 	strb	r0, [r3, #17]                                
   1bd0c:	e5913018 	ldr	r3, [r1, #24]                                 
   1bd10:	e1a00422 	lsr	r0, r2, #8                                    
   1bd14:	e5c30012 	strb	r0, [r3, #18]                                
   1bd18:	e5913018 	ldr	r3, [r1, #24]                                 
   1bd1c:	e5c32013 	strb	r2, [r3, #19]                                
                                 handle->shared->atime);              
      rtems_rfs_inode_set_mtime (&handle->shared->inode,              
   1bd20:	e594201c 	ldr	r2, [r4, #28]                                 
   1bd24:	e5923090 	ldr	r3, [r2, #144]	; 0x90                         
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   1bd28:	e592c018 	ldr	ip, [r2, #24]                                 
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1bd2c:	e3a00001 	mov	r0, #1                                        
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   1bd30:	e1a0ec23 	lsr	lr, r3, #24                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1bd34:	e5c1001c 	strb	r0, [r1, #28]                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   1bd38:	e5cce014 	strb	lr, [ip, #20]                                
   1bd3c:	e5921018 	ldr	r1, [r2, #24]                                 
   1bd40:	e1a0c823 	lsr	ip, r3, #16                                   
   1bd44:	e5c1c015 	strb	ip, [r1, #21]                                
   1bd48:	e5921018 	ldr	r1, [r2, #24]                                 
   1bd4c:	e1a0c423 	lsr	ip, r3, #8                                    
   1bd50:	e5c1c016 	strb	ip, [r1, #22]                                
   1bd54:	e5921018 	ldr	r1, [r2, #24]                                 
   1bd58:	e5c13017 	strb	r3, [r1, #23]                                
                                 handle->shared->mtime);              
      rtems_rfs_inode_set_ctime (&handle->shared->inode,              
   1bd5c:	e594301c 	ldr	r3, [r4, #28]                                 
   1bd60:	e5931094 	ldr	r1, [r3, #148]	; 0x94                         
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          ctime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->ctime, ctime);                  
   1bd64:	e593c018 	ldr	ip, [r3, #24]                                 
   1bd68:	e1a0ec21 	lsr	lr, r1, #24                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1bd6c:	e5c2001c 	strb	r0, [r2, #28]                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          ctime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->ctime, ctime);                  
   1bd70:	e5cce018 	strb	lr, [ip, #24]                                
   1bd74:	e5932018 	ldr	r2, [r3, #24]                                 
   1bd78:	e1a0c821 	lsr	ip, r1, #16                                   
   1bd7c:	e5c2c019 	strb	ip, [r2, #25]                                
   1bd80:	e5932018 	ldr	r2, [r3, #24]                                 
   1bd84:	e1a0c421 	lsr	ip, r1, #8                                    
   1bd88:	e5c2c01a 	strb	ip, [r2, #26]                                
   1bd8c:	e5932018 	ldr	r2, [r3, #24]                                 
   1bd90:	e5c2101b 	strb	r1, [r2, #27]                                
                                 handle->shared->ctime);              
      if (!rtems_rfs_block_size_equal (&handle->shared->size,         
   1bd94:	e594101c 	ldr	r1, [r4, #28]                                 
   1bd98:	e5912084 	ldr	r2, [r1, #132]	; 0x84                         
   1bd9c:	e591c03c 	ldr	ip, [r1, #60]	; 0x3c                          
   1bda0:	e152000c 	cmp	r2, ip                                        
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1bda4:	e5c3001c 	strb	r0, [r3, #28]                                
   1bda8:	e5913088 	ldr	r3, [r1, #136]	; 0x88                         
   1bdac:	0a000069 	beq	1bf58 <rtems_rfs_file_close+0x2ac>            
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size (rtems_rfs_block_map*  map,              
                              rtems_rfs_block_size* size)             
{                                                                     
  rtems_rfs_block_copy_size (&map->size, size);                       
   1bdb0:	e5813040 	str	r3, [r1, #64]	; 0x40                          <== NOT EXECUTED
  map->dirty = true;                                                  
   1bdb4:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size (rtems_rfs_block_map*  map,              
                              rtems_rfs_block_size* size)             
{                                                                     
  rtems_rfs_block_copy_size (&map->size, size);                       
   1bdb8:	e581203c 	str	r2, [r1, #60]	; 0x3c                          <== NOT EXECUTED
  map->dirty = true;                                                  
   1bdbc:	e5c13034 	strb	r3, [r1, #52]	; 0x34                         <== NOT EXECUTED
   1bdc0:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
                                       &handle->shared->map.size))    
        rtems_rfs_block_map_set_size (&handle->shared->map,           
                                      &handle->shared->size);         
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &handle->shared->map);        
   1bdc4:	e1a00006 	mov	r0, r6                                        
   1bdc8:	e2811034 	add	r1, r1, #52	; 0x34                            
   1bdcc:	ebfff4b3 	bl	190a0 <rtems_rfs_block_map_close>              
    if (rc > 0)                                                       
   1bdd0:	e2507000 	subs	r7, r0, #0                                   
   1bdd4:	da000006 	ble	1bdf4 <rtems_rfs_file_close+0x148>            
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
   1bdd8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1bddc:	e3a01010 	mov	r1, #16                                       <== NOT EXECUTED
   1bde0:	ebffda92 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1bde4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1bde8:	1a000050 	bne	1bf30 <rtems_rfs_file_close+0x284>            <== NOT EXECUTED
        printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
      if (rrc == 0)                                                   
   1bdec:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1bdf0:	01a05007 	moveq	r5, r7                                      <== NOT EXECUTED
        rrc = rc;                                                     
    }                                                                 
                                                                      
    rc = rtems_rfs_inode_close (fs, &handle->shared->inode);          
   1bdf4:	e594101c 	ldr	r1, [r4, #28]                                 
   1bdf8:	e1a00006 	mov	r0, r6                                        
   1bdfc:	e281100c 	add	r1, r1, #12                                   
   1be00:	ebffd4aa 	bl	110b0 <rtems_rfs_inode_close>                  
    if (rc > 0)                                                       
   1be04:	e2507000 	subs	r7, r0, #0                                   
   1be08:	da000006 	ble	1be28 <rtems_rfs_file_close+0x17c>            
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
   1be0c:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1be10:	e3a01010 	mov	r1, #16                                       <== NOT EXECUTED
   1be14:	ebffda85 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1be18:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1be1c:	1a000039 	bne	1bf08 <rtems_rfs_file_close+0x25c>            <== NOT EXECUTED
        printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
      if (rrc == 0)                                                   
   1be20:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1be24:	0a00002b 	beq	1bed8 <rtems_rfs_file_close+0x22c>            <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
   1be28:	e594001c 	ldr	r0, [r4, #28]                                 
   1be2c:	ebffec0e 	bl	16e6c <_Chain_Extract>                         
        rrc = rc;                                                     
    }                                                                 
                                                                      
    rtems_chain_extract (&handle->shared->link);                      
    free (handle->shared);                                            
   1be30:	e594001c 	ldr	r0, [r4, #28]                                 
   1be34:	ebffacff 	bl	7238 <free>                                    
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1be38:	e1a00006 	mov	r0, r6                                        
   1be3c:	e2841004 	add	r1, r4, #4                                    
   1be40:	ebfff7ae 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  handle->dirty = false;                                              
   1be44:	e3a03000 	mov	r3, #0                                        
                                                                      
  rc = rtems_rfs_buffer_handle_close (fs, &handle->buffer);           
  if ((rrc == 0) && (rc > 0))                                         
    rrc = rc;                                                         
                                                                      
  if (rrc > 0)                                                        
   1be48:	e1550003 	cmp	r5, r3                                        
   1be4c:	e5c43004 	strb	r3, [r4, #4]                                 
  handle->bnum  = 0;                                                  
   1be50:	e5843008 	str	r3, [r4, #8]                                  
  handle->buffer = NULL;                                              
   1be54:	e584300c 	str	r3, [r4, #12]                                 
   1be58:	da000015 	ble	1beb4 <rtems_rfs_file_close+0x208>            
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                 
   1be5c:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1be60:	e3a01010 	mov	r1, #16                                       <== NOT EXECUTED
   1be64:	ebffda71 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1be68:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1be6c:	0a000010 	beq	1beb4 <rtems_rfs_file_close+0x208>            <== NOT EXECUTED
      printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
   1be70:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1be74:	eb001638 	bl	2175c <strerror>                               <== NOT EXECUTED
   1be78:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1be7c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1be80:	e59f0104 	ldr	r0, [pc, #260]	; 1bf8c <rtems_rfs_file_close+0x2e0><== NOT EXECUTED
   1be84:	eb001186 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  free (handle);                                                      
   1be88:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1be8c:	ebfface9 	bl	7238 <free>                                    <== NOT EXECUTED
                                                                      
  return rrc;                                                         
}                                                                     
   1be90:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1be94:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
  handle->dirty = false;                                              
   1be98:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1be9c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1bea0:	e2841004 	add	r1, r4, #4                                    <== NOT EXECUTED
   1bea4:	ebfff795 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1bea8:	e5c45004 	strb	r5, [r4, #4]                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1beac:	e5845008 	str	r5, [r4, #8]                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1beb0:	e584500c 	str	r5, [r4, #12]                                 <== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                 
      printf ("rtems-rfs: file-close: result: %d: %s\n", rrc, strerror (rrc));
  }                                                                   
                                                                      
  free (handle);                                                      
   1beb4:	e1a00004 	mov	r0, r4                                        
   1beb8:	ebffacde 	bl	7238 <free>                                    
                                                                      
  return rrc;                                                         
}                                                                     
   1bebc:	e1a00005 	mov	r0, r5                                        
   1bec0:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
                                                                      
  rrc = 0;                                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                   
    printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",        
            handle->shared->inode.ino);                               
   1bec4:	e594301c 	ldr	r3, [r4, #28]                                 <== NOT EXECUTED
  int rc;                                                             
                                                                      
  rrc = 0;                                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))                   
    printf ("rtems-rfs: file-close: entry: ino=%" PRId32 "\n",        
   1bec8:	e59f00c0 	ldr	r0, [pc, #192]	; 1bf90 <rtems_rfs_file_close+0x2e4><== NOT EXECUTED
   1becc:	e5931014 	ldr	r1, [r3, #20]                                 <== NOT EXECUTED
   1bed0:	eb001173 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1bed4:	eaffff7c 	b	1bccc <rtems_rfs_file_close+0x20>               <== NOT EXECUTED
   1bed8:	e594001c 	ldr	r0, [r4, #28]                                 <== NOT EXECUTED
   1bedc:	ebffebe2 	bl	16e6c <_Chain_Extract>                         <== NOT EXECUTED
      if (rrc == 0)                                                   
        rrc = rc;                                                     
    }                                                                 
                                                                      
    rtems_chain_extract (&handle->shared->link);                      
    free (handle->shared);                                            
   1bee0:	e594001c 	ldr	r0, [r4, #28]                                 <== NOT EXECUTED
   1bee4:	ebffacd3 	bl	7238 <free>                                    <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1bee8:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1beec:	e2841004 	add	r1, r4, #4                                    <== NOT EXECUTED
   1bef0:	ebfff782 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1bef4:	e5c45004 	strb	r5, [r4, #4]                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1bef8:	e5845008 	str	r5, [r4, #8]                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1befc:	e584500c 	str	r5, [r4, #12]                                 <== NOT EXECUTED
   1bf00:	e1a05007 	mov	r5, r7                                        <== NOT EXECUTED
   1bf04:	eaffffd4 	b	1be5c <rtems_rfs_file_close+0x1b0>              <== NOT EXECUTED
    rc = rtems_rfs_inode_close (fs, &handle->shared->inode);          
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
   1bf08:	e594301c 	ldr	r3, [r4, #28]                                 <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_inode_close (fs, &handle->shared->inode);          
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: inode close error: ino=%" PRId32 ": %d: %s\n",
   1bf0c:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1bf10:	e5938014 	ldr	r8, [r3, #20]                                 <== NOT EXECUTED
   1bf14:	eb001610 	bl	2175c <strerror>                               <== NOT EXECUTED
   1bf18:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   1bf1c:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1bf20:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   1bf24:	e59f0068 	ldr	r0, [pc, #104]	; 1bf94 <rtems_rfs_file_close+0x2e8><== NOT EXECUTED
   1bf28:	eb00115d 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1bf2c:	eaffffbb 	b	1be20 <rtems_rfs_file_close+0x174>              <== NOT EXECUTED
    rc = rtems_rfs_block_map_close (fs, &handle->shared->map);        
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
                handle->shared->inode.ino, rc, strerror (rc));        
   1bf30:	e594301c 	ldr	r3, [r4, #28]                                 <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_block_map_close (fs, &handle->shared->map);        
    if (rc > 0)                                                       
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_CLOSE))               
        printf ("rtems-rfs: file-close: map close error: ino=%" PRId32 ": %d: %s\n",
   1bf34:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1bf38:	e5938014 	ldr	r8, [r3, #20]                                 <== NOT EXECUTED
   1bf3c:	eb001606 	bl	2175c <strerror>                               <== NOT EXECUTED
   1bf40:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   1bf44:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1bf48:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   1bf4c:	e59f0044 	ldr	r0, [pc, #68]	; 1bf98 <rtems_rfs_file_close+0x2ec><== NOT EXECUTED
   1bf50:	eb001153 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1bf54:	eaffffa4 	b	1bdec <rtems_rfs_file_close+0x140>              <== NOT EXECUTED
                                 handle->shared->atime);              
      rtems_rfs_inode_set_mtime (&handle->shared->inode,              
                                 handle->shared->mtime);              
      rtems_rfs_inode_set_ctime (&handle->shared->inode,              
                                 handle->shared->ctime);              
      if (!rtems_rfs_block_size_equal (&handle->shared->size,         
   1bf58:	e5910040 	ldr	r0, [r1, #64]	; 0x40                          
   1bf5c:	e1530000 	cmp	r3, r0                                        
   1bf60:	03a05000 	moveq	r5, #0                                      
   1bf64:	1affff91 	bne	1bdb0 <rtems_rfs_file_close+0x104>            
   1bf68:	eaffff95 	b	1bdc4 <rtems_rfs_file_close+0x118>              
    handle->shared->references--;                                     
                                                                      
  if (handle->shared->references == 0)                                
  {                                                                   
    if (!rtems_rfs_inode_is_loaded (&handle->shared->inode))          
      rrc = rtems_rfs_inode_load (fs, &handle->shared->inode);        
   1bf6c:	e281100c 	add	r1, r1, #12                                   
   1bf70:	e1a00006 	mov	r0, r6                                        
   1bf74:	ebffd3a9 	bl	10e20 <rtems_rfs_inode_load>                   
                                                                      
    if (rrc == 0)                                                     
   1bf78:	e2505000 	subs	r5, r0, #0                                   
   1bf7c:	e594101c 	ldr	r1, [r4, #28]                                 
   1bf80:	1affff8f 	bne	1bdc4 <rtems_rfs_file_close+0x118>            
   1bf84:	e5913018 	ldr	r3, [r1, #24]                                 
   1bf88:	eaffff59 	b	1bcf4 <rtems_rfs_file_close+0x48>               
                                                                      

0001c804 <rtems_rfs_file_get_shared>: */ RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First( Chain_Control *the_chain ) { return _Chain_Head( the_chain )->next;
   1c804:	e5903074 	ldr	r3, [r0, #116]	; 0x74                         
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
   1c808:	e2800078 	add	r0, r0, #120	; 0x78                           
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
   1c80c:	e1530000 	cmp	r3, r0                                        
   1c810:	0a000009 	beq	1c83c <rtems_rfs_file_get_shared+0x38>        
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
   1c814:	e5932014 	ldr	r2, [r3, #20]                                 
   1c818:	e1520001 	cmp	r2, r1                                        
   1c81c:	1a000003 	bne	1c830 <rtems_rfs_file_get_shared+0x2c>        
   1c820:	ea000009 	b	1c84c <rtems_rfs_file_get_shared+0x48>          
   1c824:	e5932014 	ldr	r2, [r3, #20]                                 <== NOT EXECUTED
   1c828:	e1520001 	cmp	r2, r1                                        <== NOT EXECUTED
   1c82c:	0a000004 	beq	1c844 <rtems_rfs_file_get_shared+0x40>        <== NOT EXECUTED
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next(                         
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  return the_node->next;                                              
   1c830:	e5933000 	ldr	r3, [r3]                                      <== NOT EXECUTED
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
   1c834:	e1530000 	cmp	r3, r0                                        <== NOT EXECUTED
   1c838:	1afffff9 	bne	1c824 <rtems_rfs_file_get_shared+0x20>        <== NOT EXECUTED
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
      return shared;                                                  
    node = rtems_chain_next (node);                                   
  }                                                                   
  return NULL;                                                        
   1c83c:	e3a00000 	mov	r0, #0                                        
   1c840:	e12fff1e 	bx	lr                                             
   1c844:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
}                                                                     
   1c848:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
   1c84c:	e1a00003 	mov	r0, r3                                        
   1c850:	e12fff1e 	bx	lr                                             
                                                                      

0001c1b4 <rtems_rfs_file_io_end>: int rtems_rfs_file_io_end (rtems_rfs_file_handle* handle, size_t size, bool read) {
   1c1b4:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
   1c1b8:	e1a04000 	mov	r4, r0                                        
   1c1bc:	e24dd008 	sub	sp, sp, #8                                    
   1c1c0:	e1a07001 	mov	r7, r1                                        
  bool atime;                                                         
  bool mtime;                                                         
  bool length;                                                        
  int  rc = 0;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c1c4:	e3a00000 	mov	r0, #0                                        
   1c1c8:	e3a01020 	mov	r1, #32                                       
                                                                      
int                                                                   
rtems_rfs_file_io_end (rtems_rfs_file_handle* handle,                 
                       size_t                 size,                   
                       bool                   read)                   
{                                                                     
   1c1cc:	e20250ff 	and	r5, r2, #255	; 0xff                           
  bool atime;                                                         
  bool mtime;                                                         
  bool length;                                                        
  int  rc = 0;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c1d0:	ebffd996 	bl	12830 <rtems_rfs_trace>                        
   1c1d4:	e3500000 	cmp	r0, #0                                        
   1c1d8:	0a000006 	beq	1c1f8 <rtems_rfs_file_io_end+0x44>            
    printf ("rtems-rfs: file-io:   end: %s size=%zu\n",               
   1c1dc:	e59f31f8 	ldr	r3, [pc, #504]	; 1c3dc <rtems_rfs_file_io_end+0x228><== NOT EXECUTED
   1c1e0:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1c1e4:	e59f11f4 	ldr	r1, [pc, #500]	; 1c3e0 <rtems_rfs_file_io_end+0x22c><== NOT EXECUTED
   1c1e8:	e59f01f4 	ldr	r0, [pc, #500]	; 1c3e4 <rtems_rfs_file_io_end+0x230><== NOT EXECUTED
   1c1ec:	11a01003 	movne	r1, r3                                      <== NOT EXECUTED
   1c1f0:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   1c1f4:	eb0010aa 	bl	204a4 <printf>                                 <== NOT EXECUTED
            read ? "read" : "write", size);                           
                                                                      
  if (rtems_rfs_buffer_handle_has_block (&handle->buffer))            
   1c1f8:	e594600c 	ldr	r6, [r4, #12]                                 
   1c1fc:	e3560000 	cmp	r6, #0                                        
   1c200:	0a000017 	beq	1c264 <rtems_rfs_file_io_end+0xb0>            
  {                                                                   
    if (!read)                                                        
   1c204:	e3550000 	cmp	r5, #0                                        
      rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));   
   1c208:	03a03001 	moveq	r3, #1                                      
   1c20c:	05c43004 	strbeq	r3, [r4, #4]                               
    rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 
   1c210:	e594301c 	ldr	r3, [r4, #28]                                 
   1c214:	e2841004 	add	r1, r4, #4                                    
   1c218:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1c21c:	ebfff6b7 	bl	19d00 <rtems_rfs_buffer_handle_release>        
                                          rtems_rfs_file_buffer (handle));
    if (rc > 0)                                                       
   1c220:	e2506000 	subs	r6, r0, #0                                   
   1c224:	da00000e 	ble	1c264 <rtems_rfs_file_io_end+0xb0>            
    {                                                                 
      printf (                                                        
   1c228:	e59f31ac 	ldr	r3, [pc, #428]	; 1c3dc <rtems_rfs_file_io_end+0x228><== NOT EXECUTED
   1c22c:	e59f21ac 	ldr	r2, [pc, #428]	; 1c3e0 <rtems_rfs_file_io_end+0x22c><== NOT EXECUTED
   1c230:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1c234:	01a05002 	moveq	r5, r2                                      <== NOT EXECUTED
   1c238:	11a05003 	movne	r5, r3                                      <== NOT EXECUTED
   1c23c:	eb001546 	bl	2175c <strerror>                               <== NOT EXECUTED
   1c240:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1c244:	e58d0000 	str	r0, [sp]                                      <== NOT EXECUTED
   1c248:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   1c24c:	e1a03006 	mov	r3, r6                                        <== NOT EXECUTED
   1c250:	e59f0190 	ldr	r0, [pc, #400]	; 1c3e8 <rtems_rfs_file_io_end+0x234><== NOT EXECUTED
   1c254:	eb001092 	bl	204a4 <printf>                                 <== NOT EXECUTED
    handle->shared->size.offset =                                     
      rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));  
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   1c258:	e1a00006 	mov	r0, r6                                        
   1c25c:	e28dd008 	add	sp, sp, #8                                    
   1c260:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
   1c264:	e594301c 	ldr	r3, [r4, #28]                                 
   1c268:	e5932098 	ldr	r2, [r3, #152]	; 0x98                         
   * increase the block number and adjust the offset.                 
   *                                                                  
   * If we are the last block and the position is past the current size update
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
   1c26c:	e5941014 	ldr	r1, [r4, #20]                                 
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
   1c270:	e5922008 	ldr	r2, [r2, #8]                                  
   * increase the block number and adjust the offset.                 
   *                                                                  
   * If we are the last block and the position is past the current size update
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
   1c274:	e0877001 	add	r7, r7, r1                                    
                                                                      
  if (handle->bpos.boff >=                                            
   1c278:	e1570002 	cmp	r7, r2                                        
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
  {                                                                   
    handle->bpos.bno++;                                               
   1c27c:	25941010 	ldrcs	r1, [r4, #16]                               
   * increase the block number and adjust the offset.                 
   *                                                                  
   * If we are the last block and the position is past the current size update
   * the size with the new length. The map holds the block count.     
   */                                                                 
  handle->bpos.boff += size;                                          
   1c280:	e5847014 	str	r7, [r4, #20]                                 
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
  {                                                                   
    handle->bpos.bno++;                                               
    handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
   1c284:	20627007 	rsbcs	r7, r2, r7                                  
  handle->bpos.boff += size;                                          
                                                                      
  if (handle->bpos.boff >=                                            
      rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))           
  {                                                                   
    handle->bpos.bno++;                                               
   1c288:	22812001 	addcs	r2, r1, #1                                  
   1c28c:	25842010 	strcs	r2, [r4, #16]                               
    handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
   1c290:	25847014 	strcs	r7, [r4, #20]                               
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
                                                                      
  if (!read &&                                                        
   1c294:	e3550000 	cmp	r5, #0                                        
   1c298:	1a00000f 	bne	1c2dc <rtems_rfs_file_io_end+0x128>           
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
   1c29c:	e5942010 	ldr	r2, [r4, #16]                                 
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
                                                                      
  if (!read &&                                                        
   1c2a0:	e3520000 	cmp	r2, #0                                        
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
   1c2a4:	e593103c 	ldr	r1, [r3, #60]	; 0x3c                          
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
                                                                      
  if (!read &&                                                        
   1c2a8:	0a000006 	beq	1c2c8 <rtems_rfs_file_io_end+0x114>           
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
   1c2ac:	e3510000 	cmp	r1, #0                                        
   1c2b0:	1a000004 	bne	1c2c8 <rtems_rfs_file_io_end+0x114>           
   1c2b4:	e5942014 	ldr	r2, [r4, #20]                                 
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
  map->dirty = true;                                                  
   1c2b8:	e3a07001 	mov	r7, #1                                        
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
   1c2bc:	e5832040 	str	r2, [r3, #64]	; 0x40                          
  map->dirty = true;                                                  
   1c2c0:	e5c37034 	strb	r7, [r3, #52]	; 0x34                         
   1c2c4:	ea000005 	b	1c2e0 <rtems_rfs_file_io_end+0x12c>             
   1c2c8:	e1520001 	cmp	r2, r1                                        
   1c2cc:	2afffff8 	bcs	1c2b4 <rtems_rfs_file_io_end+0x100>           
   1c2d0:	e2411001 	sub	r1, r1, #1                                    
   1c2d4:	e1520001 	cmp	r2, r1                                        
   1c2d8:	0a00003a 	beq	1c3c8 <rtems_rfs_file_io_end+0x214>           
    handle->bpos.bno++;                                               
    handle->bpos.boff -= rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
  }                                                                   
                                                                      
  length = false;                                                     
  mtime = false;                                                      
   1c2dc:	e3a07000 	mov	r7, #0                                        
                                         handle->bpos.boff);          
    length = true;                                                    
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
   1c2e0:	e5943000 	ldr	r3, [r4]                                      
   1c2e4:	e3130001 	tst	r3, #1                                        
   1c2e8:	13a08000 	movne	r8, #0                                      
   1c2ec:	03a08001 	moveq	r8, #1                                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
   1c2f0:	e3130002 	tst	r3, #2                                        
   1c2f4:	0207a0ff 	andeq	sl, r7, #255	; 0xff                         
   1c2f8:	13a0a000 	movne	sl, #0                                      
  length = rtems_rfs_file_update_length (handle) && length;           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c2fc:	e3a00000 	mov	r0, #0                                        
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
  length = rtems_rfs_file_update_length (handle) && length;           
   1c300:	e3130004 	tst	r3, #4                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c304:	e3a01020 	mov	r1, #32                                       
    mtime = true;                                                     
  }                                                                   
                                                                      
  atime  = rtems_rfs_file_update_atime (handle);                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
  length = rtems_rfs_file_update_length (handle) && length;           
   1c308:	13a07000 	movne	r7, #0                                      
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c30c:	ebffd947 	bl	12830 <rtems_rfs_trace>                        
   1c310:	e3500000 	cmp	r0, #0                                        
   1c314:	1a000011 	bne	1c360 <rtems_rfs_file_io_end+0x1ac>           
    printf ("rtems-rfs: file-io:   end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
            handle->bpos.bno, handle->bpos.boff,                      
            atime ? 'A' : '-', mtime ? 'M' : '-', length ? 'L' : '-');
                                                                      
  if (atime || mtime)                                                 
   1c318:	e3580000 	cmp	r8, #0                                        
   1c31c:	1a000001 	bne	1c328 <rtems_rfs_file_io_end+0x174>           
   1c320:	e35a0000 	cmp	sl, #0                                        <== NOT EXECUTED
   1c324:	0a000006 	beq	1c344 <rtems_rfs_file_io_end+0x190>           <== NOT EXECUTED
  {                                                                   
    time_t now = time (NULL);                                         
   1c328:	e3a00000 	mov	r0, #0                                        
   1c32c:	eb002097 	bl	24590 <time>                                   
    if (read && atime)                                                
   1c330:	e3550000 	cmp	r5, #0                                        
   1c334:	0a000019 	beq	1c3a0 <rtems_rfs_file_io_end+0x1ec>           
   1c338:	e3580000 	cmp	r8, #0                                        
      handle->shared->atime = now;                                    
   1c33c:	1594301c 	ldrne	r3, [r4, #28]                               
   1c340:	1583008c 	strne	r0, [r3, #140]	; 0x8c                       
    if (!read && mtime)                                               
      handle->shared->mtime = now;                                    
  }                                                                   
  if (length)                                                         
   1c344:	e3570000 	cmp	r7, #0                                        
  {                                                                   
    handle->shared->size.count =                                      
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
   1c348:	1594301c 	ldrne	r3, [r4, #28]                               
    handle->shared->size.offset =                                     
   1c34c:	1283103c 	addne	r1, r3, #60	; 0x3c                          
   1c350:	18910006 	ldmne	r1, {r1, r2}                                
    if (!read && mtime)                                               
      handle->shared->mtime = now;                                    
  }                                                                   
  if (length)                                                         
  {                                                                   
    handle->shared->size.count =                                      
   1c354:	15831084 	strne	r1, [r3, #132]	; 0x84                       
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
    handle->shared->size.offset =                                     
   1c358:	15832088 	strne	r2, [r3, #136]	; 0x88                       
   1c35c:	eaffffbd 	b	1c258 <rtems_rfs_file_io_end+0xa4>              
  atime  = rtems_rfs_file_update_atime (handle);                      
  mtime  = rtems_rfs_file_update_mtime (handle) && mtime;             
  length = rtems_rfs_file_update_length (handle) && length;           
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-io:   end: pos=%" PRIu32 ":%" PRIu32 " %c %c %c\n",
   1c360:	e35a0000 	cmp	sl, #0                                        <== NOT EXECUTED
   1c364:	03a0e02d 	moveq	lr, #45	; 0x2d                              <== NOT EXECUTED
   1c368:	13a0e04d 	movne	lr, #77	; 0x4d                              <== NOT EXECUTED
   1c36c:	e3570000 	cmp	r7, #0                                        <== NOT EXECUTED
   1c370:	03a0c02d 	moveq	ip, #45	; 0x2d                              <== NOT EXECUTED
   1c374:	13a0c04c 	movne	ip, #76	; 0x4c                              <== NOT EXECUTED
   1c378:	e2841010 	add	r1, r4, #16                                   <== NOT EXECUTED
   1c37c:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
   1c380:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
   1c384:	03a0302d 	moveq	r3, #45	; 0x2d                              <== NOT EXECUTED
   1c388:	13a03041 	movne	r3, #65	; 0x41                              <== NOT EXECUTED
   1c38c:	e59f0058 	ldr	r0, [pc, #88]	; 1c3ec <rtems_rfs_file_io_end+0x238><== NOT EXECUTED
   1c390:	e58de000 	str	lr, [sp]                                      <== NOT EXECUTED
   1c394:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
   1c398:	eb001041 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1c39c:	eaffffdd 	b	1c318 <rtems_rfs_file_io_end+0x164>             <== NOT EXECUTED
  if (atime || mtime)                                                 
  {                                                                   
    time_t now = time (NULL);                                         
    if (read && atime)                                                
      handle->shared->atime = now;                                    
    if (!read && mtime)                                               
   1c3a0:	e35a0000 	cmp	sl, #0                                        
      handle->shared->mtime = now;                                    
   1c3a4:	1594301c 	ldrne	r3, [r4, #28]                               
   1c3a8:	15830090 	strne	r0, [r3, #144]	; 0x90                       
  }                                                                   
  if (length)                                                         
   1c3ac:	e3570000 	cmp	r7, #0                                        
  {                                                                   
    handle->shared->size.count =                                      
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
   1c3b0:	1594301c 	ldrne	r3, [r4, #28]                               
    handle->shared->size.offset =                                     
   1c3b4:	1283103c 	addne	r1, r3, #60	; 0x3c                          
   1c3b8:	18910006 	ldmne	r1, {r1, r2}                                
    if (!read && mtime)                                               
      handle->shared->mtime = now;                                    
  }                                                                   
  if (length)                                                         
  {                                                                   
    handle->shared->size.count =                                      
   1c3bc:	15831084 	strne	r1, [r3, #132]	; 0x84                       
      rtems_rfs_block_map_count (rtems_rfs_file_map (handle));        
    handle->shared->size.offset =                                     
   1c3c0:	15832088 	strne	r2, [r3, #136]	; 0x88                       
   1c3c4:	eaffffa3 	b	1c258 <rtems_rfs_file_io_end+0xa4>              
                                                                      
  length = false;                                                     
  mtime = false;                                                      
                                                                      
  if (!read &&                                                        
      rtems_rfs_block_map_past_end (rtems_rfs_file_map (handle),      
   1c3c8:	e5942014 	ldr	r2, [r4, #20]                                 
   1c3cc:	e5931040 	ldr	r1, [r3, #64]	; 0x40                          
   1c3d0:	e1520001 	cmp	r2, r1                                        
   1c3d4:	9affffc0 	bls	1c2dc <rtems_rfs_file_io_end+0x128>           
   1c3d8:	eaffffb6 	b	1c2b8 <rtems_rfs_file_io_end+0x104>             
                                                                      

0001c3f0 <rtems_rfs_file_io_release>: int rtems_rfs_file_io_release (rtems_rfs_file_handle* handle) { int rc = 0; if (rtems_rfs_buffer_handle_has_block (&handle->buffer))
   1c3f0:	e590300c 	ldr	r3, [r0, #12]                                 
   1c3f4:	e3530000 	cmp	r3, #0                                        
   1c3f8:	0a000003 	beq	1c40c <rtems_rfs_file_io_release+0x1c>        
    rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle), 
   1c3fc:	e590301c 	ldr	r3, [r0, #28]                                 <== NOT EXECUTED
   1c400:	e2801004 	add	r1, r0, #4                                    <== NOT EXECUTED
   1c404:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         <== NOT EXECUTED
   1c408:	eafff63c 	b	19d00 <rtems_rfs_buffer_handle_release>         <== NOT EXECUTED
                                          rtems_rfs_file_buffer (handle));
  return rc;                                                          
}                                                                     
   1c40c:	e1a00003 	mov	r0, r3                                        
   1c410:	e12fff1e 	bx	lr                                             
                                                                      

0001bf9c <rtems_rfs_file_io_start>: int rtems_rfs_file_io_start (rtems_rfs_file_handle* handle, size_t* available, bool read) {
   1bf9c:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
   1bfa0:	e1a04000 	mov	r4, r0                                        
   1bfa4:	e24dd004 	sub	sp, sp, #4                                    
   1bfa8:	e1a06001 	mov	r6, r1                                        
  size_t size;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1bfac:	e3a00000 	mov	r0, #0                                        
   1bfb0:	e3a01020 	mov	r1, #32                                       
                                                                      
int                                                                   
rtems_rfs_file_io_start (rtems_rfs_file_handle* handle,               
                         size_t*                available,            
                         bool                   read)                 
{                                                                     
   1bfb4:	e20250ff 	and	r5, r2, #255	; 0xff                           
  size_t size;                                                        
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1bfb8:	ebffda1c 	bl	12830 <rtems_rfs_trace>                        
   1bfbc:	e3500000 	cmp	r0, #0                                        
   1bfc0:	0a000007 	beq	1bfe4 <rtems_rfs_file_io_start+0x48>          
    printf ("rtems-rfs: file-io: start: %s pos=%" PRIu32 ":%" PRIu32 "\n",
   1bfc4:	e59f31c8 	ldr	r3, [pc, #456]	; 1c194 <rtems_rfs_file_io_start+0x1f8><== NOT EXECUTED
   1bfc8:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1bfcc:	e2842010 	add	r2, r4, #16                                   <== NOT EXECUTED
   1bfd0:	e59f11c0 	ldr	r1, [pc, #448]	; 1c198 <rtems_rfs_file_io_start+0x1fc><== NOT EXECUTED
   1bfd4:	e59f01c0 	ldr	r0, [pc, #448]	; 1c19c <rtems_rfs_file_io_start+0x200><== NOT EXECUTED
   1bfd8:	11a01003 	movne	r1, r3                                      <== NOT EXECUTED
   1bfdc:	e892000c 	ldm	r2, {r2, r3}                                  <== NOT EXECUTED
   1bfe0:	eb00112f 	bl	204a4 <printf>                                 <== NOT EXECUTED
            read ? "read" : "write",  handle->bpos.bno, handle->bpos.boff);
                                                                      
  if (!rtems_rfs_buffer_handle_has_block (&handle->buffer))           
   1bfe4:	e594700c 	ldr	r7, [r4, #12]                                 
   1bfe8:	e3570000 	cmp	r7, #0                                        
   1bfec:	0a000021 	beq	1c078 <rtems_rfs_file_io_start+0xdc>          
                                          block, request_read);       
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
   1bff0:	e3550000 	cmp	r5, #0                                        
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
   1bff4:	e594301c 	ldr	r3, [r4, #28]                                 
                                          block, request_read);       
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
   1bff8:	1a000010 	bne	1c040 <rtems_rfs_file_io_start+0xa4>          
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
      && rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
    size = rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle));
  else                                                                
    size = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));      
   1bffc:	e5933098 	ldr	r3, [r3, #152]	; 0x98                         
   1c000:	e5935008 	ldr	r5, [r3, #8]                                  
                                                                      
  *available = size - rtems_rfs_file_block_offset (handle);           
   1c004:	e5943014 	ldr	r3, [r4, #20]                                 
   1c008:	e0633005 	rsb	r3, r3, r5                                    
   1c00c:	e5863000 	str	r3, [r6]                                      
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c010:	e3a00000 	mov	r0, #0                                        
   1c014:	e3a01020 	mov	r1, #32                                       
   1c018:	ebffda04 	bl	12830 <rtems_rfs_trace>                        
   1c01c:	e3500000 	cmp	r0, #0                                        
   1c020:	0a000004 	beq	1c038 <rtems_rfs_file_io_start+0x9c>          
    printf ("rtems-rfs: file-io: start: available=%zu (%zu)\n",       
   1c024:	e59f0174 	ldr	r0, [pc, #372]	; 1c1a0 <rtems_rfs_file_io_start+0x204><== NOT EXECUTED
   1c028:	e5961000 	ldr	r1, [r6]                                      <== NOT EXECUTED
   1c02c:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   1c030:	eb00111b 	bl	204a4 <printf>                                 <== NOT EXECUTED
            *available, size);                                        
                                                                      
  return 0;                                                           
   1c034:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
   1c038:	e28dd004 	add	sp, sp, #4                                    
   1c03c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
   1c040:	e5932044 	ldr	r2, [r3, #68]	; 0x44                          
   1c044:	e3520000 	cmp	r2, #0                                        
   1c048:	e593103c 	ldr	r1, [r3, #60]	; 0x3c                          
   1c04c:	1a000005 	bne	1c068 <rtems_rfs_file_io_start+0xcc>          
   1c050:	e3510000 	cmp	r1, #0                                        
   1c054:	1a000003 	bne	1c068 <rtems_rfs_file_io_start+0xcc>          
      && rtems_rfs_block_map_size_offset (rtems_rfs_file_map (handle)))
   1c058:	e5935040 	ldr	r5, [r3, #64]	; 0x40                          
   1c05c:	e3550000 	cmp	r5, #0                                        
   1c060:	1affffe7 	bne	1c004 <rtems_rfs_file_io_start+0x68>          
   1c064:	eaffffe4 	b	1bffc <rtems_rfs_file_io_start+0x60>            
    if (rc > 0)                                                       
      return rc;                                                      
  }                                                                   
                                                                      
  if (read                                                            
      && rtems_rfs_block_map_last (rtems_rfs_file_map (handle))       
   1c068:	e2411001 	sub	r1, r1, #1                                    
   1c06c:	e1520001 	cmp	r2, r1                                        
   1c070:	1affffe1 	bne	1bffc <rtems_rfs_file_io_start+0x60>          
   1c074:	eafffff7 	b	1c058 <rtems_rfs_file_io_start+0xbc>            
    bool                   request_read;                              
    int                    rc;                                        
                                                                      
    request_read = read;                                              
                                                                      
    rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),        
   1c078:	e594101c 	ldr	r1, [r4, #28]                                 
   1c07c:	e2842010 	add	r2, r4, #16                                   
   1c080:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1c084:	e1a0300d 	mov	r3, sp                                        
   1c088:	e2811034 	add	r1, r1, #52	; 0x34                            
   1c08c:	ebfff476 	bl	1926c <rtems_rfs_block_map_find>               
                                   rtems_rfs_file_map (handle),       
                                   rtems_rfs_file_bpos (handle),      
                                   &block);                           
    if (rc > 0)                                                       
   1c090:	e3500000 	cmp	r0, #0                                        
   1c094:	da000005 	ble	1c0b0 <rtems_rfs_file_io_start+0x114>         
    {                                                                 
      /*                                                              
       * Has the read reached the EOF ?                               
       */                                                             
      if (read && (rc == ENXIO))                                      
   1c098:	e3550000 	cmp	r5, #0                                        
   1c09c:	0a000027 	beq	1c140 <rtems_rfs_file_io_start+0x1a4>         
   1c0a0:	e3500006 	cmp	r0, #6                                        <== NOT EXECUTED
      {                                                               
        *available = 0;                                               
   1c0a4:	05867000 	streq	r7, [r6]                                    <== NOT EXECUTED
        return 0;                                                     
   1c0a8:	01a00007 	moveq	r0, r7                                      <== NOT EXECUTED
   1c0ac:	eaffffe1 	b	1c038 <rtems_rfs_file_io_start+0x9c>            <== NOT EXECUTED
      /*                                                              
       * If this is a write check if the write starts within a block or the
       * amount of data is less than a block size. If it is read the block
       * rather than getting a block to fill.                         
       */                                                             
      if (!read &&                                                    
   1c0b0:	e3550000 	cmp	r5, #0                                        
   1c0b4:	1a00000a 	bne	1c0e4 <rtems_rfs_file_io_start+0x148>         
   1c0b8:	e5943014 	ldr	r3, [r4, #20]                                 
   1c0bc:	e3530000 	cmp	r3, #0                                        
   1c0c0:	1a000007 	bne	1c0e4 <rtems_rfs_file_io_start+0x148>         
          (rtems_rfs_file_block_offset (handle) ||                    
           (*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
   1c0c4:	e594301c 	ldr	r3, [r4, #28]                                 
   1c0c8:	e5933098 	ldr	r3, [r3, #152]	; 0x98                         
       * If this is a write check if the write starts within a block or the
       * amount of data is less than a block size. If it is read the block
       * rather than getting a block to fill.                         
       */                                                             
      if (!read &&                                                    
          (rtems_rfs_file_block_offset (handle) ||                    
   1c0cc:	e5962000 	ldr	r2, [r6]                                      
   1c0d0:	e5933008 	ldr	r3, [r3, #8]                                  
   1c0d4:	e1520003 	cmp	r2, r3                                        
   1c0d8:	21a07005 	movcs	r7, r5                                      
   1c0dc:	21a08005 	movcs	r8, r5                                      
   1c0e0:	2a000001 	bcs	1c0ec <rtems_rfs_file_io_start+0x150>         
   1c0e4:	e3a07001 	mov	r7, #1                                        
           (*available < rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle)))))
        request_read = true;                                          
   1c0e8:	e1a08007 	mov	r8, r7                                        
    }                                                                 
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                    
   1c0ec:	e3a00000 	mov	r0, #0                                        
   1c0f0:	e3a01020 	mov	r1, #32                                       
   1c0f4:	ebffd9cd 	bl	12830 <rtems_rfs_trace>                        
   1c0f8:	e3500000 	cmp	r0, #0                                        
   1c0fc:	0a000006 	beq	1c11c <rtems_rfs_file_io_start+0x180>         
      printf ("rtems-rfs: file-io: start: block=%" PRIu32 " request-read=%s\n",
   1c100:	e59f309c 	ldr	r3, [pc, #156]	; 1c1a4 <rtems_rfs_file_io_start+0x208><== NOT EXECUTED
   1c104:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
   1c108:	e59f2098 	ldr	r2, [pc, #152]	; 1c1a8 <rtems_rfs_file_io_start+0x20c><== NOT EXECUTED
   1c10c:	e59f0098 	ldr	r0, [pc, #152]	; 1c1ac <rtems_rfs_file_io_start+0x210><== NOT EXECUTED
   1c110:	e59d1000 	ldr	r1, [sp]                                      <== NOT EXECUTED
   1c114:	01a02003 	moveq	r2, r3                                      <== NOT EXECUTED
   1c118:	eb0010e1 	bl	204a4 <printf>                                 <== NOT EXECUTED
              block, request_read ? "yes" : "no");                    
                                                                      
    rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle), 
   1c11c:	e594301c 	ldr	r3, [r4, #28]                                 
   1c120:	e2841004 	add	r1, r4, #4                                    
   1c124:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1c128:	e59d2000 	ldr	r2, [sp]                                      
   1c12c:	e1a03007 	mov	r3, r7                                        
   1c130:	ebfff76b 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
                                          rtems_rfs_file_buffer (handle),
                                          block, request_read);       
    if (rc > 0)                                                       
   1c134:	e3500000 	cmp	r0, #0                                        
   1c138:	caffffbe 	bgt	1c038 <rtems_rfs_file_io_start+0x9c>          
   1c13c:	eaffffab 	b	1bff0 <rtems_rfs_file_io_start+0x54>            
      {                                                               
        *available = 0;                                               
        return 0;                                                     
      }                                                               
                                                                      
      if (rc != ENXIO)                                                
   1c140:	e3500006 	cmp	r0, #6                                        
   1c144:	1affffbb 	bne	1c038 <rtems_rfs_file_io_start+0x9c>          
        return rc;                                                    
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                  
   1c148:	e3a00000 	mov	r0, #0                                        
   1c14c:	e3a01020 	mov	r1, #32                                       
   1c150:	ebffd9b6 	bl	12830 <rtems_rfs_trace>                        
   1c154:	e3500000 	cmp	r0, #0                                        
   1c158:	1a00000a 	bne	1c188 <rtems_rfs_file_io_start+0x1ec>         
        printf ("rtems-rfs: file-io: start: grow\n");                 
                                                                      
      rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),      
   1c15c:	e594101c 	ldr	r1, [r4, #28]                                 
   1c160:	e3a02001 	mov	r2, #1                                        
   1c164:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1c168:	e1a0300d 	mov	r3, sp                                        
   1c16c:	e2811034 	add	r1, r1, #52	; 0x34                            
   1c170:	ebfff4c3 	bl	19484 <rtems_rfs_block_map_grow>               
                                     rtems_rfs_file_map (handle),     
                                     1, &block);                      
      if (rc > 0)                                                     
   1c174:	e3500000 	cmp	r0, #0                                        
   1c178:	d3a07000 	movle	r7, #0                                      
        return rc;                                                    
                                                                      
      request_read = false;                                           
   1c17c:	d1a08007 	movle	r8, r7                                      
        printf ("rtems-rfs: file-io: start: grow\n");                 
                                                                      
      rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),      
                                     rtems_rfs_file_map (handle),     
                                     1, &block);                      
      if (rc > 0)                                                     
   1c180:	caffffac 	bgt	1c038 <rtems_rfs_file_io_start+0x9c>          
   1c184:	eaffffd8 	b	1c0ec <rtems_rfs_file_io_start+0x150>           
                                                                      
      if (rc != ENXIO)                                                
        return rc;                                                    
                                                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                  
        printf ("rtems-rfs: file-io: start: grow\n");                 
   1c188:	e59f0020 	ldr	r0, [pc, #32]	; 1c1b0 <rtems_rfs_file_io_start+0x214><== NOT EXECUTED
   1c18c:	eb00115c 	bl	20704 <puts>                                   <== NOT EXECUTED
   1c190:	eafffff1 	b	1c15c <rtems_rfs_file_io_start+0x1c0>           <== NOT EXECUTED
                                                                      

0001b980 <rtems_rfs_file_open>: int rtems_rfs_file_open (rtems_rfs_file_system* fs, rtems_rfs_ino ino, int oflag, rtems_rfs_file_handle** file) {
   1b980:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1b984:	e1a08000 	mov	r8, r0                                        
   1b988:	e24dd004 	sub	sp, sp, #4                                    
   1b98c:	e1a05001 	mov	r5, r1                                        
  rtems_rfs_file_handle* handle;                                      
  rtems_rfs_file_shared* shared;                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                    
   1b990:	e3a00000 	mov	r0, #0                                        
   1b994:	e3a01008 	mov	r1, #8                                        
int                                                                   
rtems_rfs_file_open (rtems_rfs_file_system*  fs,                      
                     rtems_rfs_ino           ino,                     
                     int                     oflag,                   
                     rtems_rfs_file_handle** file)                    
{                                                                     
   1b998:	e1a0b002 	mov	fp, r2                                        
   1b99c:	e1a07003 	mov	r7, r3                                        
  rtems_rfs_file_handle* handle;                                      
  rtems_rfs_file_shared* shared;                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                    
   1b9a0:	ebffdba2 	bl	12830 <rtems_rfs_trace>                        
   1b9a4:	e3500000 	cmp	r0, #0                                        
   1b9a8:	1a00002c 	bne	1ba60 <rtems_rfs_file_open+0xe0>              
    printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);          
                                                                      
  *file = NULL;                                                       
   1b9ac:	e3a0a000 	mov	sl, #0                                        
   1b9b0:	e587a000 	str	sl, [r7]                                      
  /*                                                                  
   * Allocate a new handle and initialise it. Do this before we deal with the
   * shared node data so we do not have to be concerned with reference
   * counting.                                                        
   */                                                                 
  handle = malloc (sizeof (rtems_rfs_file_handle));                   
   1b9b4:	e3a00020 	mov	r0, #32                                       
   1b9b8:	ebffaf9d 	bl	7834 <malloc>                                  
  if (!handle)                                                        
   1b9bc:	e2506000 	subs	r6, r0, #0                                   
    return ENOMEM;                                                    
   1b9c0:	03a0a00c 	moveq	sl, #12                                     
   * Allocate a new handle and initialise it. Do this before we deal with the
   * shared node data so we do not have to be concerned with reference
   * counting.                                                        
   */                                                                 
  handle = malloc (sizeof (rtems_rfs_file_handle));                   
  if (!handle)                                                        
   1b9c4:	0a000022 	beq	1ba54 <rtems_rfs_file_open+0xd4>              
    return ENOMEM;                                                    
                                                                      
  memset (handle, 0, sizeof (rtems_rfs_file_handle));                 
   1b9c8:	e1a09006 	mov	r9, r6                                        
   1b9cc:	e489a004 	str	sl, [r9], #4                                  
   1b9d0:	e2893008 	add	r3, r9, #8                                    
   1b9d4:	e586a004 	str	sl, [r6, #4]                                  
   1b9d8:	e483a004 	str	sl, [r3], #4                                  
   1b9dc:	e483a004 	str	sl, [r3], #4                                  
   1b9e0:	e483a004 	str	sl, [r3], #4                                  
   1b9e4:	e483a004 	str	sl, [r3], #4                                  
   1b9e8:	e583a000 	str	sl, [r3]                                      
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
   1b9ec:	e5984074 	ldr	r4, [r8, #116]	; 0x74                         
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(                             
  const Chain_Control *the_chain,                                     
  const Chain_Node    *the_node                                       
)                                                                     
{                                                                     
  return (the_node == _Chain_Immutable_tail( the_chain ));            
   1b9f0:	e2882078 	add	r2, r8, #120	; 0x78                           
rtems_rfs_file_get_shared (rtems_rfs_file_system* fs,                 
                           rtems_rfs_ino          ino)                
{                                                                     
  rtems_chain_node* node;                                             
  node = rtems_chain_first (&fs->file_shares);                        
  while (!rtems_chain_is_tail (&fs->file_shares, node))               
   1b9f4:	e1540002 	cmp	r4, r2                                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1b9f8:	e5c6a004 	strb	sl, [r6, #4]                                 
  handle->bnum  = 0;                                                  
   1b9fc:	e586a008 	str	sl, [r6, #8]                                  
  handle->buffer = NULL;                                              
   1ba00:	e586a00c 	str	sl, [r6, #12]                                 
   1ba04:	1a000003 	bne	1ba18 <rtems_rfs_file_open+0x98>              
   1ba08:	ea000020 	b	1ba90 <rtems_rfs_file_open+0x110>               
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Next(                         
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  return the_node->next;                                              
   1ba0c:	e5944000 	ldr	r4, [r4]                                      <== NOT EXECUTED
   1ba10:	e1540002 	cmp	r4, r2                                        <== NOT EXECUTED
   1ba14:	0a00001d 	beq	1ba90 <rtems_rfs_file_open+0x110>             <== NOT EXECUTED
  {                                                                   
    rtems_rfs_file_shared* shared;                                    
    shared = (rtems_rfs_file_shared*) node;                           
    if (shared->inode.ino == ino)                                     
   1ba18:	e5943014 	ldr	r3, [r4, #20]                                 <== NOT EXECUTED
   1ba1c:	e1550003 	cmp	r5, r3                                        <== NOT EXECUTED
   1ba20:	1afffff9 	bne	1ba0c <rtems_rfs_file_open+0x8c>              <== NOT EXECUTED
   * the reference count and return the pointer to the data.          
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, ino);                       
  if (shared)                                                         
  {                                                                   
    shared->references++;                                             
   1ba24:	e5943008 	ldr	r3, [r4, #8]                                  <== NOT EXECUTED
   1ba28:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
   1ba2c:	e5843008 	str	r3, [r4, #8]                                  <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
   1ba30:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1ba34:	e3a01008 	mov	r1, #8                                        <== NOT EXECUTED
   1ba38:	ebffdb7c 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1ba3c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1ba40:	1a00000a 	bne	1ba70 <rtems_rfs_file_open+0xf0>              <== NOT EXECUTED
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
      printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
  }                                                                   
                                                                      
  handle->flags  = oflag;                                             
   1ba44:	e586b000 	str	fp, [r6]                                      
  handle->shared = shared;                                            
   1ba48:	e586401c 	str	r4, [r6, #28]                                 
                                                                      
  *file = handle;                                                     
   1ba4c:	e5876000 	str	r6, [r7]                                      
                                                                      
  return 0;                                                           
   1ba50:	e3a0a000 	mov	sl, #0                                        
}                                                                     
   1ba54:	e1a0000a 	mov	r0, sl                                        
   1ba58:	e28dd004 	add	sp, sp, #4                                    
   1ba5c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  rtems_rfs_file_handle* handle;                                      
  rtems_rfs_file_shared* shared;                                      
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                    
    printf ("rtems-rfs: file-open: ino=%" PRId32 "\n", ino);          
   1ba60:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1ba64:	e59f022c 	ldr	r0, [pc, #556]	; 1bc98 <rtems_rfs_file_open+0x318><== NOT EXECUTED
   1ba68:	eb00128d 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1ba6c:	eaffffce 	b	1b9ac <rtems_rfs_file_open+0x2c>                <== NOT EXECUTED
  shared = rtems_rfs_file_get_shared (fs, ino);                       
  if (shared)                                                         
  {                                                                   
    shared->references++;                                             
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
      printf ("rtems-rfs: file-open: ino=%" PRId32 " shared\n", ino); 
   1ba70:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1ba74:	e59f0220 	ldr	r0, [pc, #544]	; 1bc9c <rtems_rfs_file_open+0x31c><== NOT EXECUTED
   1ba78:	eb001289 	bl	204a4 <printf>                                 <== NOT EXECUTED
  handle->flags  = oflag;                                             
  handle->shared = shared;                                            
                                                                      
  *file = handle;                                                     
                                                                      
  return 0;                                                           
   1ba7c:	e3a0a000 	mov	sl, #0                                        <== NOT EXECUTED
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
      printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
  }                                                                   
                                                                      
  handle->flags  = oflag;                                             
   1ba80:	e586b000 	str	fp, [r6]                                      <== NOT EXECUTED
  handle->shared = shared;                                            
   1ba84:	e586401c 	str	r4, [r6, #28]                                 <== NOT EXECUTED
                                                                      
  *file = handle;                                                     
   1ba88:	e5876000 	str	r6, [r7]                                      <== NOT EXECUTED
   1ba8c:	eafffff0 	b	1ba54 <rtems_rfs_file_open+0xd4>                <== NOT EXECUTED
  {                                                                   
    /*                                                                
     * None exists so create. Copy in the shared parts of the inode we hold in
     * memory.                                                        
     */                                                               
    shared = malloc (sizeof (rtems_rfs_file_shared));                 
   1ba90:	e3a0009c 	mov	r0, #156	; 0x9c                               
   1ba94:	ebffaf66 	bl	7834 <malloc>                                  
    if (!shared)                                                      
   1ba98:	e2504000 	subs	r4, r0, #0                                   
   1ba9c:	0a000037 	beq	1bb80 <rtems_rfs_file_open+0x200>             
      return ENOMEM;                                                  
    }                                                                 
                                                                      
    memset (shared, 0, sizeof (rtems_rfs_file_shared));               
                                                                      
    rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);        
   1baa0:	e284300c 	add	r3, r4, #12                                   
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return ENOMEM;                                                  
    }                                                                 
                                                                      
    memset (shared, 0, sizeof (rtems_rfs_file_shared));               
   1baa4:	e3a01000 	mov	r1, #0                                        
   1baa8:	e3a0209c 	mov	r2, #156	; 0x9c                               
                                                                      
    rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);        
   1baac:	e58d3000 	str	r3, [sp]                                      
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return ENOMEM;                                                  
    }                                                                 
                                                                      
    memset (shared, 0, sizeof (rtems_rfs_file_shared));               
   1bab0:	eb00120a 	bl	202e0 <memset>                                 
                                                                      
    rc = rtems_rfs_inode_open (fs, ino, &shared->inode, true);        
   1bab4:	e1a00008 	mov	r0, r8                                        
   1bab8:	e1a01005 	mov	r1, r5                                        
   1babc:	e59d2000 	ldr	r2, [sp]                                      
   1bac0:	e3a03001 	mov	r3, #1                                        
   1bac4:	ebffd4ff 	bl	10ec8 <rtems_rfs_inode_open>                   
    if (rc > 0)                                                       
   1bac8:	e250a000 	subs	sl, r0, #0                                   
   1bacc:	da000016 	ble	1bb2c <rtems_rfs_file_open+0x1ac>             
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
   1bad0:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1bad4:	e3a01008 	mov	r1, #8                                        <== NOT EXECUTED
   1bad8:	ebffdb54 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1badc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1bae0:	0a000005 	beq	1bafc <rtems_rfs_file_open+0x17c>             <== NOT EXECUTED
        printf ("rtems-rfs: file-open: inode open failed: %d: %s\n",  
   1bae4:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1bae8:	eb00171b 	bl	2175c <strerror>                               <== NOT EXECUTED
   1baec:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1baf0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1baf4:	e59f01a4 	ldr	r0, [pc, #420]	; 1bca0 <rtems_rfs_file_open+0x320><== NOT EXECUTED
   1baf8:	eb001269 	bl	204a4 <printf>                                 <== NOT EXECUTED
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
        printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
                rc, strerror (rc));                                   
      rtems_rfs_inode_close (fs, &shared->inode);                     
      free (shared);                                                  
   1bafc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1bb00:	ebffadcc 	bl	7238 <free>                                    <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1bb04:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1bb08:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   1bb0c:	ebfff87b 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1bb10:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   1bb14:	e5c63004 	strb	r3, [r6, #4]                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1bb18:	e5863008 	str	r3, [r6, #8]                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1bb1c:	e586300c 	str	r3, [r6, #12]                                 <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
   1bb20:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1bb24:	ebffadc3 	bl	7238 <free>                                    <== NOT EXECUTED
      return rc;                                                      
   1bb28:	eaffffc9 	b	1ba54 <rtems_rfs_file_open+0xd4>                <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_open (fs, &shared->inode, &shared->map); 
   1bb2c:	e1a00008 	mov	r0, r8                                        
   1bb30:	e59d1000 	ldr	r1, [sp]                                      
   1bb34:	e2842034 	add	r2, r4, #52	; 0x34                            
   1bb38:	ebfff4fe 	bl	18f38 <rtems_rfs_block_map_open>               
    if (rc > 0)                                                       
   1bb3c:	e250a000 	subs	sl, r0, #0                                   
   1bb40:	da000018 	ble	1bba8 <rtems_rfs_file_open+0x228>             
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                
   1bb44:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1bb48:	e3a01008 	mov	r1, #8                                        <== NOT EXECUTED
   1bb4c:	ebffdb37 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1bb50:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1bb54:	0a000005 	beq	1bb70 <rtems_rfs_file_open+0x1f0>             <== NOT EXECUTED
        printf ("rtems-rfs: file-open: block map open failed: %d: %s\n",
   1bb58:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1bb5c:	eb0016fe 	bl	2175c <strerror>                               <== NOT EXECUTED
   1bb60:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1bb64:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1bb68:	e59f0134 	ldr	r0, [pc, #308]	; 1bca4 <rtems_rfs_file_open+0x324><== NOT EXECUTED
   1bb6c:	eb00124c 	bl	204a4 <printf>                                 <== NOT EXECUTED
                rc, strerror (rc));                                   
      rtems_rfs_inode_close (fs, &shared->inode);                     
   1bb70:	e59d1000 	ldr	r1, [sp]                                      <== NOT EXECUTED
   1bb74:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1bb78:	ebffd54c 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
   1bb7c:	eaffffde 	b	1bafc <rtems_rfs_file_open+0x17c>               <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1bb80:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   1bb84:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1bb88:	ebfff85c 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1bb8c:	e5c64004 	strb	r4, [r6, #4]                                 <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1bb90:	e5864008 	str	r4, [r6, #8]                                  <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1bb94:	e586400c 	str	r4, [r6, #12]                                 <== NOT EXECUTED
     */                                                               
    shared = malloc (sizeof (rtems_rfs_file_shared));                 
    if (!shared)                                                      
    {                                                                 
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
   1bb98:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1bb9c:	ebffada5 	bl	7238 <free>                                    <== NOT EXECUTED
      return ENOMEM;                                                  
   1bba0:	e3a0a00c 	mov	sl, #12                                       <== NOT EXECUTED
   1bba4:	eaffffaa 	b	1ba54 <rtems_rfs_file_open+0xd4>                <== NOT EXECUTED
      rtems_rfs_buffer_handle_close (fs, &handle->buffer);            
      free (handle);                                                  
      return rc;                                                      
    }                                                                 
                                                                      
    shared->references = 1;                                           
   1bba8:	e3a03001 	mov	r3, #1                                        
   1bbac:	e5843008 	str	r3, [r4, #8]                                  
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
   1bbb0:	e5943018 	ldr	r3, [r4, #24]                                 
   1bbb4:	e5d3000d 	ldrb	r0, [r3, #13]                                
   1bbb8:	e5d3c00c 	ldrb	ip, [r3, #12]                                
   1bbbc:	e5d3200f 	ldrb	r2, [r3, #15]                                
   1bbc0:	e1a00800 	lsl	r0, r0, #16                                   
   1bbc4:	e5d3100e 	ldrb	r1, [r3, #14]                                
   1bbc8:	e1800c0c 	orr	r0, r0, ip, lsl #24                           
   1bbcc:	e1802002 	orr	r2, r0, r2                                    
   1bbd0:	e1822401 	orr	r2, r2, r1, lsl #8                            
    shared->size.count = rtems_rfs_inode_get_block_count (&shared->inode);
   1bbd4:	e5842084 	str	r2, [r4, #132]	; 0x84                         
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
   1bbd8:	e5d3100a 	ldrb	r1, [r3, #10]                                
   1bbdc:	e5d3200b 	ldrb	r2, [r3, #11]                                
    shared->size.offset = rtems_rfs_inode_get_block_offset (&shared->inode);
   1bbe0:	e1822401 	orr	r2, r2, r1, lsl #8                            
   1bbe4:	e5842088 	str	r2, [r4, #136]	; 0x88                         
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
   1bbe8:	e5d30011 	ldrb	r0, [r3, #17]                                
   1bbec:	e5d3c010 	ldrb	ip, [r3, #16]                                
   1bbf0:	e5d32013 	ldrb	r2, [r3, #19]                                
   1bbf4:	e1a00800 	lsl	r0, r0, #16                                   
   1bbf8:	e5d31012 	ldrb	r1, [r3, #18]                                
   1bbfc:	e1800c0c 	orr	r0, r0, ip, lsl #24                           
   1bc00:	e1802002 	orr	r2, r0, r2                                    
   1bc04:	e1822401 	orr	r2, r2, r1, lsl #8                            
    shared->atime = rtems_rfs_inode_get_atime (&shared->inode);       
   1bc08:	e584208c 	str	r2, [r4, #140]	; 0x8c                         
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
   1bc0c:	e5d30015 	ldrb	r0, [r3, #21]                                
   1bc10:	e5d3c014 	ldrb	ip, [r3, #20]                                
   1bc14:	e5d32017 	ldrb	r2, [r3, #23]                                
   1bc18:	e1a00800 	lsl	r0, r0, #16                                   
   1bc1c:	e5d31016 	ldrb	r1, [r3, #22]                                
   1bc20:	e1800c0c 	orr	r0, r0, ip, lsl #24                           
   1bc24:	e1802002 	orr	r2, r0, r2                                    
   1bc28:	e1822401 	orr	r2, r2, r1, lsl #8                            
    shared->mtime = rtems_rfs_inode_get_mtime (&shared->inode);       
   1bc2c:	e5842090 	str	r2, [r4, #144]	; 0x90                         
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
   1bc30:	e5d30019 	ldrb	r0, [r3, #25]                                
   1bc34:	e5d3c018 	ldrb	ip, [r3, #24]                                
   1bc38:	e5d3101b 	ldrb	r1, [r3, #27]                                
   1bc3c:	e1a00800 	lsl	r0, r0, #16                                   
   1bc40:	e5d3201a 	ldrb	r2, [r3, #26]                                
   1bc44:	e1803c0c 	orr	r3, r0, ip, lsl #24                           
   1bc48:	e1833001 	orr	r3, r3, r1                                    
   1bc4c:	e1833402 	orr	r3, r3, r2, lsl #8                            
    shared->ctime = rtems_rfs_inode_get_ctime (&shared->inode);       
   1bc50:	e5843094 	str	r3, [r4, #148]	; 0x94                         
   1bc54:	e2880074 	add	r0, r8, #116	; 0x74                           
   1bc58:	e1a01004 	mov	r1, r4                                        
    shared->fs = fs;                                                  
   1bc5c:	e5848098 	str	r8, [r4, #152]	; 0x98                         
   1bc60:	ebffc289 	bl	c68c <_Chain_Append>                           
                                                                      
    rtems_chain_append (&fs->file_shares, &shared->link);             
                                                                      
    rtems_rfs_inode_unload (fs, &shared->inode, false);               
   1bc64:	e59d1000 	ldr	r1, [sp]                                      
   1bc68:	e3a02000 	mov	r2, #0                                        
   1bc6c:	e1a00008 	mov	r0, r8                                        
   1bc70:	ebffd4d2 	bl	10fc0 <rtems_rfs_inode_unload>                 
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_OPEN))                  
   1bc74:	e3a00000 	mov	r0, #0                                        
   1bc78:	e3a01008 	mov	r1, #8                                        
   1bc7c:	ebffdaeb 	bl	12830 <rtems_rfs_trace>                        
   1bc80:	e3500000 	cmp	r0, #0                                        
   1bc84:	0affff6e 	beq	1ba44 <rtems_rfs_file_open+0xc4>              
      printf ("rtems-rfs: file-open: ino=%" PRId32 " share created\n", ino);
   1bc88:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1bc8c:	e59f0014 	ldr	r0, [pc, #20]	; 1bca8 <rtems_rfs_file_open+0x328><== NOT EXECUTED
   1bc90:	eb001203 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1bc94:	eaffff6a 	b	1ba44 <rtems_rfs_file_open+0xc4>                <== NOT EXECUTED
                                                                      

0001c414 <rtems_rfs_file_seek>: int rtems_rfs_file_seek (rtems_rfs_file_handle* handle, rtems_rfs_pos pos, rtems_rfs_pos* new_pos) {
   1c414:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
   1c418:	e1a06001 	mov	r6, r1                                        
   1c41c:	e24dd004 	sub	sp, sp, #4                                    
   1c420:	e1a04000 	mov	r4, r0                                        
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c424:	e3a01020 	mov	r1, #32                                       
   1c428:	e3a00000 	mov	r0, #0                                        
                                                                      
int                                                                   
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,                   
                     rtems_rfs_pos          pos,                      
                     rtems_rfs_pos*         new_pos)                  
{                                                                     
   1c42c:	e1a07002 	mov	r7, r2                                        
   1c430:	e1a05003 	mov	r5, r3                                        
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c434:	ebffd8fd 	bl	12830 <rtems_rfs_trace>                        
   1c438:	e3500000 	cmp	r0, #0                                        
   1c43c:	1a000021 	bne	1c4c8 <rtems_rfs_file_seek+0xb4>              
   *     file, this function does not itself extend the size of the file."
   *                                                                  
   * This means the file needs to set the file size to the pos only when a
   * write occurs.                                                    
   */                                                                 
  if (pos <= rtems_rfs_file_shared_get_size (rtems_rfs_file_fs (handle),
   1c440:	e594101c 	ldr	r1, [r4, #28]                                 
   1c444:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1c448:	e2811084 	add	r1, r1, #132	; 0x84                           
   1c44c:	ebfff2a9 	bl	18ef8 <rtems_rfs_block_get_size>               
   1c450:	e1510007 	cmp	r1, r7                                        
   1c454:	01500006 	cmpeq	r0, r6                                      
   1c458:	3a000013 	bcc	1c4ac <rtems_rfs_file_seek+0x98>              
                                            handle->shared))          
  {                                                                   
    rtems_rfs_file_set_bpos (handle, pos);                            
   1c45c:	e594301c 	ldr	r3, [r4, #28]                                 
   1c460:	e2848010 	add	r8, r4, #16                                   
   1c464:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1c468:	e1a01006 	mov	r1, r6                                        
   1c46c:	e1a03008 	mov	r3, r8                                        
   1c470:	e1a02007 	mov	r2, r7                                        
   1c474:	ebfff26f 	bl	18e38 <rtems_rfs_block_get_bpos>               
    /*                                                                
     * If the file has a block check if it maps to the current position and it
     * does not release it. That will force us to get the block at the new
     * position when the I/O starts.                                  
     */                                                               
    if (rtems_rfs_buffer_handle_has_block (&handle->buffer))          
   1c478:	e594300c 	ldr	r3, [r4, #12]                                 
   1c47c:	e3530000 	cmp	r3, #0                                        
   1c480:	0a00000d 	beq	1c4bc <rtems_rfs_file_seek+0xa8>              
    {                                                                 
      rtems_rfs_buffer_block block;                                   
      int                    rc;                                      
                                                                      
      rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),      
   1c484:	e594101c 	ldr	r1, [r4, #28]                                 
   1c488:	e1a02008 	mov	r2, r8                                        
   1c48c:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1c490:	e1a0300d 	mov	r3, sp                                        
   1c494:	e2811034 	add	r1, r1, #52	; 0x34                            
   1c498:	ebfff373 	bl	1926c <rtems_rfs_block_map_find>               
                                     rtems_rfs_file_map (handle),     
                                     rtems_rfs_file_bpos (handle),    
                                     &block);                         
      if (rc > 0)                                                     
   1c49c:	e3500000 	cmp	r0, #0                                        
   1c4a0:	da00000d 	ble	1c4dc <rtems_rfs_file_seek+0xc8>              
      return rc;                                                      
  }                                                                   
                                                                      
  *new_pos = pos;                                                     
  return 0;                                                           
}                                                                     
   1c4a4:	e28dd004 	add	sp, sp, #4                                    
   1c4a8:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  {                                                                   
    /*                                                                
     * The seek is outside the current file so release any buffer. A write will
     * extend the file.                                               
     */                                                               
    int rc = rtems_rfs_file_io_release (handle);                      
   1c4ac:	e1a00004 	mov	r0, r4                                        
   1c4b0:	ebffffce 	bl	1c3f0 <rtems_rfs_file_io_release>              
    if (rc > 0)                                                       
   1c4b4:	e3500000 	cmp	r0, #0                                        
   1c4b8:	cafffff9 	bgt	1c4a4 <rtems_rfs_file_seek+0x90>              
      return rc;                                                      
  }                                                                   
                                                                      
  *new_pos = pos;                                                     
   1c4bc:	e88500c0 	stm	r5, {r6, r7}                                  
  return 0;                                                           
   1c4c0:	e3a00000 	mov	r0, #0                                        
   1c4c4:	eafffff6 	b	1c4a4 <rtems_rfs_file_seek+0x90>                
rtems_rfs_file_seek (rtems_rfs_file_handle* handle,                   
                     rtems_rfs_pos          pos,                      
                     rtems_rfs_pos*         new_pos)                  
{                                                                     
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-seek: new=%" PRIu64 "\n", pos);          
   1c4c8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1c4cc:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   1c4d0:	e59f0030 	ldr	r0, [pc, #48]	; 1c508 <rtems_rfs_file_seek+0xf4><== NOT EXECUTED
   1c4d4:	eb000ff2 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1c4d8:	eaffffd8 	b	1c440 <rtems_rfs_file_seek+0x2c>                <== NOT EXECUTED
                                     rtems_rfs_file_map (handle),     
                                     rtems_rfs_file_bpos (handle),    
                                     &block);                         
      if (rc > 0)                                                     
        return rc;                                                    
      if (rtems_rfs_buffer_bnum (&handle->buffer) != block)           
   1c4dc:	e5942008 	ldr	r2, [r4, #8]                                  
   1c4e0:	e59d3000 	ldr	r3, [sp]                                      
   1c4e4:	e1520003 	cmp	r2, r3                                        
   1c4e8:	0afffff3 	beq	1c4bc <rtems_rfs_file_seek+0xa8>              
      {                                                               
        rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
   1c4ec:	e594301c 	ldr	r3, [r4, #28]                                 <== NOT EXECUTED
   1c4f0:	e2841004 	add	r1, r4, #4                                    <== NOT EXECUTED
   1c4f4:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         <== NOT EXECUTED
   1c4f8:	ebfff600 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
                                              rtems_rfs_file_buffer (handle));
        if (rc > 0)                                                   
   1c4fc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1c500:	caffffe7 	bgt	1c4a4 <rtems_rfs_file_seek+0x90>              <== NOT EXECUTED
   1c504:	eaffffec 	b	1c4bc <rtems_rfs_file_seek+0xa8>                <== NOT EXECUTED
                                                                      

0001c50c <rtems_rfs_file_set_size>: } int rtems_rfs_file_set_size (rtems_rfs_file_handle* handle, rtems_rfs_pos new_size) {
   1c50c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1c510:	e24dd018 	sub	sp, sp, #24                                   
   1c514:	e1a04000 	mov	r4, r0                                        
   1c518:	e88d0006 	stm	sp, {r1, r2}                                  
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
  rtems_rfs_pos        size;                                          
  int                  rc;                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c51c:	e3a00000 	mov	r0, #0                                        
   1c520:	e3a01020 	mov	r1, #32                                       
                                                                      
int                                                                   
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,               
                         rtems_rfs_pos          new_size)             
{                                                                     
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
   1c524:	e594601c 	ldr	r6, [r4, #28]                                 
  rtems_rfs_pos        size;                                          
  int                  rc;                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
   1c528:	ebffd8c0 	bl	12830 <rtems_rfs_trace>                        
   1c52c:	e3500000 	cmp	r0, #0                                        
   1c530:	1a000093 	bne	1c784 <rtems_rfs_file_set_size+0x278>         
    printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
                                                                      
  size = rtems_rfs_file_size (handle);                                
   1c534:	e594101c 	ldr	r1, [r4, #28]                                 
   1c538:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1c53c:	e2811084 	add	r1, r1, #132	; 0x84                           
   1c540:	ebfff26c 	bl	18ef8 <rtems_rfs_block_get_size>               
  /*                                                                  
   * If the file is same size do nothing else grow or shrink it ?     
   *                                                                  
   * If the file does not change size do not update the times.        
   */                                                                 
  if (size != new_size)                                               
   1c544:	e89d1800 	ldm	sp, {fp, ip}                                  
   1c548:	e15c0001 	cmp	ip, r1                                        
   1c54c:	015b0000 	cmpeq	fp, r0                                      
   1c550:	0a000089 	beq	1c77c <rtems_rfs_file_set_size+0x270>         
  {                                                                   
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
   1c554:	e19bc00c 	orrs	ip, fp, ip                                   
                                                                      
int                                                                   
rtems_rfs_file_set_size (rtems_rfs_file_handle* handle,               
                         rtems_rfs_pos          new_size)             
{                                                                     
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
   1c558:	e286a034 	add	sl, r6, #52	; 0x34                            
  if (size != new_size)                                               
  {                                                                   
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
   1c55c:	0a00008c 	beq	1c794 <rtems_rfs_file_set_size+0x288>         
      if (rc > 0)                                                     
        return rc;                                                    
    }                                                                 
    else                                                              
    {                                                                 
      if (size < new_size)                                            
   1c560:	e89d1800 	ldm	sp, {fp, ip}                                  
   1c564:	e151000c 	cmp	r1, ip                                        
   1c568:	0150000b 	cmpeq	r0, fp                                      
   1c56c:	2a000055 	bcs	1c6c8 <rtems_rfs_file_set_size+0x1bc>         
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
   1c570:	e594801c 	ldr	r8, [r4, #28]                                 
         */                                                           
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
   1c574:	e05bb000 	subs	fp, fp, r0                                   
   1c578:	e0ccc001 	sbc	ip, ip, r1                                    
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
   1c57c:	e5983098 	ldr	r3, [r8, #152]	; 0x98                         
         */                                                           
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
   1c580:	e88d1800 	stm	sp, {fp, ip}                                  
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
   1c584:	e19bc00c 	orrs	ip, fp, ip                                   
        rtems_rfs_pos count;                                          
        uint32_t      length;                                         
        bool          read_block;                                     
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
   1c588:	e1a07008 	mov	r7, r8                                        
   1c58c:	e5935008 	ldr	r5, [r3, #8]                                  
        read_block = false;                                           
                                                                      
        while (count)                                                 
   1c590:	13a09000 	movne	r9, #0                                      
             * Have we reached the EOF ?                              
             */                                                       
            if (rc != ENXIO)                                          
              return rc;                                              
                                                                      
            rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),
   1c594:	13a08001 	movne	r8, #1                                      
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
   1c598:	1a000017 	bne	1c5fc <rtems_rfs_file_set_size+0xf0>          
   1c59c:	ea000083 	b	1c7b0 <rtems_rfs_file_set_size+0x2a4>           <== NOT EXECUTED
                                                rtems_rfs_file_buffer (handle),
                                                block, read_block);   
          if (rc > 0)                                                 
            return rc;                                                
                                                                      
          dst = rtems_rfs_buffer_data (&handle->buffer);              
   1c5a0:	e594200c 	ldr	r2, [r4, #12]                                 
          memset (dst + bpos.boff, 0, length - bpos.boff);            
   1c5a4:	e59d300c 	ldr	r3, [sp, #12]                                 
   1c5a8:	e592001c 	ldr	r0, [r2, #28]                                 
   1c5ac:	e3a01000 	mov	r1, #0                                        
   1c5b0:	e0632005 	rsb	r2, r3, r5                                    
   1c5b4:	e0800003 	add	r0, r0, r3                                    
   1c5b8:	eb000f48 	bl	202e0 <memset>                                 
                                                                      
          rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
                                                                      
          rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
   1c5bc:	e594301c 	ldr	r3, [r4, #28]                                 
            return rc;                                                
                                                                      
          dst = rtems_rfs_buffer_data (&handle->buffer);              
          memset (dst + bpos.boff, 0, length - bpos.boff);            
                                                                      
          rtems_rfs_buffer_mark_dirty (rtems_rfs_file_buffer (handle));
   1c5c0:	e5c48004 	strb	r8, [r4, #4]                                 
                                                                      
          rc = rtems_rfs_buffer_handle_release (rtems_rfs_file_fs (handle),
   1c5c4:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1c5c8:	e1a01007 	mov	r1, r7                                        
   1c5cc:	ebfff5cb 	bl	19d00 <rtems_rfs_buffer_handle_release>        
                                                rtems_rfs_file_buffer (handle));
          if (rc > 0)                                                 
   1c5d0:	e2503000 	subs	r3, r0, #0                                   
   1c5d4:	ca000038 	bgt	1c6bc <rtems_rfs_file_set_size+0x1b0>         
            return rc;                                                
                                                                      
          count -= length - bpos.boff;                                
   1c5d8:	e59d300c 	ldr	r3, [sp, #12]                                 
   1c5dc:	e89d1800 	ldm	sp, {fp, ip}                                  
   1c5e0:	e0633005 	rsb	r3, r3, r5                                    
   1c5e4:	e05bb003 	subs	fp, fp, r3                                   
   1c5e8:	e2ccc000 	sbc	ip, ip, #0                                    
   1c5ec:	e88d1800 	stm	sp, {fp, ip}                                  
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
   1c5f0:	e19bc00c 	orrs	ip, fp, ip                                   
   1c5f4:	0a00006c 	beq	1c7ac <rtems_rfs_file_set_size+0x2a0>         
   1c5f8:	e594701c 	ldr	r7, [r4, #28]                                 
          /*                                                          
           * Get the block position for the current end of the file as seen by
           * the map. If not found and the EOF grow the map then fill the block
           * with 0.                                                  
           */                                                         
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map), &bpos);
   1c5fc:	e286203c 	add	r2, r6, #60	; 0x3c                            
   1c600:	e892000c 	ldm	r2, {r2, r3}                                  
   1c604:	e3530000 	cmp	r3, #0                                        
   1c608:	e58d2008 	str	r2, [sp, #8]                                  
   1c60c:	e58d300c 	str	r3, [sp, #12]                                 
   1c610:	12422001 	subne	r2, r2, #1                                  
   1c614:	e3a03000 	mov	r3, #0                                        
   1c618:	158d2008 	strne	r2, [sp, #8]                                
   1c61c:	e58d3010 	str	r3, [sp, #16]                                 
          rc = rtems_rfs_block_map_find (rtems_rfs_file_fs (handle),  
   1c620:	e5970098 	ldr	r0, [r7, #152]	; 0x98                         
   1c624:	e28d3014 	add	r3, sp, #20                                   
   1c628:	e1a0100a 	mov	r1, sl                                        
   1c62c:	e28d2008 	add	r2, sp, #8                                    
   1c630:	ebfff30d 	bl	1926c <rtems_rfs_block_map_find>               
                                         map, &bpos, &block);         
          if (rc > 0)                                                 
   1c634:	e2503000 	subs	r3, r0, #0                                   
   1c638:	da000009 	ble	1c664 <rtems_rfs_file_set_size+0x158>         
          {                                                           
            /*                                                        
             * Have we reached the EOF ?                              
             */                                                       
            if (rc != ENXIO)                                          
   1c63c:	e3530006 	cmp	r3, #6                                        
   1c640:	1a00001d 	bne	1c6bc <rtems_rfs_file_set_size+0x1b0>         
              return rc;                                              
                                                                      
            rc = rtems_rfs_block_map_grow (rtems_rfs_file_fs (handle),
   1c644:	e594301c 	ldr	r3, [r4, #28]                                 
   1c648:	e1a0100a 	mov	r1, sl                                        
   1c64c:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1c650:	e3a02001 	mov	r2, #1                                        
   1c654:	e28d3014 	add	r3, sp, #20                                   
   1c658:	ebfff389 	bl	19484 <rtems_rfs_block_map_grow>               
                                           map, 1, &block);           
            if (rc > 0)                                               
   1c65c:	e2503000 	subs	r3, r0, #0                                   
   1c660:	ca000015 	bgt	1c6bc <rtems_rfs_file_set_size+0x1b0>         
              return rc;                                              
          }                                                           
                                                                      
          if (count < (length - bpos.boff))                           
   1c664:	e59d100c 	ldr	r1, [sp, #12]                                 
   1c668:	e89d1800 	ldm	sp, {fp, ip}                                  
   1c66c:	e0610005 	rsb	r0, r1, r5                                    
   1c670:	e3a03000 	mov	r3, #0                                        
   1c674:	e1a02000 	mov	r2, r0                                        
   1c678:	e15c0003 	cmp	ip, r3                                        
   1c67c:	015b0002 	cmpeq	fp, r2                                      
          }                                                           
                                                                      
          /*                                                          
           * Only read the block if the length is not the block size. 
           */                                                         
          rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
   1c680:	e594201c 	ldr	r2, [r4, #28]                                 
              return rc;                                              
          }                                                           
                                                                      
          if (count < (length - bpos.boff))                           
          {                                                           
            length = count + bpos.boff;                               
   1c684:	3081500b 	addcc	r5, r1, fp                                  
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
   1c688:	23a03000 	movcs	r3, #0                                      
  map->dirty = true;                                                  
   1c68c:	33a09001 	movcc	r9, #1                                      
          }                                                           
                                                                      
          /*                                                          
           * Only read the block if the length is not the block size. 
           */                                                         
          rc = rtems_rfs_buffer_handle_request (rtems_rfs_file_fs (handle),
   1c690:	e2847004 	add	r7, r4, #4                                    
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
   1c694:	25863040 	strcs	r3, [r6, #64]	; 0x40                        
   1c698:	35865040 	strcc	r5, [r6, #64]	; 0x40                        
  map->dirty = true;                                                  
   1c69c:	e1a03009 	mov	r3, r9                                        
   1c6a0:	e5920098 	ldr	r0, [r2, #152]	; 0x98                         
   1c6a4:	e5c68034 	strb	r8, [r6, #52]	; 0x34                         
   1c6a8:	e1a01007 	mov	r1, r7                                        
   1c6ac:	e59d2014 	ldr	r2, [sp, #20]                                 
   1c6b0:	ebfff60b 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
                                                rtems_rfs_file_buffer (handle),
                                                block, read_block);   
          if (rc > 0)                                                 
   1c6b4:	e2503000 	subs	r3, r0, #0                                   
   1c6b8:	daffffb8 	ble	1c5a0 <rtems_rfs_file_set_size+0x94>          
    if (rtems_rfs_file_update_mtime (handle))                         
      handle->shared->mtime = time (NULL);                            
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   1c6bc:	e1a00003 	mov	r0, r3                                        
   1c6c0:	e28dd018 	add	sp, sp, #24                                   
   1c6c4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
   1c6c8:	e594701c 	ldr	r7, [r4, #28]                                 
   1c6cc:	e597a098 	ldr	sl, [r7, #152]	; 0x98                         
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
   1c6d0:	e89d1800 	ldm	sp, {fp, ip}                                  
   1c6d4:	e59a8008 	ldr	r8, [sl, #8]                                  
   1c6d8:	e3e00000 	mvn	r0, #0                                        
   1c6dc:	e090000b 	adds	r0, r0, fp                                   
   1c6e0:	e3e01000 	mvn	r1, #0                                        
   1c6e4:	e0a1100c 	adc	r1, r1, ip                                    
   1c6e8:	e1a02008 	mov	r2, r8                                        
   1c6ec:	e3a03000 	mov	r3, #0                                        
   1c6f0:	eb004735 	bl	2e3cc <__udivdi3>                              
         */                                                           
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
          rtems_rfs_block_map_count (map) -                           
   1c6f4:	e596503c 	ldr	r5, [r6, #60]	; 0x3c                          
         * Shrink                                                     
         */                                                           
        rtems_rfs_block_no blocks;                                    
        uint32_t           offset;                                    
                                                                      
        blocks =                                                      
   1c6f8:	e1e02000 	mvn	r2, r0                                        
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
                                                                      
        offset =                                                      
          new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
                                                                      
        if (blocks)                                                   
   1c6fc:	e0922005 	adds	r2, r2, r5                                   
   1c700:	1a000036 	bne	1c7e0 <rtems_rfs_file_set_size+0x2d4>         
          rtems_rfs_block_map_count (map) -                           
          (((new_size - 1) /                                          
            rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle))) + 1);
                                                                      
        offset =                                                      
          new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
   1c704:	e1a02008 	mov	r2, r8                                        
   1c708:	e3a03000 	mov	r3, #0                                        
   1c70c:	e89d0003 	ldm	sp, {r0, r1}                                  
   1c710:	eb004851 	bl	2e85c <__umoddi3>                              
            return rc;                                                
        }                                                             
                                                                      
        rtems_rfs_block_map_set_size_offset (map, offset);            
                                                                      
        if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
   1c714:	e5943010 	ldr	r3, [r4, #16]                                 
   1c718:	e3a02001 	mov	r2, #1                                        
   1c71c:	e3530000 	cmp	r3, #0                                        
 */                                                                   
static inline void                                                    
rtems_rfs_block_map_set_size_offset (rtems_rfs_block_map* map,        
                                     rtems_rfs_block_off  offset)     
{                                                                     
  map->size.offset = offset;                                          
   1c720:	e5860040 	str	r0, [r6, #64]	; 0x40                          
  map->dirty = true;                                                  
   1c724:	e5c62034 	strb	r2, [r6, #52]	; 0x34                         
   1c728:	0a000023 	beq	1c7bc <rtems_rfs_file_set_size+0x2b0>         
   1c72c:	e3550000 	cmp	r5, #0                                        
   1c730:	1a000021 	bne	1c7bc <rtems_rfs_file_set_size+0x2b0>         
                                          rtems_rfs_block_map_size (map)))
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
   1c734:	e3a03000 	mov	r3, #0                                        
   1c738:	e3500000 	cmp	r0, #0                                        
   1c73c:	e5843018 	str	r3, [r4, #24]                                 
   1c740:	12453001 	subne	r3, r5, #1                                  
   1c744:	e5845010 	str	r5, [r4, #16]                                 
   1c748:	e5840014 	str	r0, [r4, #20]                                 
   1c74c:	15843010 	strne	r3, [r4, #16]                               
   1c750:	e1a08007 	mov	r8, r7                                        
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
   1c754:	e5944000 	ldr	r4, [r4]                                      
   1c758:	e2144002 	ands	r4, r4, #2                                   
          rtems_rfs_block_size_get_bpos (rtems_rfs_block_map_size (map),
                                         rtems_rfs_file_bpos (handle));
      }                                                               
    }                                                                 
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
   1c75c:	e5885084 	str	r5, [r8, #132]	; 0x84                         
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
   1c760:	e5880088 	str	r0, [r8, #136]	; 0x88                         
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
   1c764:	1a000004 	bne	1c77c <rtems_rfs_file_set_size+0x270>         
      handle->shared->mtime = time (NULL);                            
   1c768:	e1a00004 	mov	r0, r4                                        
   1c76c:	eb001f87 	bl	24590 <time>                                   
  }                                                                   
                                                                      
  return 0;                                                           
   1c770:	e1a03004 	mov	r3, r4                                        
                                                                      
    handle->shared->size.count  = rtems_rfs_block_map_count (map);    
    handle->shared->size.offset = rtems_rfs_block_map_size_offset (map);
                                                                      
    if (rtems_rfs_file_update_mtime (handle))                         
      handle->shared->mtime = time (NULL);                            
   1c774:	e5880090 	str	r0, [r8, #144]	; 0x90                         
   1c778:	eaffffcf 	b	1c6bc <rtems_rfs_file_set_size+0x1b0>           
  }                                                                   
                                                                      
  return 0;                                                           
   1c77c:	e3a03000 	mov	r3, #0                                        
   1c780:	eaffffcd 	b	1c6bc <rtems_rfs_file_set_size+0x1b0>           
  rtems_rfs_block_map* map  = rtems_rfs_file_map (handle);            
  rtems_rfs_pos        size;                                          
  int                  rc;                                            
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_FILE_IO))                      
    printf ("rtems-rfs: file-set-size: size=%" PRIu64 "\n", new_size);
   1c784:	e89d0006 	ldm	sp, {r1, r2}                                  <== NOT EXECUTED
   1c788:	e59f0070 	ldr	r0, [pc, #112]	; 1c800 <rtems_rfs_file_set_size+0x2f4><== NOT EXECUTED
   1c78c:	eb000f44 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1c790:	eaffff67 	b	1c534 <rtems_rfs_file_set_size+0x28>            <== NOT EXECUTED
    /*                                                                
     * Short cut for the common truncate on open call.                
     */                                                               
    if (new_size == 0)                                                
    {                                                                 
      rc = rtems_rfs_block_map_free_all (rtems_rfs_file_fs (handle), map);
   1c794:	e594301c 	ldr	r3, [r4, #28]                                 
   1c798:	e1a0100a 	mov	r1, sl                                        
   1c79c:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1c7a0:	ebfff4f1 	bl	19b6c <rtems_rfs_block_map_free_all>           
      if (rc > 0)                                                     
   1c7a4:	e2503000 	subs	r3, r0, #0                                   
   1c7a8:	caffffc3 	bgt	1c6bc <rtems_rfs_file_set_size+0x1b0>         
                                                                      
        count = new_size - size;                                      
        length = rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
        read_block = false;                                           
                                                                      
        while (count)                                                 
   1c7ac:	e594801c 	ldr	r8, [r4, #28]                                 
   1c7b0:	e596503c 	ldr	r5, [r6, #60]	; 0x3c                          
   1c7b4:	e5960040 	ldr	r0, [r6, #64]	; 0x40                          
   1c7b8:	eaffffe5 	b	1c754 <rtems_rfs_file_set_size+0x248>           
            return rc;                                                
        }                                                             
                                                                      
        rtems_rfs_block_map_set_size_offset (map, offset);            
                                                                      
        if (rtems_rfs_block_pos_past_end (rtems_rfs_file_bpos (handle),
   1c7bc:	e1530005 	cmp	r3, r5                                        
   1c7c0:	2affffdb 	bcs	1c734 <rtems_rfs_file_set_size+0x228>         
   1c7c4:	e2452001 	sub	r2, r5, #1                                    
   1c7c8:	e1530002 	cmp	r3, r2                                        
   1c7cc:	1affffdf 	bne	1c750 <rtems_rfs_file_set_size+0x244>         
   1c7d0:	e5943014 	ldr	r3, [r4, #20]                                 
   1c7d4:	e1500003 	cmp	r0, r3                                        
   1c7d8:	3affffd5 	bcc	1c734 <rtems_rfs_file_set_size+0x228>         
   1c7dc:	eaffffdb 	b	1c750 <rtems_rfs_file_set_size+0x244>           
          new_size % rtems_rfs_fs_block_size (rtems_rfs_file_fs (handle));
                                                                      
        if (blocks)                                                   
        {                                                             
          int rc;                                                     
          rc = rtems_rfs_block_map_shrink (rtems_rfs_file_fs (handle),
   1c7e0:	e1a0000a 	mov	r0, sl                                        
   1c7e4:	e2871034 	add	r1, r7, #52	; 0x34                            
   1c7e8:	ebfff423 	bl	1987c <rtems_rfs_block_map_shrink>             
                                           rtems_rfs_file_map (handle),
                                           blocks);                   
          if (rc > 0)                                                 
   1c7ec:	e2503000 	subs	r3, r0, #0                                   
   1c7f0:	caffffb1 	bgt	1c6bc <rtems_rfs_file_set_size+0x1b0>         
   1c7f4:	e596503c 	ldr	r5, [r6, #60]	; 0x3c                          
   1c7f8:	e594701c 	ldr	r7, [r4, #28]                                 
   1c7fc:	eaffffc0 	b	1c704 <rtems_rfs_file_set_size+0x1f8>           
                                                                      

0000f868 <rtems_rfs_format>: return rc; } int rtems_rfs_format (const char* name, const rtems_rfs_format_config* config) {
    f868:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
    f86c:	e5d13015 	ldrb	r3, [r1, #21]                                
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_format (const char* name, const rtems_rfs_format_config* config)
{                                                                     
    f870:	e24dd0e4 	sub	sp, sp, #228	; 0xe4                           
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
    f874:	e3530000 	cmp	r3, #0                                        
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_format (const char* name, const rtems_rfs_format_config* config)
{                                                                     
    f878:	e1a0a001 	mov	sl, r1                                        
    f87c:	e58d0008 	str	r0, [sp, #8]                                  
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
    f880:	1a0000e6 	bne	fc20 <rtems_rfs_format+0x3b8>                 
    printf ("rtems-rfs: format: %s\n", name);                         
                                                                      
  memset (&fs, 0, sizeof (rtems_rfs_file_system));                    
    f884:	e3a01000 	mov	r1, #0                                        
    f888:	e3a02084 	mov	r2, #132	; 0x84                               
    f88c:	e28d000c 	add	r0, sp, #12                                   
    f890:	eb004292 	bl	202e0 <memset>                                 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
    f894:	e28de0e4 	add	lr, sp, #228	; 0xe4                           
    f898:	e28d1054 	add	r1, sp, #84	; 0x54                            
    f89c:	e1a0300e 	mov	r3, lr                                        
    f8a0:	e1a0c00e 	mov	ip, lr                                        
    f8a4:	e1a0200e 	mov	r2, lr                                        
    f8a8:	e52e1094 	str	r1, [lr, #-148]!	; 0x94                       
    f8ac:	e28d1064 	add	r1, sp, #100	; 0x64                           
    f8b0:	e52c1084 	str	r1, [ip, #-132]!	; 0x84                       
    f8b4:	e28d1074 	add	r1, sp, #116	; 0x74                           
    f8b8:	e5221074 	str	r1, [r2, #-116]!	; 0x74                       
    f8bc:	e28d1084 	add	r1, sp, #132	; 0x84                           
    f8c0:	e5231064 	str	r1, [r3, #-100]!	; 0x64                       
  head->previous = NULL;                                              
  tail->previous = head;                                              
    f8c4:	e58d3088 	str	r3, [sp, #136]	; 0x88                         
  rtems_chain_initialize_empty (&fs.buffers);                         
  rtems_chain_initialize_empty (&fs.release);                         
  rtems_chain_initialize_empty (&fs.release_modified);                
  rtems_chain_initialize_empty (&fs.file_shares);                     
                                                                      
  fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;                
    f8c8:	e3a03005 	mov	r3, #5                                        
    f8cc:	e58d304c 	str	r3, [sp, #76]	; 0x4c                          
  fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;                             
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
    f8d0:	e59d0008 	ldr	r0, [sp, #8]                                  
  fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;                
                                                                      
  fs.release_count = 0;                                               
  fs.release_modified_count = 0;                                      
                                                                      
  fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;                             
    f8d4:	e3a03002 	mov	r3, #2                                        
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
    f8d8:	e28d100c 	add	r1, sp, #12                                   
    f8dc:	e58de058 	str	lr, [sp, #88]	; 0x58                          
    f8e0:	e58dc068 	str	ip, [sp, #104]	; 0x68                         
    f8e4:	e58d2078 	str	r2, [sp, #120]	; 0x78                         
  fs.max_held_buffers = RTEMS_RFS_FS_MAX_HELD_BUFFERS;                
                                                                      
  fs.release_count = 0;                                               
  fs.release_modified_count = 0;                                      
                                                                      
  fs.flags = RTEMS_RFS_FS_NO_LOCAL_CACHE;                             
    f8e8:	e58d300c 	str	r3, [sp, #12]                                 
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
    f8ec:	eb002a23 	bl	1a180 <rtems_rfs_buffer_open>                  
  if (rc > 0)                                                         
    f8f0:	e2504000 	subs	r4, r0, #0                                   
    f8f4:	ca0002f4 	bgt	104cc <rtems_rfs_format+0xc64>                
  }                                                                   
                                                                      
  /*                                                                  
   * Check the media.                                                 
   */                                                                 
  if (rtems_rfs_fs_media_block_size (&fs) == 0)                       
    f8f8:	e59d301c 	ldr	r3, [sp, #28]                                 
    f8fc:	e5935020 	ldr	r5, [r3, #32]                                 
    f900:	e3550000 	cmp	r5, #0                                        
    f904:	0a0002fe 	beq	10504 <rtems_rfs_format+0xc9c>                
                                                                      
static bool                                                           
rtems_rfs_check_config (rtems_rfs_file_system*         fs,            
                        const rtems_rfs_format_config* config)        
{                                                                     
  fs->block_size = config->block_size;                                
    f908:	e59a4000 	ldr	r4, [sl]                                      
  if (!fs->block_size)                                                
    f90c:	e3540000 	cmp	r4, #0                                        
                                                                      
static bool                                                           
rtems_rfs_check_config (rtems_rfs_file_system*         fs,            
                        const rtems_rfs_format_config* config)        
{                                                                     
  fs->block_size = config->block_size;                                
    f910:	e58d4014 	str	r4, [sp, #20]                                 
  if (!fs->block_size)                                                
    f914:	0a0000c5 	beq	fc30 <rtems_rfs_format+0x3c8>                 
                                                                      
    if (fs->block_size > (4 * 1024))                                  
      fs->block_size = (4 * 1024);                                    
  }                                                                   
                                                                      
  if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)     
    f918:	e1a00004 	mov	r0, r4                                        
    f91c:	e1a01005 	mov	r1, r5                                        
    f920:	eb0075b4 	bl	2cff8 <__umodsi3>                              
    f924:	e3500000 	cmp	r0, #0                                        
    f928:	1a0000e2 	bne	fcb8 <rtems_rfs_format+0x450>                 
    printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
            fs->block_size, rtems_rfs_fs_media_block_size (fs));      
    return false;                                                     
  }                                                                   
                                                                      
  fs->group_blocks = config->group_blocks;                            
    f92c:	e59a3004 	ldr	r3, [sl, #4]                                  
  if (!fs->group_blocks)                                              
    f930:	e3530000 	cmp	r3, #0                                        
  {                                                                   
    /*                                                                
     * The number of blocks per group is defined by the number of bits in a
     * block.                                                         
     */                                                               
    fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);  
    f934:	01a04184 	lsleq	r4, r4, #3                                  
    printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
            fs->block_size, rtems_rfs_fs_media_block_size (fs));      
    return false;                                                     
  }                                                                   
                                                                      
  fs->group_blocks = config->group_blocks;                            
    f938:	e58d3034 	str	r3, [sp, #52]	; 0x34                          
  {                                                                   
    /*                                                                
     * The number of blocks per group is defined by the number of bits in a
     * block.                                                         
     */                                                               
    fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);  
    f93c:	058d4034 	streq	r4, [sp, #52]	; 0x34                        
            fs->block_size, rtems_rfs_fs_media_block_size (fs));      
    return false;                                                     
  }                                                                   
                                                                      
  fs->group_blocks = config->group_blocks;                            
  if (!fs->group_blocks)                                              
    f940:	1a000048 	bne	fa68 <rtems_rfs_format+0x200>                 
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
    return false;                                                     
  }                                                                   
                                                                      
  fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;         
    f944:	e28d000c 	add	r0, sp, #12                                   
    f948:	eb0033c5 	bl	1c864 <rtems_rfs_fs_media_size>                
    f94c:	e59d4014 	ldr	r4, [sp, #20]                                 
    f950:	e3a03000 	mov	r3, #0                                        
    f954:	e1a02004 	mov	r2, r4                                        
    f958:	eb007a9b 	bl	2e3cc <__udivdi3>                              
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    f95c:	e3500000 	cmp	r0, #0                                        
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
    return false;                                                     
  }                                                                   
                                                                      
  fs->blocks = rtems_rfs_fs_media_size (fs) / fs->block_size;         
    f960:	e1a05000 	mov	r5, r0                                        
    f964:	e58d0010 	str	r0, [sp, #16]                                 
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
    f968:	e1a06184 	lsl	r6, r4, #3                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
    f96c:	03a01001 	moveq	r1, #1                                      
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    f970:	0a000003 	beq	f984 <rtems_rfs_format+0x11c>                 
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    f974:	e1a01006 	mov	r1, r6                                        
    f978:	e2450001 	sub	r0, r5, #1                                    
    f97c:	ebffc849 	bl	1aa8 <__aeabi_uidiv>                           
    f980:	e2801001 	add	r1, r0, #1                                    
   * per block.                                                       
   */                                                                 
  fs->group_count = rtems_rfs_rup_quotient (rtems_rfs_fs_blocks (fs), 
                                            rtems_rfs_bits_per_block (fs));
                                                                      
  fs->group_inodes = config->group_inodes;                            
    f984:	e59a0008 	ldr	r0, [sl, #8]                                  
  if (!fs->group_inodes)                                              
    f988:	e3500000 	cmp	r0, #0                                        
  /*                                                                  
   * The bits per block sets the upper limit for the number of blocks in a
   * group. The disk will be divided into groups which are the number of bits
   * per block.                                                       
   */                                                                 
  fs->group_count = rtems_rfs_rup_quotient (rtems_rfs_fs_blocks (fs), 
    f98c:	e58d1030 	str	r1, [sp, #48]	; 0x30                          
                                            rtems_rfs_bits_per_block (fs));
                                                                      
  fs->group_inodes = config->group_inodes;                            
  if (!fs->group_inodes)                                              
    f990:	0a00011e 	beq	fe10 <rtems_rfs_format+0x5a8>                 
    f994:	e59f3c44 	ldr	r3, [pc, #3140]	; 105e0 <rtems_rfs_format+0xd78><== NOT EXECUTED
    f998:	e1a051a4 	lsr	r5, r4, #3                                    <== NOT EXECUTED
    f99c:	e0852593 	umull	r2, r5, r3, r5                              <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
    f9a0:	e58d503c 	str	r5, [sp, #60]	; 0x3c                          <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    f9a4:	e2400001 	sub	r0, r0, #1                                    
    f9a8:	e1a01005 	mov	r1, r5                                        
    f9ac:	ebffc83d 	bl	1aa8 <__aeabi_uidiv>                           
    f9b0:	e2800001 	add	r0, r0, #1                                    
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
  fs->group_inodes =                                                  
    rtems_rfs_rup_quotient (fs->group_inodes,                         
                            fs->inodes_per_block) * fs->inodes_per_block;
    f9b4:	e0050590 	mul	r5, r0, r5                                    
                                                                      
  if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
    fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);  
                                                                      
  fs->max_name_length = config->max_name_length;                      
    f9b8:	e59a3010 	ldr	r3, [sl, #16]                                 
  fs->group_inodes =                                                  
    rtems_rfs_rup_quotient (fs->group_inodes,                         
                            fs->inodes_per_block) * fs->inodes_per_block;
                                                                      
  if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
    fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);  
    f9bc:	e1560005 	cmp	r6, r5                                        
    f9c0:	958d6038 	strls	r6, [sp, #56]	; 0x38                        
    f9c4:	858d5038 	strhi	r5, [sp, #56]	; 0x38                        
                                                                      
  fs->max_name_length = config->max_name_length;                      
  if (!fs->max_name_length)                                           
    f9c8:	e3530000 	cmp	r3, #0                                        
                            fs->inodes_per_block) * fs->inodes_per_block;
                                                                      
  if (fs->group_inodes > rtems_rfs_bitmap_numof_bits (fs->block_size))
    fs->group_inodes = rtems_rfs_bitmap_numof_bits (fs->block_size);  
                                                                      
  fs->max_name_length = config->max_name_length;                      
    f9cc:	e58d3028 	str	r3, [sp, #40]	; 0x28                          
  if (!fs->max_name_length)                                           
  {                                                                   
    fs->max_name_length = 512;                                        
    f9d0:	03a03c02 	moveq	r3, #512	; 0x200                            
    f9d4:	058d3028 	streq	r3, [sp, #40]	; 0x28                        
   * Check the configuration data.                                    
   */                                                                 
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
                                                                      
  if (config->verbose)                                                
    f9d8:	e5da3015 	ldrb	r3, [sl, #21]                                
    f9dc:	e3530000 	cmp	r3, #0                                        
    f9e0:	1a0000ba 	bne	fcd0 <rtems_rfs_format+0x468>                 
    printf ("rtems-rfs: format: groups = %u\n", fs.group_count);      
    printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
    printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_setblksize (&fs, rtems_rfs_fs_block_size (&fs));
    f9e4:	e1a01004 	mov	r1, r4                                        
    f9e8:	e28d000c 	add	r0, sp, #12                                   
    f9ec:	eb002a8b 	bl	1a420 <rtems_rfs_buffer_setblksize>            
  if (rc > 0)                                                         
    f9f0:	e2504000 	subs	r4, r0, #0                                   
    f9f4:	ca00022a 	bgt	102a4 <rtems_rfs_format+0xa3c>                
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
    f9f8:	e3a08000 	mov	r8, #0                                        
    printf ("rtems-rfs: write-superblock: handle open failed: %d: %s\n",
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, false);       
    f9fc:	e28d000c 	add	r0, sp, #12                                   
    fa00:	e28d10d0 	add	r1, sp, #208	; 0xd0                           
    fa04:	e1a02008 	mov	r2, r8                                        
    fa08:	e1a03008 	mov	r3, r8                                        
    fa0c:	e5cd80d0 	strb	r8, [sp, #208]	; 0xd0                        
  handle->bnum  = 0;                                                  
    fa10:	e58d80d4 	str	r8, [sp, #212]	; 0xd4                         
  handle->buffer = NULL;                                              
    fa14:	e58d80d8 	str	r8, [sp, #216]	; 0xd8                         
    fa18:	eb002931 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
  if (rc > 0)                                                         
    fa1c:	e2504000 	subs	r4, r0, #0                                   
    fa20:	da000016 	ble	fa80 <rtems_rfs_format+0x218>                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
    fa24:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
    fa28:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
    fa2c:	eb0028b3 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",  
    fa30:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
  handle->dirty = false;                                              
    fa34:	e5cd80d0 	strb	r8, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
    fa38:	e58d80d4 	str	r8, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
    fa3c:	e58d80d8 	str	r8, [sp, #216]	; 0xd8                         <== NOT EXECUTED
    fa40:	eb004745 	bl	2175c <strerror>                               <== NOT EXECUTED
    fa44:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    fa48:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
    fa4c:	e59f0b90 	ldr	r0, [pc, #2960]	; 105e4 <rtems_rfs_format+0xd7c><== NOT EXECUTED
    fa50:	eb004293 	bl	204a4 <printf>                                 <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  if (!rtems_rfs_write_superblock (&fs))                              
  {                                                                   
    printf ("rtems-rfs: format: superblock write failed\n");          
    fa54:	e59f0b8c 	ldr	r0, [pc, #2956]	; 105e8 <rtems_rfs_format+0xd80><== NOT EXECUTED
    fa58:	eb004329 	bl	20704 <puts>                                   <== NOT EXECUTED
    return -1;                                                        
    fa5c:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
    fa60:	e28dd0e4 	add	sp, sp, #228	; 0xe4                           
    fa64:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     * block.                                                         
     */                                                               
    fs->group_blocks = rtems_rfs_bitmap_numof_bits (fs->block_size);  
  }                                                                   
                                                                      
  if (fs->group_blocks > rtems_rfs_bitmap_numof_bits (fs->block_size))
    fa68:	e1530184 	cmp	r3, r4, lsl #3                                <== NOT EXECUTED
    fa6c:	9affffb4 	bls	f944 <rtems_rfs_format+0xdc>                  <== NOT EXECUTED
  {                                                                   
    printf ("group block count is higher than bits in block\n");      
    fa70:	e59f0b74 	ldr	r0, [pc, #2932]	; 105ec <rtems_rfs_format+0xd84><== NOT EXECUTED
    fa74:	eb004322 	bl	20704 <puts>                                   <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Check the configuration data.                                    
   */                                                                 
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
    fa78:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    fa7c:	eafffff7 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
    printf ("rtems-rfs: write-superblock: request failed: %d: %s\n",  
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
    fa80:	e59d30d8 	ldr	r3, [sp, #216]	; 0xd8                         
    fa84:	e593401c 	ldr	r4, [r3, #28]                                 
                                                                      
#define write_sb(_o, _d) rtems_rfs_write_u32(sb + (_o), _d)           
                                                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
    fa88:	e3a010ff 	mov	r1, #255	; 0xff                               
    fa8c:	e59d2014 	ldr	r2, [sp, #20]                                 
    fa90:	e1a00004 	mov	r0, r4                                        
    fa94:	eb004211 	bl	202e0 <memset>                                 
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
    fa98:	e3a03028 	mov	r3, #40	; 0x28                                
    fa9c:	e5c43000 	strb	r3, [r4]                                     
    faa0:	e3a03009 	mov	r3, #9                                        
    faa4:	e5c43001 	strb	r3, [r4, #1]                                 
    faa8:	e3a05001 	mov	r5, #1                                        
    faac:	e3a03020 	mov	r3, #32                                       
    fab0:	e5c43002 	strb	r3, [r4, #2]                                 
    fab4:	e5c45003 	strb	r5, [r4, #3]                                 
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
    fab8:	e5c48004 	strb	r8, [r4, #4]                                 
    fabc:	e5c48005 	strb	r8, [r4, #5]                                 
    fac0:	e5c48006 	strb	r8, [r4, #6]                                 
    fac4:	e5c48007 	strb	r8, [r4, #7]                                 
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
    fac8:	e59d3010 	ldr	r3, [sp, #16]                                 
    facc:	e1a00c23 	lsr	r0, r3, #24                                   
    fad0:	e1a01823 	lsr	r1, r3, #16                                   
    fad4:	e1a02423 	lsr	r2, r3, #8                                    
    fad8:	e5c4000c 	strb	r0, [r4, #12]                                
    fadc:	e5c4100d 	strb	r1, [r4, #13]                                
    fae0:	e5c4200e 	strb	r2, [r4, #14]                                
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
    fae4:	e5dd2017 	ldrb	r2, [sp, #23]                                
    fae8:	e5c42008 	strb	r2, [r4, #8]                                 
    faec:	e1dd21b6 	ldrh	r2, [sp, #22]                                
    faf0:	e5c42009 	strb	r2, [r4, #9]                                 
    faf4:	e59d2014 	ldr	r2, [sp, #20]                                 
    faf8:	e1a02422 	lsr	r2, r2, #8                                    
    fafc:	e5c4200a 	strb	r2, [r4, #10]                                
                                                                      
  memset (sb, 0xff, rtems_rfs_fs_block_size (fs));                    
                                                                      
  write_sb (RTEMS_RFS_SB_OFFSET_MAGIC, RTEMS_RFS_SB_MAGIC);           
  write_sb (RTEMS_RFS_SB_OFFSET_VERSION, RTEMS_RFS_VERSION);          
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCKS, rtems_rfs_fs_blocks (fs));    
    fb00:	e5c4300f 	strb	r3, [r4, #15]                                
  write_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE, rtems_rfs_fs_block_size (fs));
    fb04:	e59d3014 	ldr	r3, [sp, #20]                                 
    fb08:	e5c4300b 	strb	r3, [r4, #11]                                
  write_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS, fs->bad_blocks);          
    fb0c:	e5dd3027 	ldrb	r3, [sp, #39]	; 0x27                         
    fb10:	e5c43010 	strb	r3, [r4, #16]                                
    fb14:	e1dd32b6 	ldrh	r3, [sp, #38]	; 0x26                         
    fb18:	e5c43011 	strb	r3, [r4, #17]                                
    fb1c:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          
    fb20:	e1a03423 	lsr	r3, r3, #8                                    
    fb24:	e5c43012 	strb	r3, [r4, #18]                                
    fb28:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          
    fb2c:	e5c43013 	strb	r3, [r4, #19]                                
  write_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH, fs->max_name_length);
    fb30:	e5dd302b 	ldrb	r3, [sp, #43]	; 0x2b                         
    fb34:	e5c43014 	strb	r3, [r4, #20]                                
    fb38:	e1dd32ba 	ldrh	r3, [sp, #42]	; 0x2a                         
    fb3c:	e5c43015 	strb	r3, [r4, #21]                                
    fb40:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
    fb44:	e1a03423 	lsr	r3, r3, #8                                    
    fb48:	e5c43016 	strb	r3, [r4, #22]                                
    fb4c:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
    fb50:	e5c43017 	strb	r3, [r4, #23]                                
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
    fb54:	e5dd3033 	ldrb	r3, [sp, #51]	; 0x33                         
    fb58:	e5c43018 	strb	r3, [r4, #24]                                
    fb5c:	e1dd33b2 	ldrh	r3, [sp, #50]	; 0x32                         
    fb60:	e5c43019 	strb	r3, [r4, #25]                                
    fb64:	e59d3030 	ldr	r3, [sp, #48]	; 0x30                          
    fb68:	e1a03423 	lsr	r3, r3, #8                                    
    fb6c:	e5c4301a 	strb	r3, [r4, #26]                                
    fb70:	e59d3030 	ldr	r3, [sp, #48]	; 0x30                          
    fb74:	e5c4301b 	strb	r3, [r4, #27]                                
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
    fb78:	e5dd3037 	ldrb	r3, [sp, #55]	; 0x37                         
    fb7c:	e5c4301c 	strb	r3, [r4, #28]                                
    fb80:	e1dd33b6 	ldrh	r3, [sp, #54]	; 0x36                         
    fb84:	e5c4301d 	strb	r3, [r4, #29]                                
    fb88:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
    fb8c:	e1a03423 	lsr	r3, r3, #8                                    
    fb90:	e5c4301e 	strb	r3, [r4, #30]                                
    fb94:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
    fb98:	e5c4301f 	strb	r3, [r4, #31]                                
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);      
    fb9c:	e5dd303b 	ldrb	r3, [sp, #59]	; 0x3b                         
    fba0:	e5c43020 	strb	r3, [r4, #32]                                
    fba4:	e1dd33ba 	ldrh	r3, [sp, #58]	; 0x3a                         
    fba8:	e5c43021 	strb	r3, [r4, #33]	; 0x21                         
    fbac:	e59d3038 	ldr	r3, [sp, #56]	; 0x38                          
    fbb0:	e1a03423 	lsr	r3, r3, #8                                    
    fbb4:	e5c43022 	strb	r3, [r4, #34]	; 0x22                         
    fbb8:	e59d3038 	ldr	r3, [sp, #56]	; 0x38                          
    fbbc:	e5c43023 	strb	r3, [r4, #35]	; 0x23                         
  write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);    
    fbc0:	e3a03038 	mov	r3, #56	; 0x38                                
    fbc4:	e5c48024 	strb	r8, [r4, #36]	; 0x24                         
    fbc8:	e5c48025 	strb	r8, [r4, #37]	; 0x25                         
    fbcc:	e5c48026 	strb	r8, [r4, #38]	; 0x26                         
    fbd0:	e5c43027 	strb	r3, [r4, #39]	; 0x27                         
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
                                                                      
  rc = rtems_rfs_buffer_handle_release (fs, &handle);                 
    fbd4:	e28d000c 	add	r0, sp, #12                                   
    fbd8:	e28d10d0 	add	r1, sp, #208	; 0xd0                           
  write_sb (RTEMS_RFS_SB_OFFSET_GROUPS, fs->group_count);             
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS, fs->group_blocks);      
  write_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES, fs->group_inodes);      
  write_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE, RTEMS_RFS_INODE_SIZE);    
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
    fbdc:	e5cd50d0 	strb	r5, [sp, #208]	; 0xd0                        
                                                                      
  rc = rtems_rfs_buffer_handle_release (fs, &handle);                 
    fbe0:	eb002846 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  if (rc > 0)                                                         
    fbe4:	e2504000 	subs	r4, r0, #0                                   
    fbe8:	da0000bb 	ble	fedc <rtems_rfs_format+0x674>                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
    fbec:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
    fbf0:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
    fbf4:	eb002841 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("rtems-rfs: write-superblock: buffer release failed: %d: %s\n",
    fbf8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
  handle->dirty = false;                                              
    fbfc:	e5cd80d0 	strb	r8, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
    fc00:	e58d80d4 	str	r8, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
    fc04:	e58d80d8 	str	r8, [sp, #216]	; 0xd8                         <== NOT EXECUTED
    fc08:	eb0046d3 	bl	2175c <strerror>                               <== NOT EXECUTED
    fc0c:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    fc10:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
    fc14:	e59f09d4 	ldr	r0, [pc, #2516]	; 105f0 <rtems_rfs_format+0xd88><== NOT EXECUTED
    fc18:	eb004221 	bl	204a4 <printf>                                 <== NOT EXECUTED
    fc1c:	eaffff8c 	b	fa54 <rtems_rfs_format+0x1ec>                   <== NOT EXECUTED
  rtems_rfs_file_system fs;                                           
  int                   group;                                        
  int                   rc;                                           
                                                                      
  if (config->verbose)                                                
    printf ("rtems-rfs: format: %s\n", name);                         
    fc20:	e59d1008 	ldr	r1, [sp, #8]                                  <== NOT EXECUTED
    fc24:	e59f09c8 	ldr	r0, [pc, #2504]	; 105f4 <rtems_rfs_format+0xd8c><== NOT EXECUTED
    fc28:	eb00421d 	bl	204a4 <printf>                                 <== NOT EXECUTED
    fc2c:	eaffff14 	b	f884 <rtems_rfs_format+0x1c>                    <== NOT EXECUTED
                        const rtems_rfs_format_config* config)        
{                                                                     
  fs->block_size = config->block_size;                                
  if (!fs->block_size)                                                
  {                                                                   
    uint64_t total_size = rtems_rfs_fs_media_size (fs);               
    fc30:	e28d000c 	add	r0, sp, #12                                   
    fc34:	eb00330a 	bl	1c864 <rtems_rfs_fs_media_size>                
                                                                      
    if (total_size >= GIGS (1))                                       
    fc38:	e59f29b8 	ldr	r2, [pc, #2488]	; 105f8 <rtems_rfs_format+0xd90>
    fc3c:	e3a03000 	mov	r3, #0                                        
    fc40:	e1530001 	cmp	r3, r1                                        
    fc44:	01520000 	cmpeq	r2, r0                                      
    fc48:	259d4014 	ldrcs	r4, [sp, #20]                               
    fc4c:	2a00000e 	bcs	fc8c <rtems_rfs_format+0x424>                 
    {                                                                 
      uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);             
    fc50:	e3a02601 	mov	r2, #1048576	; 0x100000                       <== NOT EXECUTED
    fc54:	e0922000 	adds	r2, r2, r0                                   <== NOT EXECUTED
    fc58:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    fc5c:	e0a33001 	adc	r3, r3, r1                                    <== NOT EXECUTED
    fc60:	e1a01a22 	lsr	r1, r2, #20                                   <== NOT EXECUTED
    fc64:	e1811603 	orr	r1, r1, r3, lsl #12                           <== NOT EXECUTED
      int      b;                                                     
      for (b = 31; b > 0; b--)                                        
        if ((gigs & (1 << b)) != 0)                                   
    fc68:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
                                                                      
    if (total_size >= GIGS (1))                                       
    {                                                                 
      uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);             
      int      b;                                                     
      for (b = 31; b > 0; b--)                                        
    fc6c:	e3a0301f 	mov	r3, #31                                       <== NOT EXECUTED
    fc70:	ea000001 	b	fc7c <rtems_rfs_format+0x414>                   <== NOT EXECUTED
    fc74:	e2533001 	subs	r3, r3, #1                                   <== NOT EXECUTED
    fc78:	0a0001d3 	beq	103cc <rtems_rfs_format+0xb64>                <== NOT EXECUTED
        if ((gigs & (1 << b)) != 0)                                   
    fc7c:	e1a04312 	lsl	r4, r2, r3                                    <== NOT EXECUTED
    fc80:	e1140001 	tst	r4, r1                                        <== NOT EXECUTED
    fc84:	0afffffa 	beq	fc74 <rtems_rfs_format+0x40c>                 <== NOT EXECUTED
          break;                                                      
      fs->block_size = 1 << b;                                        
    fc88:	e58d4014 	str	r4, [sp, #20]                                 <== NOT EXECUTED
    }                                                                 
                                                                      
    if (fs->block_size < 512)                                         
    fc8c:	e3540c02 	cmp	r4, #512	; 0x200                              
    fc90:	2a000070 	bcs	fe58 <rtems_rfs_format+0x5f0>                 
      fs->block_size = 512;                                           
    fc94:	e3a04c02 	mov	r4, #512	; 0x200                              
    fc98:	e58d4014 	str	r4, [sp, #20]                                 
    fc9c:	e59d301c 	ldr	r3, [sp, #28]                                 
    fca0:	e5935020 	ldr	r5, [r3, #32]                                 
                                                                      
    if (fs->block_size > (4 * 1024))                                  
      fs->block_size = (4 * 1024);                                    
  }                                                                   
                                                                      
  if ((fs->block_size % rtems_rfs_fs_media_block_size (fs)) != 0)     
    fca4:	e1a00004 	mov	r0, r4                                        
    fca8:	e1a01005 	mov	r1, r5                                        
    fcac:	eb0074d1 	bl	2cff8 <__umodsi3>                              
    fcb0:	e3500000 	cmp	r0, #0                                        
    fcb4:	0affff1c 	beq	f92c <rtems_rfs_format+0xc4>                  
  {                                                                   
    printf ("block size (%zd) is not a multiple of media block size (%" PRId32 ")\n",
    fcb8:	e59f093c 	ldr	r0, [pc, #2364]	; 105fc <rtems_rfs_format+0xd94><== NOT EXECUTED
    fcbc:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    fcc0:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
    fcc4:	eb0041f6 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Check the configuration data.                                    
   */                                                                 
  if (!rtems_rfs_check_config (&fs, config))                          
    return -1;                                                        
    fcc8:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    fccc:	eaffff63 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
                                                                      
  if (config->verbose)                                                
  {                                                                   
    printf ("rtems-rfs: format: media size = %" PRIu64 "\n",          
    fcd0:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
    fcd4:	eb0032e2 	bl	1c864 <rtems_rfs_fs_media_size>                <== NOT EXECUTED
    fcd8:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
    fcdc:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    fce0:	e59f0918 	ldr	r0, [pc, #2328]	; 10600 <rtems_rfs_format+0xd98><== NOT EXECUTED
    fce4:	eb0041ee 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_media_size (&fs));                           
    printf ("rtems-rfs: format: media blocks = %" PRIu32 "\n",        
    fce8:	e59d301c 	ldr	r3, [sp, #28]                                 <== NOT EXECUTED
    fcec:	e59f0910 	ldr	r0, [pc, #2320]	; 10604 <rtems_rfs_format+0xd9c><== NOT EXECUTED
    fcf0:	e593101c 	ldr	r1, [r3, #28]                                 <== NOT EXECUTED
    fcf4:	eb0041ea 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_media_blocks (&fs));                         
    printf ("rtems-rfs: format: media block size = %" PRIu32 "\n",    
    fcf8:	e59d301c 	ldr	r3, [sp, #28]                                 <== NOT EXECUTED
    fcfc:	e59f0904 	ldr	r0, [pc, #2308]	; 10608 <rtems_rfs_format+0xda0><== NOT EXECUTED
    fd00:	e5931020 	ldr	r1, [r3, #32]                                 <== NOT EXECUTED
    fd04:	eb0041e6 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_media_block_size (&fs));                     
    printf ("rtems-rfs: format: size = %" PRIu64 "\n",                
    fd08:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
    fd0c:	eb0032d0 	bl	1c854 <rtems_rfs_fs_size>                      <== NOT EXECUTED
    fd10:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
    fd14:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
    fd18:	e59f08ec 	ldr	r0, [pc, #2284]	; 1060c <rtems_rfs_format+0xda4><== NOT EXECUTED
    fd1c:	eb0041e0 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_size (&fs));                                 
    printf ("rtems-rfs: format: blocks = %zu\n",                      
    fd20:	e59d1010 	ldr	r1, [sp, #16]                                 <== NOT EXECUTED
    fd24:	e59f08e4 	ldr	r0, [pc, #2276]	; 10610 <rtems_rfs_format+0xda8><== NOT EXECUTED
    fd28:	eb0041dd 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_blocks (&fs));                               
    printf ("rtems-rfs: format: block size = %zu\n",                  
    fd2c:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
    fd30:	e59f08dc 	ldr	r0, [pc, #2268]	; 10614 <rtems_rfs_format+0xdac><== NOT EXECUTED
    fd34:	eb0041da 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
    fd38:	e59d1014 	ldr	r1, [sp, #20]                                 <== NOT EXECUTED
    fd3c:	e59f08d4 	ldr	r0, [pc, #2260]	; 10618 <rtems_rfs_format+0xdb0><== NOT EXECUTED
    fd40:	e1a01181 	lsl	r1, r1, #3                                    <== NOT EXECUTED
    fd44:	eb0041d6 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    fd48:	e59f08cc 	ldr	r0, [pc, #2252]	; 1061c <rtems_rfs_format+0xdb4><== NOT EXECUTED
    fd4c:	e3a01038 	mov	r1, #56	; 0x38                                <== NOT EXECUTED
    fd50:	eb0041d3 	bl	204a4 <printf>                                 <== NOT EXECUTED
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
            fs.group_inodes * fs.group_count,                         
    fd54:	e59d3038 	ldr	r3, [sp, #56]	; 0x38                          <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
    fd58:	e59d4030 	ldr	r4, [sp, #48]	; 0x30                          <== NOT EXECUTED
static int                                                            
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)                  
{                                                                     
  int blocks;                                                         
  int bits_per_block;                                                 
  blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
    fd5c:	e0638183 	rsb	r8, r3, r3, lsl #3                            <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fd60:	e1b08188 	lsls	r8, r8, #3                                   <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
    fd64:	e0040493 	mul	r4, r3, r4                                    <== NOT EXECUTED
static int                                                            
rtems_rfs_inode_overhead (rtems_rfs_file_system* fs)                  
{                                                                     
  int blocks;                                                         
  int bits_per_block;                                                 
  blocks = rtems_rfs_rup_quotient(fs->group_inodes * RTEMS_RFS_INODE_SIZE,
    fd68:	e59d7014 	ldr	r7, [sp, #20]                                 <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fd6c:	03a00e7d 	moveq	r0, #2000	; 0x7d0                           <== NOT EXECUTED
    fd70:	1a000046 	bne	fe90 <rtems_rfs_format+0x628>                 <== NOT EXECUTED
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
    fd74:	e59d5010 	ldr	r5, [sp, #16]                                 <== NOT EXECUTED
 * Return the number of bits that fit in the block size.              
 */                                                                   
static int                                                            
rtems_rfs_bits_per_block (rtems_rfs_file_system* fs)                  
{                                                                     
  return rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs));  
    fd78:	e1a06187 	lsl	r6, r7, #3                                    <== NOT EXECUTED
                                  rtems_rfs_fs_block_size (fs));      
  bits_per_block = rtems_rfs_bits_per_block (fs);                     
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
    fd7c:	e2455001 	sub	r5, r5, #1                                    <== NOT EXECUTED
    bits_per_block = rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE;
  return ((blocks + 1) * 100 * 10) / bits_per_block;                  
    fd80:	e1550006 	cmp	r5, r6                                        <== NOT EXECUTED
    fd84:	31a01005 	movcc	r1, r5                                      <== NOT EXECUTED
    fd88:	21a01006 	movcs	r1, r6                                      <== NOT EXECUTED
    fd8c:	eb007447 	bl	2ceb0 <__aeabi_idiv>                           <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
    fd90:	e59f9888 	ldr	r9, [pc, #2184]	; 10620 <rtems_rfs_format+0xdb8><== NOT EXECUTED
    fd94:	e0c93990 	smull	r3, r9, r0, r9                              <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fd98:	e3580000 	cmp	r8, #0                                        <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
    fd9c:	e1a00fc0 	asr	r0, r0, #31                                   <== NOT EXECUTED
    fda0:	e0609149 	rsb	r9, r0, r9, asr #2                            <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fda4:	03a00e7d 	moveq	r0, #2000	; 0x7d0                           <== NOT EXECUTED
    fda8:	1a000030 	bne	fe70 <rtems_rfs_format+0x608>                 <== NOT EXECUTED
  /*                                                                  
   * There could be more bits than blocks, eg 512K disk with 512 blocks.
   */                                                                 
  if (bits_per_block > (rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE))
    bits_per_block = rtems_rfs_fs_blocks (fs) - RTEMS_RFS_SUPERBLOCK_SIZE;
  return ((blocks + 1) * 100 * 10) / bits_per_block;                  
    fdac:	e1560005 	cmp	r6, r5                                        <== NOT EXECUTED
    fdb0:	31a01006 	movcc	r1, r6                                      <== NOT EXECUTED
    fdb4:	21a01005 	movcs	r1, r5                                      <== NOT EXECUTED
    fdb8:	eb00743c 	bl	2ceb0 <__aeabi_idiv>                           <== NOT EXECUTED
    printf ("rtems-rfs: format: block size = %zu\n",                  
            rtems_rfs_fs_block_size (&fs));                           
    printf ("rtems-rfs: format: bits per block = %u\n",               
            rtems_rfs_bits_per_block (&fs));                          
    printf ("rtems-rfs: format: inode size = %zu\n", RTEMS_RFS_INODE_SIZE);
    printf ("rtems-rfs: format: inodes = %zu (%d.%d%%)\n",            
    fdbc:	e59f285c 	ldr	r2, [pc, #2140]	; 10620 <rtems_rfs_format+0xdb8><== NOT EXECUTED
    fdc0:	e0c23290 	smull	r3, r2, r0, r2                              <== NOT EXECUTED
    fdc4:	e1a03fc0 	asr	r3, r0, #31                                   <== NOT EXECUTED
    fdc8:	e0633142 	rsb	r3, r3, r2, asr #2                            <== NOT EXECUTED
    fdcc:	e0833103 	add	r3, r3, r3, lsl #2                            <== NOT EXECUTED
    fdd0:	e0403083 	sub	r3, r0, r3, lsl #1                            <== NOT EXECUTED
    fdd4:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    fdd8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
    fddc:	e59f0840 	ldr	r0, [pc, #2112]	; 10624 <rtems_rfs_format+0xdbc><== NOT EXECUTED
    fde0:	eb0041af 	bl	204a4 <printf>                                 <== NOT EXECUTED
            fs.group_inodes * fs.group_count,                         
            rtems_rfs_inode_overhead (&fs) / 10,                      
            rtems_rfs_inode_overhead (&fs) % 10);                     
    printf ("rtems-rfs: format: groups = %u\n", fs.group_count);      
    fde4:	e59d1030 	ldr	r1, [sp, #48]	; 0x30                          <== NOT EXECUTED
    fde8:	e59f0838 	ldr	r0, [pc, #2104]	; 10628 <rtems_rfs_format+0xdc0><== NOT EXECUTED
    fdec:	eb0041ac 	bl	204a4 <printf>                                 <== NOT EXECUTED
    printf ("rtems-rfs: format: group blocks = %zu\n", fs.group_blocks);
    fdf0:	e59d1034 	ldr	r1, [sp, #52]	; 0x34                          <== NOT EXECUTED
    fdf4:	e59f0830 	ldr	r0, [pc, #2096]	; 1062c <rtems_rfs_format+0xdc4><== NOT EXECUTED
    fdf8:	eb0041a9 	bl	204a4 <printf>                                 <== NOT EXECUTED
    printf ("rtems-rfs: format: group inodes = %zu\n", fs.group_inodes);
    fdfc:	e59f082c 	ldr	r0, [pc, #2092]	; 10630 <rtems_rfs_format+0xdc8><== NOT EXECUTED
    fe00:	e59d1038 	ldr	r1, [sp, #56]	; 0x38                          <== NOT EXECUTED
    fe04:	eb0041a6 	bl	204a4 <printf>                                 <== NOT EXECUTED
    fe08:	e59d4014 	ldr	r4, [sp, #20]                                 <== NOT EXECUTED
    fe0c:	eafffef4 	b	f9e4 <rtems_rfs_format+0x17c>                   <== NOT EXECUTED
    int inode_overhead = RTEMS_RFS_INODE_OVERHEAD_PERCENTAGE;         
                                                                      
    /*                                                                
     * The number of inodes per group is set as a percentage.         
     */                                                               
    if (config->inode_overhead)                                       
    fe10:	e59a200c 	ldr	r2, [sl, #12]                                 
    fe14:	e3520000 	cmp	r2, #0                                        
    fe18:	03a02001 	moveq	r2, #1                                      
static int                                                            
rtems_rfs_inodes_from_percent (rtems_rfs_file_system* fs,             
                               int                    percentage)     
{                                                                     
  int blocks;                                                         
  blocks = ((rtems_rfs_fs_blocks (fs) -                               
    fe1c:	e2455001 	sub	r5, r5, #1                                    
             RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;          
    fe20:	e0020295 	mul	r2, r5, r2                                    
    fe24:	e59f3808 	ldr	r3, [pc, #2056]	; 10634 <rtems_rfs_format+0xdcc>
    fe28:	e0830392 	umull	r0, r3, r2, r3                              
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fe2c:	e1b032a3 	lsrs	r3, r3, #5                                   
    fe30:	03a00001 	moveq	r0, #1                                      
    fe34:	1a00001d 	bne	feb0 <rtems_rfs_format+0x648>                 
{                                                                     
  int blocks;                                                         
  blocks = ((rtems_rfs_fs_blocks (fs) -                               
             RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;          
  blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);          
  return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
    fe38:	e59f37a0 	ldr	r3, [pc, #1952]	; 105e0 <rtems_rfs_format+0xd78>
    fe3c:	e1a051a4 	lsr	r5, r4, #3                                    
    fe40:	e0852593 	umull	r2, r5, r3, r5                              
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fe44:	e0100095 	muls	r0, r5, r0                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
    fe48:	e58d503c 	str	r5, [sp, #60]	; 0x3c                          
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fe4c:	03a00001 	moveq	r0, #1                                      
    fe50:	0afffed7 	beq	f9b4 <rtems_rfs_format+0x14c>                 
    fe54:	eafffed2 	b	f9a4 <rtems_rfs_format+0x13c>                   
    }                                                                 
                                                                      
    if (fs->block_size < 512)                                         
      fs->block_size = 512;                                           
                                                                      
    if (fs->block_size > (4 * 1024))                                  
    fe58:	e3540a01 	cmp	r4, #4096	; 0x1000                            <== NOT EXECUTED
      fs->block_size = (4 * 1024);                                    
    fe5c:	83a04a01 	movhi	r4, #4096	; 0x1000                          <== NOT EXECUTED
    fe60:	858d4014 	strhi	r4, [sp, #20]                               <== NOT EXECUTED
    fe64:	e59d301c 	ldr	r3, [sp, #28]                                 <== NOT EXECUTED
    fe68:	e5935020 	ldr	r5, [r3, #32]                                 <== NOT EXECUTED
    fe6c:	eafffea9 	b	f918 <rtems_rfs_format+0xb0>                    <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    fe70:	e2480001 	sub	r0, r8, #1                                    <== NOT EXECUTED
    fe74:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    fe78:	ebffc70a 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fe7c:	e2800002 	add	r0, r0, #2                                    <== NOT EXECUTED
    fe80:	e0603280 	rsb	r3, r0, r0, lsl #5                            <== NOT EXECUTED
    fe84:	e0800103 	add	r0, r0, r3, lsl #2                            <== NOT EXECUTED
    fe88:	e1a00180 	lsl	r0, r0, #3                                    <== NOT EXECUTED
    fe8c:	eaffffc6 	b	fdac <rtems_rfs_format+0x544>                   <== NOT EXECUTED
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    fe90:	e2480001 	sub	r0, r8, #1                                    <== NOT EXECUTED
    fe94:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    fe98:	ebffc702 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fe9c:	e2800002 	add	r0, r0, #2                                    <== NOT EXECUTED
    fea0:	e0603280 	rsb	r3, r0, r0, lsl #5                            <== NOT EXECUTED
    fea4:	e0800103 	add	r0, r0, r3, lsl #2                            <== NOT EXECUTED
    fea8:	e1a00180 	lsl	r0, r0, #3                                    <== NOT EXECUTED
    feac:	eaffffb0 	b	fd74 <rtems_rfs_format+0x50c>                   <== NOT EXECUTED
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    feb0:	e2430001 	sub	r0, r3, #1                                    
    feb4:	ebffc6fb 	bl	1aa8 <__aeabi_uidiv>                           
{                                                                     
  int blocks;                                                         
  blocks = ((rtems_rfs_fs_blocks (fs) -                               
             RTEMS_RFS_SUPERBLOCK_SIZE) * percentage) / 100;          
  blocks = rtems_rfs_rup_quotient (blocks, fs->group_count);          
  return blocks * (rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE);
    feb8:	e59f3720 	ldr	r3, [pc, #1824]	; 105e0 <rtems_rfs_format+0xd78>
    febc:	e1a051a4 	lsr	r5, r4, #3                                    
    fec0:	e0852593 	umull	r2, r5, r3, r5                              
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    fec4:	e2800001 	add	r0, r0, #1                                    
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fec8:	e0100095 	muls	r0, r5, r0                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Round up to fill a block because the minimum allocation unit is a block.
   */                                                                 
  fs->inodes_per_block = rtems_rfs_fs_block_size (fs) / RTEMS_RFS_INODE_SIZE;
    fecc:	e58d503c 	str	r5, [sp, #60]	; 0x3c                          
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    fed0:	03a00001 	moveq	r0, #1                                      
    fed4:	0afffeb6 	beq	f9b4 <rtems_rfs_format+0x14c>                 
    fed8:	eafffeb1 	b	f9a4 <rtems_rfs_format+0x13c>                   
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
    fedc:	e28d000c 	add	r0, sp, #12                                   
    fee0:	e28d10d0 	add	r1, sp, #208	; 0xd0                           
    fee4:	eb002785 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  {                                                                   
    printf ("rtems-rfs: format: superblock write failed\n");          
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    fee8:	e59d3030 	ldr	r3, [sp, #48]	; 0x30                          
    feec:	e3530000 	cmp	r3, #0                                        
  handle->dirty = false;                                              
    fef0:	e5cd80d0 	strb	r8, [sp, #208]	; 0xd0                        
  handle->bnum  = 0;                                                  
    fef4:	e58d80d4 	str	r8, [sp, #212]	; 0xd4                         
  handle->buffer = NULL;                                              
    fef8:	e58d80d8 	str	r8, [sp, #216]	; 0xd8                         
    fefc:	da000088 	ble	10124 <rtems_rfs_format+0x8bc>                
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
    ff00:	e59d3010 	ldr	r3, [sp, #16]                                 
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
    ff04:	e5da0014 	ldrb	r0, [sl, #20]                                
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
    ff08:	e3530000 	cmp	r3, #0                                        
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
    ff0c:	e58d0004 	str	r0, [sp, #4]                                  
    ff10:	e5da6015 	ldrb	r6, [sl, #21]                                
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
    ff14:	e59d4034 	ldr	r4, [sp, #52]	; 0x34                          
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
    ff18:	11a07008 	movne	r7, r8                                      
    ff1c:	0a000197 	beq	10580 <rtems_rfs_format+0xd18>                
  /*                                                                  
   * Be nice to strange sizes of disks. These are embedded systems after all
   * and nice numbers do not always work out. Let the last block pick up the
   * remainder of the blocks.                                         
   */                                                                 
  if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))           
    ff20:	e0842005 	add	r2, r4, r5                                    
    ff24:	e1530002 	cmp	r3, r2                                        
    group_size = rtems_rfs_fs_blocks (fs) - group_base;               
    ff28:	30654003 	rsbcc	r4, r5, r3                                  
                                                                      
  if (verbose)                                                        
    ff2c:	e3560000 	cmp	r6, #0                                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
    ff30:	05cd60d0 	strbeq	r6, [sp, #208]	; 0xd0                      
  handle->bnum  = 0;                                                  
    ff34:	058d60d4 	streq	r6, [sp, #212]	; 0xd4                       
  handle->buffer = NULL;                                              
    ff38:	058d60d8 	streq	r6, [sp, #216]	; 0xd8                       
    ff3c:	1a000032 	bne	1000c <rtems_rfs_format+0x7a4>                
    printf (", blocks");                                              
                                                                      
  /*                                                                  
   * Open the block bitmap using the new buffer.                      
   */                                                                 
  rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,       
    ff40:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
    ff44:	e28d100c 	add	r1, sp, #12                                   
    ff48:	e28d20d0 	add	r2, sp, #208	; 0xd0                           
    ff4c:	e1a03004 	mov	r3, r4                                        
    ff50:	e58d5000 	str	r5, [sp]                                      
    ff54:	eb0022f4 	bl	18b2c <rtems_rfs_bitmap_open>                  
                              group_base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
  if (rc > 0)                                                         
    ff58:	e2509000 	subs	r9, r0, #0                                   
    ff5c:	da00000f 	ble	ffa0 <rtems_rfs_format+0x738>                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
    ff60:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
    ff64:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
    ff68:	eb002764 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
    ff6c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: open block bitmap failed: %d: %s\n",
    ff70:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
    ff74:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
    ff78:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
    ff7c:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
    ff80:	eb0045f5 	bl	2175c <strerror>                               <== NOT EXECUTED
    ff84:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    ff88:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
    ff8c:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    ff90:	e59f06a0 	ldr	r0, [pc, #1696]	; 10638 <rtems_rfs_format+0xdd0><== NOT EXECUTED
    ff94:	eb004142 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
    ff98:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    ff9c:	eafffeaf 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Force the whole buffer to a known state. The bit map may not occupy the
   * whole block.                                                     
   */                                                                 
  memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
    ffa0:	e59d30d8 	ldr	r3, [sp, #216]	; 0xd8                         
    ffa4:	e3a010ff 	mov	r1, #255	; 0xff                               
    ffa8:	e59d2014 	ldr	r2, [sp, #20]                                 
    ffac:	e593001c 	ldr	r0, [r3, #28]                                 
    ffb0:	eb0040ca 	bl	202e0 <memset>                                 
                                                                      
  /*                                                                  
   * Clear the bitmap.                                                
   */                                                                 
  rc = rtems_rfs_bitmap_map_clear_all (&bitmap);                      
    ffb4:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
    ffb8:	eb002249 	bl	188e4 <rtems_rfs_bitmap_map_clear_all>         
  if (rc > 0)                                                         
    ffbc:	e2509000 	subs	r9, r0, #0                                   
    ffc0:	da00001e 	ble	10040 <rtems_rfs_format+0x7d8>                
  {                                                                   
    rtems_rfs_bitmap_close (&bitmap);                                 
    ffc4:	e28d00b8 	add	r0, sp, #184	; 0xb8                           <== NOT EXECUTED
    ffc8:	eb0022eb 	bl	18b7c <rtems_rfs_bitmap_close>                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
    ffcc:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
    ffd0:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
    ffd4:	eb002749 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
    ffd8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: block bitmap clear all failed: %d: %s\n",
    ffdc:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
    ffe0:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
    ffe4:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
    ffe8:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
    ffec:	eb0045da 	bl	2175c <strerror>                               <== NOT EXECUTED
    fff0:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
    fff4:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
    fff8:	e1a02009 	mov	r2, r9                                        <== NOT EXECUTED
    fffc:	e59f0638 	ldr	r0, [pc, #1592]	; 1063c <rtems_rfs_format+0xdd4><== NOT EXECUTED
   10000:	eb004127 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   10004:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   10008:	eafffe94 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
   */                                                                 
  if ((group_base + group_size) > rtems_rfs_fs_blocks (fs))           
    group_size = rtems_rfs_fs_blocks (fs) - group_base;               
                                                                      
  if (verbose)                                                        
    printf ("\rrtems-rfs: format: group %3d: base = %" PRId32 ", size = %zd",
   1000c:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   10010:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   10014:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   10018:	e59f0620 	ldr	r0, [pc, #1568]	; 10640 <rtems_rfs_format+0xdd8><== NOT EXECUTED
   1001c:	eb004120 	bl	204a4 <printf>                                 <== NOT EXECUTED
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
  handle->bnum  = 0;                                                  
   10020:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   10024:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
            rc, strerror (rc));                                       
    return false;                                                     
  }                                                                   
                                                                      
  if (verbose)                                                        
    printf (", blocks");                                              
   10028:	e59f0614 	ldr	r0, [pc, #1556]	; 10644 <rtems_rfs_format+0xddc><== NOT EXECUTED
   1002c:	e5cd20d0 	strb	r2, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   10030:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   10034:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   10038:	eb004119 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1003c:	eaffffbf 	b	ff40 <rtems_rfs_format+0x6d8>                   <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Forced allocation of the block bitmap.                           
   */                                                                 
  rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
   10040:	e3a01000 	mov	r1, #0                                        
   10044:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
   10048:	eb00219f 	bl	186cc <rtems_rfs_bitmap_map_set>               
                                                                      
  /*                                                                  
   * Forced allocation of the inode bitmap.                           
   */                                                                 
  rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
   1004c:	e3a01001 	mov	r1, #1                                        
   10050:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
   10054:	eb00219c 	bl	186cc <rtems_rfs_bitmap_map_set>               
                                                                      
  /*                                                                  
   * Determine the number of inodes blocks in the group.              
   */                                                                 
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
   10058:	e59d0038 	ldr	r0, [sp, #56]	; 0x38                          
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
   1005c:	e3500000 	cmp	r0, #0                                        
  rtems_rfs_bitmap_map_set (&bitmap, RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
                                                                      
  /*                                                                  
   * Determine the number of inodes blocks in the group.              
   */                                                                 
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
   10060:	e59d103c 	ldr	r1, [sp, #60]	; 0x3c                          
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
   10064:	1a000028 	bne	1010c <rtems_rfs_format+0x8a4>                
    return 1;                                                         
   10068:	e3a09001 	mov	r9, #1                                        <== NOT EXECUTED
   1006c:	e3a0b000 	mov	fp, #0                                        
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
    rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
   10070:	e28b1002 	add	r1, fp, #2                                    
   10074:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   10078:	e28bb001 	add	fp, fp, #1                                    
    rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
   1007c:	eb002192 	bl	186cc <rtems_rfs_bitmap_map_set>               
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   10080:	e159000b 	cmp	r9, fp                                        
   10084:	cafffff9 	bgt	10070 <rtems_rfs_format+0x808>                
    rtems_rfs_bitmap_map_set (&bitmap, b + RTEMS_RFS_GROUP_INODE_BLOCK);
                                                                      
  /*                                                                  
   * Close the block bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_close (&bitmap);                              
   10088:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
   1008c:	eb0022ba 	bl	18b7c <rtems_rfs_bitmap_close>                 
  if (rc > 0)                                                         
   10090:	e250b000 	subs	fp, r0, #0                                   
   10094:	ca000042 	bgt	101a4 <rtems_rfs_format+0x93c>                
    printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
            group, rc, strerror (rc));                                
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
   10098:	e3a00001 	mov	r0, #1                                        
                                                                      
  if (verbose)                                                        
   1009c:	e3560000 	cmp	r6, #0                                        
    printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
            group, rc, strerror (rc));                                
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
   100a0:	e5cd00d0 	strb	r0, [sp, #208]	; 0xd0                        
                                                                      
  if (verbose)                                                        
   100a4:	1a000069 	bne	10250 <rtems_rfs_format+0x9e8>                
    printf (", inodes");                                              
                                                                      
  /*                                                                  
   * Open the inode bitmap using the old buffer. Should release any changes.
   */                                                                 
  rc = rtems_rfs_bitmap_open (&bitmap, fs, &handle, group_size,       
   100a8:	e1a03004 	mov	r3, r4                                        
   100ac:	e2888002 	add	r8, r8, #2                                    
   100b0:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
   100b4:	e28d100c 	add	r1, sp, #12                                   
   100b8:	e28d20d0 	add	r2, sp, #208	; 0xd0                           
   100bc:	e58d8000 	str	r8, [sp]                                      
   100c0:	eb002299 	bl	18b2c <rtems_rfs_bitmap_open>                  
                              group_base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
  if (rc > 0)                                                         
   100c4:	e2504000 	subs	r4, r0, #0                                   
   100c8:	da000045 	ble	101e4 <rtems_rfs_format+0x97c>                
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   100cc:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
   100d0:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
   100d4:	eb002709 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   100d8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: open inode bitmap failed: %d: %s\n",
   100dc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   100e0:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   100e4:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   100e8:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   100ec:	eb00459a 	bl	2175c <strerror>                               <== NOT EXECUTED
   100f0:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   100f4:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   100f8:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   100fc:	e59f0544 	ldr	r0, [pc, #1348]	; 10648 <rtems_rfs_format+0xde0><== NOT EXECUTED
   10100:	eb0040e7 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   10104:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   10108:	eafffe54 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
   1010c:	e2400001 	sub	r0, r0, #1                                    
   10110:	ebffc664 	bl	1aa8 <__aeabi_uidiv>                           
   10114:	e2809001 	add	r9, r0, #1                                    
  blocks = rtems_rfs_rup_quotient (fs->group_inodes, fs->inodes_per_block);
                                                                      
  /*                                                                  
   * Forced allocation of the inode blocks which follow the block bitmap.
   */                                                                 
  for (b = 0; b < blocks; b++)                                        
   10118:	e3590000 	cmp	r9, #0                                        
   1011c:	caffffd2 	bgt	1006c <rtems_rfs_format+0x804>                
   10120:	eaffffd8 	b	10088 <rtems_rfs_format+0x820>                  <== NOT EXECUTED
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
                                                                      
  if (config->verbose)                                                
   10124:	e5da3015 	ldrb	r3, [sl, #21]                                
   10128:	e3530000 	cmp	r3, #0                                        
   1012c:	1a000059 	bne	10298 <rtems_rfs_format+0xa30>                
    printf ("\n");                                                    
                                                                      
  rc = rtems_rfs_buffer_close (&fs);                                  
   10130:	e28d000c 	add	r0, sp, #12                                   
   10134:	eb0028f7 	bl	1a518 <rtems_rfs_buffer_close>                 
  if (rc > 0)                                                         
   10138:	e2504000 	subs	r4, r0, #0                                   
   1013c:	ca0000e9 	bgt	104e8 <rtems_rfs_format+0xc80>                
  int                    rc;                                          
                                                                      
  /*                                                                  
   * External API so returns -1.                                      
   */                                                                 
  rc = rtems_rfs_fs_open (name, NULL,                                 
   10140:	e3a01000 	mov	r1, #0                                        
   10144:	e28dc0dc 	add	ip, sp, #220	; 0xdc                           
   10148:	e59d0008 	ldr	r0, [sp, #8]                                  
   1014c:	e3a02006 	mov	r2, #6                                        
   10150:	e1a03001 	mov	r3, r1                                        
   10154:	e58dc000 	str	ip, [sp]                                      
   10158:	eb0031c6 	bl	1c878 <rtems_rfs_fs_open>                      
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
   1015c:	e3500000 	cmp	r0, #0                                        
   10160:	ba000113 	blt	105b4 <rtems_rfs_format+0xd4c>                
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
            errno, strerror (errno));                                 
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_alloc (fs, RTEMS_RFS_ROOT_INO, &ino);          
   10164:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         
   10168:	e3a01001 	mov	r1, #1                                        
   1016c:	e28d20e0 	add	r2, sp, #224	; 0xe0                           
   10170:	eb00031d 	bl	10dec <rtems_rfs_inode_alloc>                  
  if (rc > 0)                                                         
   10174:	e2505000 	subs	r5, r0, #0                                   
   10178:	ca000037 	bgt	1025c <rtems_rfs_format+0x9f4>                
            rc, strerror (rc));                                       
    rtems_rfs_fs_close (fs);                                          
    return rc;                                                        
  }                                                                   
                                                                      
  if (ino != RTEMS_RFS_ROOT_INO)                                      
   1017c:	e59d40e0 	ldr	r4, [sp, #224]	; 0xe0                         
   10180:	e3540001 	cmp	r4, #1                                        
   10184:	0a00004d 	beq	102c0 <rtems_rfs_format+0xa58>                
  {                                                                   
    printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
   10188:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   1018c:	e59f04b8 	ldr	r0, [pc, #1208]	; 1064c <rtems_rfs_format+0xde4><== NOT EXECUTED
   10190:	eb0040c3 	bl	204a4 <printf>                                 <== NOT EXECUTED
    rtems_rfs_fs_close (fs);                                          
   10194:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         <== NOT EXECUTED
   10198:	eb0033ae 	bl	1d058 <rtems_rfs_fs_close>                     <== NOT EXECUTED
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
   1019c:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   101a0:	eafffe2e 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   101a4:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
   101a8:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
   101ac:	eb0026d3 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   101b0:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   */                                                                 
  rc = rtems_rfs_bitmap_close (&bitmap);                              
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: close block bitmap failed: %d: %s\n",
   101b4:	e1a0000b 	mov	r0, fp                                        <== NOT EXECUTED
   101b8:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   101bc:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   101c0:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   101c4:	eb004564 	bl	2175c <strerror>                               <== NOT EXECUTED
   101c8:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   101cc:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   101d0:	e1a0200b 	mov	r2, fp                                        <== NOT EXECUTED
   101d4:	e59f0474 	ldr	r0, [pc, #1140]	; 10650 <rtems_rfs_format+0xde8><== NOT EXECUTED
   101d8:	eb0040b1 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   101dc:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   101e0:	eafffe1e 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Force the whole buffer to a known state. The bit map may not occupy the
   * whole block.                                                     
   */                                                                 
  memset (rtems_rfs_buffer_data (&handle), 0x00, rtems_rfs_fs_block_size (fs));
   101e4:	e59d30d8 	ldr	r3, [sp, #216]	; 0xd8                         
   101e8:	e3a01000 	mov	r1, #0                                        
   101ec:	e59d2014 	ldr	r2, [sp, #20]                                 
   101f0:	e593001c 	ldr	r0, [r3, #28]                                 
   101f4:	eb004039 	bl	202e0 <memset>                                 
                                                                      
  /*                                                                  
   * Clear the inode bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_map_clear_all (&bitmap);                      
   101f8:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
   101fc:	eb0021b8 	bl	188e4 <rtems_rfs_bitmap_map_clear_all>         
  if (rc > 0)                                                         
   10200:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    rtems_rfs_bitmap_close (&bitmap);                                 
   10204:	e28d00b8 	add	r0, sp, #184	; 0xb8                           
                                                                      
  /*                                                                  
   * Clear the inode bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_map_clear_all (&bitmap);                      
  if (rc > 0)                                                         
   10208:	da00003f 	ble	1030c <rtems_rfs_format+0xaa4>                
  {                                                                   
    rtems_rfs_bitmap_close (&bitmap);                                 
   1020c:	eb00225a 	bl	18b7c <rtems_rfs_bitmap_close>                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   10210:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
   10214:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
   10218:	eb0026b8 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1021c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: inode bitmap" \     
   10220:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   10224:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   10228:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1022c:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   10230:	eb004549 	bl	2175c <strerror>                               <== NOT EXECUTED
   10234:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   10238:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1023c:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   10240:	e59f040c 	ldr	r0, [pc, #1036]	; 10654 <rtems_rfs_format+0xdec><== NOT EXECUTED
   10244:	eb004096 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   10248:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   1024c:	eafffe03 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
                                                                      
  if (verbose)                                                        
    printf (", inodes");                                              
   10250:	e59f0400 	ldr	r0, [pc, #1024]	; 10658 <rtems_rfs_format+0xdf0><== NOT EXECUTED
   10254:	eb004092 	bl	204a4 <printf>                                 <== NOT EXECUTED
   10258:	eaffff92 	b	100a8 <rtems_rfs_format+0x840>                  <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_alloc (fs, RTEMS_RFS_ROOT_INO, &ino);          
  if (rc > 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: inode allocation failed: %d: %s\n",   
   1025c:	eb00453e 	bl	2175c <strerror>                               <== NOT EXECUTED
   10260:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   10264:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   10268:	e59f03ec 	ldr	r0, [pc, #1004]	; 1065c <rtems_rfs_format+0xdf4><== NOT EXECUTED
   1026c:	eb00408c 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
    rtems_rfs_fs_close (fs);                                          
   10270:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         <== NOT EXECUTED
   10274:	eb003377 	bl	1d058 <rtems_rfs_fs_close>                     <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_write_root_dir (name);                               
  if (rc > 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
   10278:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1027c:	eb004536 	bl	2175c <strerror>                               <== NOT EXECUTED
   10280:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   10284:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   10288:	e59f03d0 	ldr	r0, [pc, #976]	; 10660 <rtems_rfs_format+0xdf8><== NOT EXECUTED
   1028c:	eb004084 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
   10290:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   10294:	eafffdf1 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
                                                                      
  if (config->verbose)                                                
    printf ("\n");                                                    
   10298:	e3a0000a 	mov	r0, #10                                       <== NOT EXECUTED
   1029c:	eb0040ea 	bl	2064c <putchar>                                <== NOT EXECUTED
   102a0:	eaffffa2 	b	10130 <rtems_rfs_format+0x8c8>                  <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_setblksize (&fs, rtems_rfs_fs_block_size (&fs));
  if (rc > 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: setting block size failed: %d: %s\n", 
   102a4:	eb00452c 	bl	2175c <strerror>                               <== NOT EXECUTED
   102a8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   102ac:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   102b0:	e59f03ac 	ldr	r0, [pc, #940]	; 10664 <rtems_rfs_format+0xdfc><== NOT EXECUTED
   102b4:	eb00407a 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
   102b8:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   102bc:	eafffde7 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
    printf ("rtems-rfs: format: allocated inode not root ino: %" PRId32 "\n", ino);
    rtems_rfs_fs_close (fs);                                          
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   102c0:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         
   102c4:	e1a01004 	mov	r1, r4                                        
   102c8:	e28d2090 	add	r2, sp, #144	; 0x90                           
   102cc:	e1a03004 	mov	r3, r4                                        
   102d0:	eb0002fc 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   102d4:	e2505000 	subs	r5, r0, #0                                   
   102d8:	da00004e 	ble	10418 <rtems_rfs_format+0xbb0>                
  {                                                                   
    printf ("rtems-rfs: format: inode open failed: %d: %s\n",         
   102dc:	eb00451e 	bl	2175c <strerror>                               <== NOT EXECUTED
   102e0:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   102e4:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   102e8:	e59f0378 	ldr	r0, [pc, #888]	; 10668 <rtems_rfs_format+0xe00><== NOT EXECUTED
   102ec:	eb00406c 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
    rtems_rfs_group_bitmap_free (fs, true, ino);                      
   102f0:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         <== NOT EXECUTED
   102f4:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   102f8:	e59d20e0 	ldr	r2, [sp, #224]	; 0xe0                         <== NOT EXECUTED
   102fc:	eb000215 	bl	10b58 <rtems_rfs_group_bitmap_free>            <== NOT EXECUTED
    rtems_rfs_fs_close (fs);                                          
   10300:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         <== NOT EXECUTED
   10304:	eb003353 	bl	1d058 <rtems_rfs_fs_close>                     <== NOT EXECUTED
   10308:	eaffffda 	b	10278 <rtems_rfs_format+0xa10>                  <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * Close the inode bitmap.                                          
   */                                                                 
  rc = rtems_rfs_bitmap_close (&bitmap);                              
   1030c:	eb00221a 	bl	18b7c <rtems_rfs_bitmap_close>                 
  if (rc > 0)                                                         
   10310:	e2504000 	subs	r4, r0, #0                                   
   10314:	ca00002f 	bgt	103d8 <rtems_rfs_format+0xb70>                
  rtems_rfs_buffer_mark_dirty (&handle);                              
                                                                      
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
   10318:	e59d2004 	ldr	r2, [sp, #4]                                  
    printf ("\nrtems-rfs: write-group: group %3d: close inode" \      
            " bitmap failed: %d: %s\n", group, rc, strerror (rc));    
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
   1031c:	e3a03001 	mov	r3, #1                                        
                                                                      
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
   10320:	e3520000 	cmp	r2, #0                                        
    printf ("\nrtems-rfs: write-group: group %3d: close inode" \      
            " bitmap failed: %d: %s\n", group, rc, strerror (rc));    
    return false;                                                     
  }                                                                   
                                                                      
  rtems_rfs_buffer_mark_dirty (&handle);                              
   10324:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        
                                                                      
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
   10328:	0a00007a 	beq	10518 <rtems_rfs_format+0xcb0>                
  {                                                                   
    for (b = 0; b < blocks; b++)                                      
   1032c:	e3590000 	cmp	r9, #0                                        <== NOT EXECUTED
   10330:	da000078 	ble	10518 <rtems_rfs_format+0xcb0>                <== NOT EXECUTED
   10334:	e2855002 	add	r5, r5, #2                                    <== NOT EXECUTED
                                                                      
  return rc;                                                          
}                                                                     
                                                                      
int                                                                   
rtems_rfs_format (const char* name, const rtems_rfs_format_config* config)
   10338:	e0859009 	add	r9, r5, r9                                    <== NOT EXECUTED
   1033c:	ea000008 	b	10364 <rtems_rfs_format+0xafc>                  <== NOT EXECUTED
                                                                      
      /*                                                              
       * Force the whole buffer to a known state. The bit map may not occupy the
       * whole block.                                                 
       */                                                             
      memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
   10340:	e59d30d8 	ldr	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   10344:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   10348:	e593001c 	ldr	r0, [r3, #28]                                 <== NOT EXECUTED
                                                                      
      rtems_rfs_buffer_mark_dirty (&handle);                          
   1034c:	e2855001 	add	r5, r5, #1                                    <== NOT EXECUTED
                                                                      
      /*                                                              
       * Force the whole buffer to a known state. The bit map may not occupy the
       * whole block.                                                 
       */                                                             
      memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
   10350:	eb003fe2 	bl	202e0 <memset>                                 <== NOT EXECUTED
                                                                      
      rtems_rfs_buffer_mark_dirty (&handle);                          
   10354:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
  {                                                                   
    for (b = 0; b < blocks; b++)                                      
   10358:	e1550009 	cmp	r5, r9                                        <== NOT EXECUTED
       * Force the whole buffer to a known state. The bit map may not occupy the
       * whole block.                                                 
       */                                                             
      memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
                                                                      
      rtems_rfs_buffer_mark_dirty (&handle);                          
   1035c:	e5cd00d0 	strb	r0, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  /*                                                                  
   * Initialise the inode tables if required to do so.                
   */                                                                 
  if (initialise_inodes)                                              
  {                                                                   
    for (b = 0; b < blocks; b++)                                      
   10360:	0a00006c 	beq	10518 <rtems_rfs_format+0xcb0>                <== NOT EXECUTED
    {                                                                 
      rc = rtems_rfs_buffer_handle_request (fs, &handle,              
   10364:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
   10368:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   1036c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   10370:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
   10374:	eb0026da 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
                                            group_base + b + RTEMS_RFS_GROUP_INODE_BLOCK,
                                            false);                   
      if (rc > 0)                                                     
   10378:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                                                                      
      /*                                                              
       * Force the whole buffer to a known state. The bit map may not occupy the
       * whole block.                                                 
       */                                                             
      memset (rtems_rfs_buffer_data (&handle), 0xff, rtems_rfs_fs_block_size (fs));
   1037c:	e3a010ff 	mov	r1, #255	; 0xff                               <== NOT EXECUTED
    for (b = 0; b < blocks; b++)                                      
    {                                                                 
      rc = rtems_rfs_buffer_handle_request (fs, &handle,              
                                            group_base + b + RTEMS_RFS_GROUP_INODE_BLOCK,
                                            false);                   
      if (rc > 0)                                                     
   10380:	daffffee 	ble	10340 <rtems_rfs_format+0xad8>                <== NOT EXECUTED
   10384:	e1a04000 	mov	r4, r0                                        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   10388:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
   1038c:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
   10390:	eb00265a 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   10394:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
      {                                                               
        rtems_rfs_buffer_handle_close (fs, &handle);                  
        printf ("\nrtems-rfs: write-group: group %3d: block %" PRId32 " request failed: %d: %s\n",
   10398:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1039c:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   103a0:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   103a4:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   103a8:	eb0044eb 	bl	2175c <strerror>                               <== NOT EXECUTED
   103ac:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   103b0:	e58d0000 	str	r0, [sp]                                      <== NOT EXECUTED
   103b4:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   103b8:	e59f02ac 	ldr	r0, [pc, #684]	; 1066c <rtems_rfs_format+0xe04><== NOT EXECUTED
   103bc:	e1a03004 	mov	r3, r4                                        <== NOT EXECUTED
   103c0:	eb004037 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   103c4:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   103c8:	eafffda4 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
                                                                      
    if (total_size >= GIGS (1))                                       
    {                                                                 
      uint32_t gigs = (total_size + GIGS (1)) / GIGS (1);             
      int      b;                                                     
      for (b = 31; b > 0; b--)                                        
   103cc:	e3a04001 	mov	r4, #1                                        <== NOT EXECUTED
        if ((gigs & (1 << b)) != 0)                                   
          break;                                                      
      fs->block_size = 1 << b;                                        
   103d0:	e58d4014 	str	r4, [sp, #20]                                 <== NOT EXECUTED
   103d4:	eafffe2c 	b	fc8c <rtems_rfs_format+0x424>                   <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   103d8:	e28d10d0 	add	r1, sp, #208	; 0xd0                           <== NOT EXECUTED
   103dc:	e28d000c 	add	r0, sp, #12                                   <== NOT EXECUTED
   103e0:	eb002646 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   103e4:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   */                                                                 
  rc = rtems_rfs_bitmap_close (&bitmap);                              
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    printf ("\nrtems-rfs: write-group: group %3d: close inode" \      
   103e8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   103ec:	e5cd30d0 	strb	r3, [sp, #208]	; 0xd0                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   103f0:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   103f4:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         <== NOT EXECUTED
   103f8:	eb0044d7 	bl	2175c <strerror>                               <== NOT EXECUTED
   103fc:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   10400:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   10404:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   10408:	e59f0260 	ldr	r0, [pc, #608]	; 10670 <rtems_rfs_format+0xe08><== NOT EXECUTED
   1040c:	eb004024 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   10410:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   10414:	eafffd91 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
    rtems_rfs_group_bitmap_free (fs, true, ino);                      
    rtems_rfs_fs_close (fs);                                          
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_initialise (&inode, 0,                         
   10418:	e3a0c000 	mov	ip, #0                                        
   1041c:	e1a0100c 	mov	r1, ip                                        
   10420:	e28d0090 	add	r0, sp, #144	; 0x90                           
   10424:	e59f2248 	ldr	r2, [pc, #584]	; 10674 <rtems_rfs_format+0xe0c>
   10428:	e1a0300c 	mov	r3, ip                                        
   1042c:	e58dc000 	str	ip, [sp]                                      
   10430:	eb0003a8 	bl	112d8 <rtems_rfs_inode_initialise>             
                                   (RTEMS_RFS_S_IFDIR | RTEMS_RFS_S_IRWXU |
                                    RTEMS_RFS_S_IXGRP | RTEMS_RFS_S_IXOTH),
                                   0, 0);                             
  if (rc > 0)                                                         
   10434:	e2504000 	subs	r4, r0, #0                                   
   10438:	da000004 	ble	10450 <rtems_rfs_format+0xbe8>                
    printf ("rtems-rfs: format: inode initialise failed: %d: %s\n",   
   1043c:	eb0044c6 	bl	2175c <strerror>                               <== NOT EXECUTED
   10440:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   10444:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   10448:	e59f0228 	ldr	r0, [pc, #552]	; 10678 <rtems_rfs_format+0xe10><== NOT EXECUTED
   1044c:	eb004014 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, ino);             
   10450:	e59dc0e0 	ldr	ip, [sp, #224]	; 0xe0                         
   10454:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         
   10458:	e28d1090 	add	r1, sp, #144	; 0x90                           
   1045c:	e59f2218 	ldr	r2, [pc, #536]	; 1067c <rtems_rfs_format+0xe14>
   10460:	e3a03001 	mov	r3, #1                                        
   10464:	e58dc000 	str	ip, [sp]                                      
   10468:	eb0029ac 	bl	1ab20 <rtems_rfs_dir_add_entry>                
  if (rc > 0)                                                         
   1046c:	e2504000 	subs	r4, r0, #0                                   
   10470:	da000004 	ble	10488 <rtems_rfs_format+0xc20>                
    printf ("rtems-rfs: format: directory add failed: %d: %s\n",      
   10474:	eb0044b8 	bl	2175c <strerror>                               <== NOT EXECUTED
   10478:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   1047c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   10480:	e59f01f8 	ldr	r0, [pc, #504]	; 10680 <rtems_rfs_format+0xe18><== NOT EXECUTED
   10484:	eb004006 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   10488:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         
   1048c:	e28d1090 	add	r1, sp, #144	; 0x90                           
   10490:	eb000306 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   10494:	e2504000 	subs	r4, r0, #0                                   
   10498:	da000004 	ble	104b0 <rtems_rfs_format+0xc48>                
    printf ("rtems-rfs: format: inode close failed: %d: %s\n",        
   1049c:	eb0044ae 	bl	2175c <strerror>                               <== NOT EXECUTED
   104a0:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   104a4:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   104a8:	e59f01d4 	ldr	r0, [pc, #468]	; 10684 <rtems_rfs_format+0xe1c><== NOT EXECUTED
   104ac:	eb003ffc 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
   104b0:	e59d00dc 	ldr	r0, [sp, #220]	; 0xdc                         
   104b4:	eb0032e7 	bl	1d058 <rtems_rfs_fs_close>                     
  if (rc < 0)                                                         
   104b8:	e2505000 	subs	r5, r0, #0                                   
   104bc:	ba000031 	blt	10588 <rtems_rfs_format+0xd20>                
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
   104c0:	01a00005 	moveq	r0, r5                                      
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_write_root_dir (name);                               
  if (rc > 0)                                                         
   104c4:	0afffd65 	beq	fa60 <rtems_rfs_format+0x1f8>                 
   104c8:	eaffff6a 	b	10278 <rtems_rfs_format+0xa10>                  <== NOT EXECUTED
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, &fs);                             
  if (rc > 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: buffer open failed: %d: %s\n",        
   104cc:	eb0044a2 	bl	2175c <strerror>                               <== NOT EXECUTED
   104d0:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   104d4:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   104d8:	e59f01a8 	ldr	r0, [pc, #424]	; 10688 <rtems_rfs_format+0xe20><== NOT EXECUTED
   104dc:	eb003ff0 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
   104e0:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   104e4:	eafffd5d 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
    printf ("\n");                                                    
                                                                      
  rc = rtems_rfs_buffer_close (&fs);                                  
  if (rc > 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: buffer close failed: %d: %s\n",       
   104e8:	eb00449b 	bl	2175c <strerror>                               <== NOT EXECUTED
   104ec:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   104f0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   104f4:	e59f0190 	ldr	r0, [pc, #400]	; 1068c <rtems_rfs_format+0xe24><== NOT EXECUTED
   104f8:	eb003fe9 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rc, strerror (rc));                                       
    return -1;                                                        
   104fc:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   10500:	eafffd56 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
  /*                                                                  
   * Check the media.                                                 
   */                                                                 
  if (rtems_rfs_fs_media_block_size (&fs) == 0)                       
  {                                                                   
    printf ("rtems-rfs: media block is invalid: %" PRIu32 "\n",       
   10504:	e59f0184 	ldr	r0, [pc, #388]	; 10690 <rtems_rfs_format+0xe28><== NOT EXECUTED
   10508:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1050c:	eb003fe4 	bl	204a4 <printf>                                 <== NOT EXECUTED
            rtems_rfs_fs_media_block_size (&fs));                     
    return -1;                                                        
   10510:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   10514:	eafffd51 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   10518:	e28d000c 	add	r0, sp, #12                                   
   1051c:	e28d10d0 	add	r1, sp, #208	; 0xd0                           
   10520:	eb0025f6 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  {                                                                   
    printf ("rtems-rfs: format: superblock write failed\n");          
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
   10524:	e59d3030 	ldr	r3, [sp, #48]	; 0x30                          
   10528:	e2877001 	add	r7, r7, #1                                    
   1052c:	e1530007 	cmp	r3, r7                                        
  handle->dirty = false;                                              
   10530:	e3a02000 	mov	r2, #0                                        
  handle->bnum  = 0;                                                  
   10534:	e3a03000 	mov	r3, #0                                        
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
  handle->dirty = false;                                              
   10538:	e5cd20d0 	strb	r2, [sp, #208]	; 0xd0                        
  handle->bnum  = 0;                                                  
   1053c:	e58d30d4 	str	r3, [sp, #212]	; 0xd4                         
  handle->buffer = NULL;                                              
   10540:	e58d30d8 	str	r3, [sp, #216]	; 0xd8                         
   10544:	dafffef6 	ble	10124 <rtems_rfs_format+0x8bc>                
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
   10548:	e59d4034 	ldr	r4, [sp, #52]	; 0x34                          <== NOT EXECUTED
   1054c:	e0080794 	mul	r8, r4, r7                                    <== NOT EXECUTED
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
   10550:	e59d3010 	ldr	r3, [sp, #16]                                 <== NOT EXECUTED
  size_t                   group_size;                                
  int                      blocks;                                    
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
   10554:	e2885001 	add	r5, r8, #1                                    <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
   10558:	e5da0014 	ldrb	r0, [sl, #20]                                <== NOT EXECUTED
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
   1055c:	e1550003 	cmp	r5, r3                                        <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
   10560:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
   10564:	e5da6015 	ldrb	r6, [sl, #21]                                <== NOT EXECUTED
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
   10568:	9afffe6c 	bls	ff20 <rtems_rfs_format+0x6b8>                 <== NOT EXECUTED
  {                                                                   
    printf ("rtems-rfs: write-group: group %d base beyond disk limit\n",
   1056c:	e59f0120 	ldr	r0, [pc, #288]	; 10694 <rtems_rfs_format+0xe2c><== NOT EXECUTED
   10570:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   10574:	eb003fca 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  for (group = 0; group < fs.group_count; group++)                    
    if (!rtems_rfs_write_group (&fs, group,                           
                                config->initialise_inodes, config->verbose))
      return -1;                                                      
   10578:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   1057c:	eafffd37 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
  int                      b;                                         
  int                      rc;                                        
                                                                      
  group_base = rtems_rfs_fs_block (fs, group, 0);                     
                                                                      
  if (group_base > rtems_rfs_fs_blocks (fs))                          
   10580:	e1a07003 	mov	r7, r3                                        <== NOT EXECUTED
   10584:	eafffff8 	b	1056c <rtems_rfs_format+0xd04>                  <== NOT EXECUTED
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
  if (rc < 0)                                                         
    printf ("rtems-rfs: format: file system close failed: %d: %s\n",  
            errno, strerror (errno));                                 
   10588:	eb003c01 	bl	1f594 <__errno>                                <== NOT EXECUTED
    printf ("rtems-rfs: format: inode close failed: %d: %s\n",        
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
  if (rc < 0)                                                         
    printf ("rtems-rfs: format: file system close failed: %d: %s\n",  
   1058c:	e5904000 	ldr	r4, [r0]                                      <== NOT EXECUTED
            errno, strerror (errno));                                 
   10590:	eb003bff 	bl	1f594 <__errno>                                <== NOT EXECUTED
    printf ("rtems-rfs: format: inode close failed: %d: %s\n",        
            rc, strerror (rc));                                       
                                                                      
  rc = rtems_rfs_fs_close (fs);                                       
  if (rc < 0)                                                         
    printf ("rtems-rfs: format: file system close failed: %d: %s\n",  
   10594:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   10598:	eb00446f 	bl	2175c <strerror>                               <== NOT EXECUTED
   1059c:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   105a0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   105a4:	e59f00ec 	ldr	r0, [pc, #236]	; 10698 <rtems_rfs_format+0xe30><== NOT EXECUTED
   105a8:	eb003fbd 	bl	204a4 <printf>                                 <== NOT EXECUTED
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
   105ac:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   105b0:	eafffd2a 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
            errno, strerror (errno));                                 
   105b4:	eb003bf6 	bl	1f594 <__errno>                                <== NOT EXECUTED
  rc = rtems_rfs_fs_open (name, NULL,                                 
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
   105b8:	e5904000 	ldr	r4, [r0]                                      <== NOT EXECUTED
            errno, strerror (errno));                                 
   105bc:	eb003bf4 	bl	1f594 <__errno>                                <== NOT EXECUTED
  rc = rtems_rfs_fs_open (name, NULL,                                 
                          RTEMS_RFS_FS_FORCE_OPEN | RTEMS_RFS_FS_NO_LOCAL_CACHE,
                          0, &fs);                                    
  if (rc < 0)                                                         
  {                                                                   
    printf ("rtems-rfs: format: file system open failed: %d: %s\n",   
   105c0:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   105c4:	eb004464 	bl	2175c <strerror>                               <== NOT EXECUTED
   105c8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   105cc:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   105d0:	e59f00c4 	ldr	r0, [pc, #196]	; 1069c <rtems_rfs_format+0xe34><== NOT EXECUTED
   105d4:	eb003fb2 	bl	204a4 <printf>                                 <== NOT EXECUTED
    printf ("rtems-rfs: format: writing root dir failed: %d: %s\n",   
            rc, strerror (rc));                                       
    return -1;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
   105d8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   105dc:	eafffd1f 	b	fa60 <rtems_rfs_format+0x1f8>                   <== NOT EXECUTED
                                                                      

0001d058 <rtems_rfs_fs_close>: return 0; } int rtems_rfs_fs_close (rtems_rfs_file_system* fs) {
   1d058:	e92d4070 	push	{r4, r5, r6, lr}                             
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
   1d05c:	e3a01000 	mov	r1, #0                                        
  return 0;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_rfs_fs_close (rtems_rfs_file_system* fs)                        
{                                                                     
   1d060:	e1a04000 	mov	r4, r0                                        
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
   1d064:	e3a00002 	mov	r0, #2                                        
   1d068:	ebffd5f0 	bl	12830 <rtems_rfs_trace>                        
   1d06c:	e3500000 	cmp	r0, #0                                        
   1d070:	1a000013 	bne	1d0c4 <rtems_rfs_fs_close+0x6c>               
    printf ("rtems-rfs: close\n");                                    
                                                                      
  for (group = 0; group < fs->group_count; group++)                   
   1d074:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   1d078:	e3530000 	cmp	r3, #0                                        
   1d07c:	da00000a 	ble	1d0ac <rtems_rfs_fs_close+0x54>               
   1d080:	e3a05000 	mov	r5, #0                                        
   1d084:	e1a06005 	mov	r6, r5                                        
    rtems_rfs_group_close (fs, &fs->groups[group]);                   
   1d088:	e5941020 	ldr	r1, [r4, #32]                                 
   1d08c:	e1a00004 	mov	r0, r4                                        
   1d090:	e0811005 	add	r1, r1, r5                                    
   1d094:	ebffce04 	bl	108ac <rtems_rfs_group_close>                  
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
    printf ("rtems-rfs: close\n");                                    
                                                                      
  for (group = 0; group < fs->group_count; group++)                   
   1d098:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   1d09c:	e2866001 	add	r6, r6, #1                                    
   1d0a0:	e1530006 	cmp	r3, r6                                        
   1d0a4:	e2855050 	add	r5, r5, #80	; 0x50                            
   1d0a8:	cafffff6 	bgt	1d088 <rtems_rfs_fs_close+0x30>               
    rtems_rfs_group_close (fs, &fs->groups[group]);                   
                                                                      
  rtems_rfs_buffer_close (fs);                                        
   1d0ac:	e1a00004 	mov	r0, r4                                        
   1d0b0:	ebfff518 	bl	1a518 <rtems_rfs_buffer_close>                 
                                                                      
  free (fs);                                                          
   1d0b4:	e1a00004 	mov	r0, r4                                        
   1d0b8:	ebffa85e 	bl	7238 <free>                                    
  return 0;                                                           
}                                                                     
   1d0bc:	e3a00000 	mov	r0, #0                                        
   1d0c0:	e8bd8070 	pop	{r4, r5, r6, pc}                              
rtems_rfs_fs_close (rtems_rfs_file_system* fs)                        
{                                                                     
  int group;                                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_CLOSE))                        
    printf ("rtems-rfs: close\n");                                    
   1d0c4:	e59f0004 	ldr	r0, [pc, #4]	; 1d0d0 <rtems_rfs_fs_close+0x78><== NOT EXECUTED
   1d0c8:	eb000d8d 	bl	20704 <puts>                                   <== NOT EXECUTED
   1d0cc:	eaffffe8 	b	1d074 <rtems_rfs_fs_close+0x1c>                 <== NOT EXECUTED
                                                                      

0001c878 <rtems_rfs_fs_open>: rtems_rfs_fs_open (const char* name, void* user, uint32_t flags, uint32_t max_held_buffers, rtems_rfs_file_system** fs) {
   1c878:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
   1c87c:	e1a06000 	mov	r6, r0                                        
   1c880:	e24dd038 	sub	sp, sp, #56	; 0x38                            
   1c884:	e1a05001 	mov	r5, r1                                        
#endif                                                                
  rtems_rfs_inode_handle inode;                                       
  uint16_t               mode;                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
   1c888:	e3a00001 	mov	r0, #1                                        
   1c88c:	e3a01000 	mov	r1, #0                                        
rtems_rfs_fs_open (const char*             name,                      
                   void*                   user,                      
                   uint32_t                flags,                     
                   uint32_t                max_held_buffers,          
                   rtems_rfs_file_system** fs)                        
{                                                                     
   1c890:	e1a07002 	mov	r7, r2                                        
   1c894:	e1a08003 	mov	r8, r3                                        
   1c898:	e59d4058 	ldr	r4, [sp, #88]	; 0x58                          
#endif                                                                
  rtems_rfs_inode_handle inode;                                       
  uint16_t               mode;                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
   1c89c:	ebffd7e3 	bl	12830 <rtems_rfs_trace>                        
   1c8a0:	e3500000 	cmp	r0, #0                                        
   1c8a4:	1a000062 	bne	1ca34 <rtems_rfs_fs_open+0x1bc>               
    printf ("rtems-rfs: open: %s\n", name);                           
                                                                      
  *fs = malloc (sizeof (rtems_rfs_file_system));                      
   1c8a8:	e3a00084 	mov	r0, #132	; 0x84                               
   1c8ac:	ebffabe0 	bl	7834 <malloc>                                  
  if (!*fs)                                                           
   1c8b0:	e3500000 	cmp	r0, #0                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
    printf ("rtems-rfs: open: %s\n", name);                           
                                                                      
  *fs = malloc (sizeof (rtems_rfs_file_system));                      
   1c8b4:	e5840000 	str	r0, [r4]                                      
  if (!*fs)                                                           
   1c8b8:	0a00012b 	beq	1cd6c <rtems_rfs_fs_open+0x4f4>               
      printf ("rtems-rfs: open: no memory for file system data\n");   
    errno = ENOMEM;                                                   
    return -1;                                                        
  }                                                                   
                                                                      
  memset (*fs, 0, sizeof (rtems_rfs_file_system));                    
   1c8bc:	e3a01000 	mov	r1, #0                                        
   1c8c0:	e3a02084 	mov	r2, #132	; 0x84                               
   1c8c4:	eb000e85 	bl	202e0 <memset>                                 
                                                                      
  (*fs)->user = user;                                                 
   1c8c8:	e5943000 	ldr	r3, [r4]                                      
   1c8cc:	e5835080 	str	r5, [r3, #128]	; 0x80                         
  rtems_chain_initialize_empty (&(*fs)->buffers);                     
   1c8d0:	e5943000 	ldr	r3, [r4]                                      
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
   1c8d4:	e3a05000 	mov	r5, #0                                        
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   1c8d8:	e2831044 	add	r1, r3, #68	; 0x44                            
   1c8dc:	e2832048 	add	r2, r3, #72	; 0x48                            
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
   1c8e0:	e583104c 	str	r1, [r3, #76]	; 0x4c                          
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   1c8e4:	e5832044 	str	r2, [r3, #68]	; 0x44                          
  head->previous = NULL;                                              
   1c8e8:	e5835048 	str	r5, [r3, #72]	; 0x48                          
  rtems_chain_initialize_empty (&(*fs)->release);                     
   1c8ec:	e5943000 	ldr	r3, [r4]                                      
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   1c8f0:	e2831054 	add	r1, r3, #84	; 0x54                            
   1c8f4:	e2832058 	add	r2, r3, #88	; 0x58                            
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
   1c8f8:	e583105c 	str	r1, [r3, #92]	; 0x5c                          
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   1c8fc:	e5832054 	str	r2, [r3, #84]	; 0x54                          
  head->previous = NULL;                                              
   1c900:	e5835058 	str	r5, [r3, #88]	; 0x58                          
  rtems_chain_initialize_empty (&(*fs)->release_modified);            
   1c904:	e5943000 	ldr	r3, [r4]                                      
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   1c908:	e2831064 	add	r1, r3, #100	; 0x64                           
   1c90c:	e2832068 	add	r2, r3, #104	; 0x68                           
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
  tail->previous = head;                                              
   1c910:	e583106c 	str	r1, [r3, #108]	; 0x6c                         
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   1c914:	e5832064 	str	r2, [r3, #100]	; 0x64                         
  head->previous = NULL;                                              
   1c918:	e5835068 	str	r5, [r3, #104]	; 0x68                         
  rtems_chain_initialize_empty (&(*fs)->file_shares);                 
   1c91c:	e5943000 	ldr	r3, [r4]                                      
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
   1c920:	e2831078 	add	r1, r3, #120	; 0x78                           
   1c924:	e2832074 	add	r2, r3, #116	; 0x74                           
                                                                      
  head->next = tail;                                                  
   1c928:	e5831074 	str	r1, [r3, #116]	; 0x74                         
  head->previous = NULL;                                              
   1c92c:	e5835078 	str	r5, [r3, #120]	; 0x78                         
  tail->previous = head;                                              
   1c930:	e583207c 	str	r2, [r3, #124]	; 0x7c                         
                                                                      
  (*fs)->max_held_buffers = max_held_buffers;                         
   1c934:	e5941000 	ldr	r1, [r4]                                      
#endif                                                                
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, *fs);                             
   1c938:	e1a00006 	mov	r0, r6                                        
  rtems_chain_initialize_empty (&(*fs)->buffers);                     
  rtems_chain_initialize_empty (&(*fs)->release);                     
  rtems_chain_initialize_empty (&(*fs)->release_modified);            
  rtems_chain_initialize_empty (&(*fs)->file_shares);                 
                                                                      
  (*fs)->max_held_buffers = max_held_buffers;                         
   1c93c:	e5818040 	str	r8, [r1, #64]	; 0x40                          
  (*fs)->buffers_count = 0;                                           
   1c940:	e5815050 	str	r5, [r1, #80]	; 0x50                          
  (*fs)->release_count = 0;                                           
   1c944:	e5815060 	str	r5, [r1, #96]	; 0x60                          
  (*fs)->release_modified_count = 0;                                  
   1c948:	e5815070 	str	r5, [r1, #112]	; 0x70                         
  (*fs)->flags = flags;                                               
   1c94c:	e5817000 	str	r7, [r1]                                      
#endif                                                                
                                                                      
  /*                                                                  
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, *fs);                             
   1c950:	ebfff60a 	bl	1a180 <rtems_rfs_buffer_open>                  
  if (rc > 0)                                                         
   1c954:	e2506000 	subs	r6, r0, #0                                   
   1c958:	ca00007c 	bgt	1cb50 <rtems_rfs_fs_open+0x2d8>               
              rc, strerror (rc));                                     
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_read_superblock (*fs);                            
   1c95c:	e5946000 	ldr	r6, [r4]                                      
      printf ("rtems-rfs: read-superblock: handle open failed: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);        
   1c960:	e28d102c 	add	r1, sp, #44	; 0x2c                            
   1c964:	e1a00006 	mov	r0, r6                                        
   1c968:	e1a02005 	mov	r2, r5                                        
   1c96c:	e3a03001 	mov	r3, #1                                        
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1c970:	e5cd502c 	strb	r5, [sp, #44]	; 0x2c                         
  handle->bnum  = 0;                                                  
   1c974:	e58d5030 	str	r5, [sp, #48]	; 0x30                          
  handle->buffer = NULL;                                              
   1c978:	e58d5034 	str	r5, [sp, #52]	; 0x34                          
   1c97c:	ebfff558 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
  if (rc > 0)                                                         
   1c980:	e2508000 	subs	r8, r0, #0                                   
   1c984:	da000013 	ble	1c9d8 <rtems_rfs_fs_open+0x160>               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1c988:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1c98c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1c990:	ebffd7a6 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1c994:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1c998:	1a000030 	bne	1ca60 <rtems_rfs_fs_open+0x1e8>               <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_read_superblock (*fs);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
   1c99c:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1c9a0:	ebfff6dc 	bl	1a518 <rtems_rfs_buffer_close>                 <== NOT EXECUTED
    free (*fs);                                                       
   1c9a4:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1c9a8:	ebffaa22 	bl	7238 <free>                                    <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1c9ac:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1c9b0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1c9b4:	ebffd79d 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1c9b8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1c9bc:	1a00007c 	bne	1cbb4 <rtems_rfs_fs_open+0x33c>               <== NOT EXECUTED
      printf ("rtems-rfs: open: reading superblock: %d: %s\n",        
              rc, strerror (rc));                                     
    errno = rc;                                                       
   1c9c0:	eb000af3 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1c9c4:	e5808000 	str	r8, [r0]                                      <== NOT EXECUTED
    return -1;                                                        
   1c9c8:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
    return -1;                                                        
  }                                                                   
                                                                      
  errno = 0;                                                          
  return 0;                                                           
}                                                                     
   1c9cc:	e1a00003 	mov	r0, r3                                        
   1c9d0:	e28dd038 	add	sp, sp, #56	; 0x38                            
   1c9d4:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
      printf ("rtems-rfs: read-superblock: request failed%d: %s\n",   
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  sb = rtems_rfs_buffer_data (&handle);                               
   1c9d8:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
   1c9dc:	e593701c 	ldr	r7, [r3, #28]                                 
                                                                      
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))                    
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)      
   1c9e0:	e5d72001 	ldrb	r2, [r7, #1]                                 
   1c9e4:	e5d73000 	ldrb	r3, [r7]                                     
   1c9e8:	e1a02802 	lsl	r2, r2, #16                                   
   1c9ec:	e5d71003 	ldrb	r1, [r7, #3]                                 
   1c9f0:	e1822c03 	orr	r2, r2, r3, lsl #24                           
   1c9f4:	e5d73002 	ldrb	r3, [r7, #2]                                 
   1c9f8:	e1822001 	orr	r2, r2, r1                                    
   1c9fc:	e1822403 	orr	r2, r2, r3, lsl #8                            
   1ca00:	e59f3608 	ldr	r3, [pc, #1544]	; 1d010 <rtems_rfs_fs_open+0x798>
   1ca04:	e1520003 	cmp	r2, r3                                        
   1ca08:	0a00001b 	beq	1ca7c <rtems_rfs_fs_open+0x204>               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1ca0c:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1ca10:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ca14:	ebffd785 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1ca18:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1ca1c:	1a000008 	bne	1ca44 <rtems_rfs_fs_open+0x1cc>               <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1ca20:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1ca24:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1ca28:	ebfff4b4 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
   1ca2c:	e3a08005 	mov	r8, #5                                        <== NOT EXECUTED
   1ca30:	eaffffd9 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
  rtems_rfs_inode_handle inode;                                       
  uint16_t               mode;                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                         
    printf ("rtems-rfs: open: %s\n", name);                           
   1ca34:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1ca38:	e59f05d4 	ldr	r0, [pc, #1492]	; 1d014 <rtems_rfs_fs_open+0x79c><== NOT EXECUTED
   1ca3c:	eb000e98 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1ca40:	eaffff98 	b	1c8a8 <rtems_rfs_fs_open+0x30>                  <== NOT EXECUTED
#define read_sb(_o) rtems_rfs_read_u32 (sb + (_o))                    
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_MAGIC) != RTEMS_RFS_SB_MAGIC)      
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
   1ca44:	e59f05cc 	ldr	r0, [pc, #1484]	; 1d018 <rtems_rfs_fs_open+0x7a0><== NOT EXECUTED
   1ca48:	eb000f2d 	bl	20704 <puts>                                   <== NOT EXECUTED
   1ca4c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1ca50:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1ca54:	ebfff4a9 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
   1ca58:	e3a08005 	mov	r8, #5                                        <== NOT EXECUTED
   1ca5c:	eaffffce 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_buffer_handle_request (fs, &handle, 0, true);        
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: request failed%d: %s\n",   
   1ca60:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1ca64:	eb00133c 	bl	2175c <strerror>                               <== NOT EXECUTED
   1ca68:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   1ca6c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1ca70:	e59f05a4 	ldr	r0, [pc, #1444]	; 1d01c <rtems_rfs_fs_open+0x7a4><== NOT EXECUTED
   1ca74:	eb000e8a 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1ca78:	eaffffc7 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock, bad magic\n");
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
   1ca7c:	e5d7300d 	ldrb	r3, [r7, #13]                                
   1ca80:	e5d7000c 	ldrb	r0, [r7, #12]                                
   1ca84:	e5d7100f 	ldrb	r1, [r7, #15]                                
   1ca88:	e1a03803 	lsl	r3, r3, #16                                   
   1ca8c:	e5d7200e 	ldrb	r2, [r7, #14]                                
   1ca90:	e1833c00 	orr	r3, r3, r0, lsl #24                           
   1ca94:	e1833001 	orr	r3, r3, r1                                    
   1ca98:	e1833402 	orr	r3, r3, r2, lsl #8                            
   1ca9c:	e5863004 	str	r3, [r6, #4]                                  
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
   1caa0:	e5d71009 	ldrb	r1, [r7, #9]                                 
   1caa4:	e5d7c008 	ldrb	ip, [r7, #8]                                 
   1caa8:	e5d7000b 	ldrb	r0, [r7, #11]                                
}                                                                     
                                                                      
uint64_t                                                              
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)                   
{                                                                     
  uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);  
   1caac:	e5962010 	ldr	r2, [r6, #16]                                 
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
   1cab0:	e1a01801 	lsl	r1, r1, #16                                   
   1cab4:	e1811c0c 	orr	r1, r1, ip, lsl #24                           
   1cab8:	e5d7e00a 	ldrb	lr, [r7, #10]                                
   1cabc:	e1811000 	orr	r1, r1, r0                                    
                                                                      
uint64_t                                                              
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)                   
{                                                                     
  uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);  
  uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
   1cac0:	e282001c 	add	r0, r2, #28                                   
   1cac4:	e8901001 	ldm	r0, {r0, ip}                                  
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
   1cac8:	e181140e 	orr	r1, r1, lr, lsl #8                            
uint64_t                                                              
rtems_rfs_fs_size (rtems_rfs_file_system* fs)                         
{                                                                     
  uint64_t blocks = rtems_rfs_fs_blocks (fs);                         
  uint64_t block_size = rtems_rfs_fs_block_size (fs);                 
  return blocks * block_size;                                         
   1cacc:	e0898391 	umull	r8, r9, r1, r3                              
uint64_t                                                              
rtems_rfs_fs_media_size (rtems_rfs_file_system* fs)                   
{                                                                     
  uint64_t media_blocks = (uint64_t) rtems_rfs_fs_media_blocks (fs);  
  uint64_t media_block_size = (uint64_t) rtems_rfs_fs_media_block_size (fs);
  return media_blocks * media_block_size;                             
   1cad0:	e083209c 	umull	r2, r3, ip, r0                              
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
                                                                      
  if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))           
   1cad4:	e1530009 	cmp	r3, r9                                        
   1cad8:	01520008 	cmpeq	r2, r8                                      
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
   1cadc:	e5861008 	str	r1, [r6, #8]                                  
                                                                      
  if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))           
   1cae0:	3a00002b 	bcc	1cb94 <rtems_rfs_fs_open+0x31c>               
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
   1cae4:	e5d73025 	ldrb	r3, [r7, #37]	; 0x25                         
   1cae8:	e5d72024 	ldrb	r2, [r7, #36]	; 0x24                         
   1caec:	e1a03803 	lsl	r3, r3, #16                                   
   1caf0:	e5d70027 	ldrb	r0, [r7, #39]	; 0x27                         
   1caf4:	e1833c02 	orr	r3, r3, r2, lsl #24                           
   1caf8:	e5d72026 	ldrb	r2, [r7, #38]	; 0x26                         
   1cafc:	e1833000 	orr	r3, r3, r0                                    
   1cb00:	e1833402 	orr	r3, r3, r2, lsl #8                            
   1cb04:	e3530038 	cmp	r3, #56	; 0x38                                
   1cb08:	0a000030 	beq	1cbd0 <rtems_rfs_fs_open+0x358>               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cb0c:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cb10:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cb14:	ebffd745 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cb18:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1cb1c:	0affffbf 	beq	1ca20 <rtems_rfs_fs_open+0x1a8>               <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
   1cb20:	e5d73005 	ldrb	r3, [r7, #5]                                 <== NOT EXECUTED
   1cb24:	e5d71004 	ldrb	r1, [r7, #4]                                 <== NOT EXECUTED
   1cb28:	e5d72007 	ldrb	r2, [r7, #7]                                 <== NOT EXECUTED
   1cb2c:	e1a03803 	lsl	r3, r3, #16                                   <== NOT EXECUTED
   1cb30:	e1833c01 	orr	r3, r3, r1, lsl #24                           <== NOT EXECUTED
   1cb34:	e5d71006 	ldrb	r1, [r7, #6]                                 <== NOT EXECUTED
   1cb38:	e1833002 	orr	r3, r3, r2                                    <== NOT EXECUTED
  }                                                                   
                                                                      
  if (read_sb (RTEMS_RFS_SB_OFFSET_INODE_SIZE) != RTEMS_RFS_INODE_SIZE)
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: inode size mismatch: fs:%" PRId32 " target:%" PRId32 "\n",
   1cb3c:	e1831401 	orr	r1, r3, r1, lsl #8                            <== NOT EXECUTED
   1cb40:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   1cb44:	e59f04d4 	ldr	r0, [pc, #1236]	; 1d020 <rtems_rfs_fs_open+0x7a8><== NOT EXECUTED
   1cb48:	eb000e55 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1cb4c:	eaffffb3 	b	1ca20 <rtems_rfs_fs_open+0x1a8>                 <== NOT EXECUTED
   * Open the buffer interface.                                       
   */                                                                 
  rc = rtems_rfs_buffer_open (name, *fs);                             
  if (rc > 0)                                                         
  {                                                                   
    free (*fs);                                                       
   1cb50:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cb54:	ebffa9b7 	bl	7238 <free>                                    <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cb58:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cb5c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cb60:	ebffd732 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cb64:	e1500005 	cmp	r0, r5                                        <== NOT EXECUTED
   1cb68:	0a000005 	beq	1cb84 <rtems_rfs_fs_open+0x30c>               <== NOT EXECUTED
      printf ("rtems-rfs: open: buffer open failed: %d: %s\n",        
   1cb6c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1cb70:	eb0012f9 	bl	2175c <strerror>                               <== NOT EXECUTED
   1cb74:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1cb78:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1cb7c:	e59f04a0 	ldr	r0, [pc, #1184]	; 1d024 <rtems_rfs_fs_open+0x7ac><== NOT EXECUTED
   1cb80:	eb000e47 	bl	204a4 <printf>                                 <== NOT EXECUTED
              rc, strerror (rc));                                     
    errno = rc;                                                       
   1cb84:	eb000a82 	bl	1f594 <__errno>                                <== NOT EXECUTED
    return -1;                                                        
   1cb88:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    free (*fs);                                                       
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: open: buffer open failed: %d: %s\n",        
              rc, strerror (rc));                                     
    errno = rc;                                                       
   1cb8c:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
    return -1;                                                        
   1cb90:	eaffff8d 	b	1c9cc <rtems_rfs_fs_open+0x154>                 <== NOT EXECUTED
  fs->blocks     = read_sb (RTEMS_RFS_SB_OFFSET_BLOCKS);              
  fs->block_size = read_sb (RTEMS_RFS_SB_OFFSET_BLOCK_SIZE);          
                                                                      
  if (rtems_rfs_fs_size(fs) > rtems_rfs_fs_media_size (fs))           
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cb94:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cb98:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cb9c:	ebffd723 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cba0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1cba4:	0affff9d 	beq	1ca20 <rtems_rfs_fs_open+0x1a8>               <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock block/size count\n");
   1cba8:	e59f0478 	ldr	r0, [pc, #1144]	; 1d028 <rtems_rfs_fs_open+0x7b0><== NOT EXECUTED
   1cbac:	eb000ed4 	bl	20704 <puts>                                   <== NOT EXECUTED
   1cbb0:	eaffff9a 	b	1ca20 <rtems_rfs_fs_open+0x1a8>                 <== NOT EXECUTED
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
    free (*fs);                                                       
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: open: reading superblock: %d: %s\n",        
   1cbb4:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1cbb8:	eb0012e7 	bl	2175c <strerror>                               <== NOT EXECUTED
   1cbbc:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   1cbc0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1cbc4:	e59f0460 	ldr	r0, [pc, #1120]	; 1d02c <rtems_rfs_fs_open+0x7b4><== NOT EXECUTED
   1cbc8:	eb000e35 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1cbcc:	eaffff7b 	b	1c9c0 <rtems_rfs_fs_open+0x148>                 <== NOT EXECUTED
              read_sb (RTEMS_RFS_SB_OFFSET_VERSION), RTEMS_RFS_VERSION_MASK);
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    return EIO;                                                       
  }                                                                   
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
   1cbd0:	e5d73011 	ldrb	r3, [r7, #17]                                
   1cbd4:	e5d7c010 	ldrb	ip, [r7, #16]                                
   1cbd8:	e5d70013 	ldrb	r0, [r7, #19]                                
   1cbdc:	e1a03803 	lsl	r3, r3, #16                                   
   1cbe0:	e5d72012 	ldrb	r2, [r7, #18]                                
   1cbe4:	e1833c0c 	orr	r3, r3, ip, lsl #24                           
   1cbe8:	e1833000 	orr	r3, r3, r0                                    
   1cbec:	e1833402 	orr	r3, r3, r2, lsl #8                            
   1cbf0:	e5863018 	str	r3, [r6, #24]                                 
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
   1cbf4:	e5d73015 	ldrb	r3, [r7, #21]                                
   1cbf8:	e5d7c014 	ldrb	ip, [r7, #20]                                
   1cbfc:	e5d70017 	ldrb	r0, [r7, #23]                                
   1cc00:	e1a03803 	lsl	r3, r3, #16                                   
   1cc04:	e5d72016 	ldrb	r2, [r7, #22]                                
   1cc08:	e1833c0c 	orr	r3, r3, ip, lsl #24                           
   1cc0c:	e1833000 	orr	r3, r3, r0                                    
   1cc10:	e1833402 	orr	r3, r3, r2, lsl #8                            
   1cc14:	e586301c 	str	r3, [r6, #28]                                 
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
   1cc18:	e5d73019 	ldrb	r3, [r7, #25]                                
   1cc1c:	e5d70018 	ldrb	r0, [r7, #24]                                
   1cc20:	e5d7201b 	ldrb	r2, [r7, #27]                                
   1cc24:	e1a03803 	lsl	r3, r3, #16                                   
   1cc28:	e5d7e01a 	ldrb	lr, [r7, #26]                                
   1cc2c:	e1833c00 	orr	r3, r3, r0, lsl #24                           
   1cc30:	e1833002 	orr	r3, r3, r2                                    
   1cc34:	e183e40e 	orr	lr, r3, lr, lsl #8                            
   1cc38:	e586e024 	str	lr, [r6, #36]	; 0x24                          
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
   1cc3c:	e5d7301d 	ldrb	r3, [r7, #29]                                
   1cc40:	e5d7c01c 	ldrb	ip, [r7, #28]                                
   1cc44:	e5d7201f 	ldrb	r2, [r7, #31]                                
   1cc48:	e1a03803 	lsl	r3, r3, #16                                   
   1cc4c:	e5d7001e 	ldrb	r0, [r7, #30]                                
   1cc50:	e1833c0c 	orr	r3, r3, ip, lsl #24                           
   1cc54:	e1833002 	orr	r3, r3, r2                                    
   1cc58:	e1830400 	orr	r0, r3, r0, lsl #8                            
   1cc5c:	e5860028 	str	r0, [r6, #40]	; 0x28                          
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
   1cc60:	e5d73021 	ldrb	r3, [r7, #33]	; 0x21                         
   1cc64:	e5d72020 	ldrb	r2, [r7, #32]                                
   1cc68:	e5d78023 	ldrb	r8, [r7, #35]	; 0x23                         
   1cc6c:	e1a03803 	lsl	r3, r3, #16                                   
   1cc70:	e5d7c022 	ldrb	ip, [r7, #34]	; 0x22                         
   1cc74:	e1832c02 	orr	r2, r3, r2, lsl #24                           
   1cc78:	e1822008 	orr	r2, r2, r8                                    
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
   1cc7c:	e1a03121 	lsr	r3, r1, #2                                    
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
   1cc80:	e59f73a8 	ldr	r7, [pc, #936]	; 1d030 <rtems_rfs_fs_open+0x7b8>
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
   1cc84:	e182240c 	orr	r2, r2, ip, lsl #8                            
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
   1cc88:	e1a081a1 	lsr	r8, r1, #3                                    
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
   1cc8c:	e00c0393 	mul	ip, r3, r3                                    
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
   1cc90:	e087a798 	umull	sl, r7, r8, r7                              
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
   1cc94:	e00e0e92 	mul	lr, r2, lr                                    
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
                                                                      
  if (fs->group_blocks >                                              
   1cc98:	e1500181 	cmp	r0, r1, lsl #3                                
                                                                      
  fs->blocks_per_block =                                              
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
   1cc9c:	e0838103 	add	r8, r3, r3, lsl #2                            
  fs->block_map_doubly_blocks =                                       
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
   1cca0:	e08cc10c 	add	ip, ip, ip, lsl #2                            
                                                                      
  fs->bad_blocks      = read_sb (RTEMS_RFS_SB_OFFSET_BAD_BLOCKS);     
  fs->max_name_length = read_sb (RTEMS_RFS_SB_OFFSET_MAX_NAME_LENGTH);
  fs->group_count     = read_sb (RTEMS_RFS_SB_OFFSET_GROUPS);         
  fs->group_blocks    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_BLOCKS);   
  fs->group_inodes    = read_sb (RTEMS_RFS_SB_OFFSET_GROUP_INODES);   
   1cca4:	e586202c 	str	r2, [r6, #44]	; 0x2c                          
                                                                      
  fs->blocks_per_block =                                              
   1cca8:	e5863034 	str	r3, [r6, #52]	; 0x34                          
    rtems_rfs_fs_block_size (fs) / sizeof (rtems_rfs_inode_block);    
                                                                      
  fs->block_map_singly_blocks =                                       
   1ccac:	e5868038 	str	r8, [r6, #56]	; 0x38                          
    fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;                    
  fs->block_map_doubly_blocks =                                       
   1ccb0:	e586c03c 	str	ip, [r6, #60]	; 0x3c                          
    fs->blocks_per_block * fs->blocks_per_block * RTEMS_RFS_INODE_BLOCKS;
                                                                      
  fs->inodes = fs->group_count * fs->group_inodes;                    
   1ccb4:	e586e014 	str	lr, [r6, #20]                                 
                                                                      
  fs->inodes_per_block = fs->block_size / RTEMS_RFS_INODE_SIZE;       
   1ccb8:	e5867030 	str	r7, [r6, #48]	; 0x30                          
   1ccbc:	e28d102c 	add	r1, sp, #44	; 0x2c                            
   1ccc0:	e1a00006 	mov	r0, r6                                        
                                                                      
  if (fs->group_blocks >                                              
   1ccc4:	9a00000d 	bls	1cd00 <rtems_rfs_fs_open+0x488>               
   1ccc8:	ebfff40c 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cccc:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1ccd0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
  handle->dirty = false;                                              
   1ccd4:	e5cd502c 	strb	r5, [sp, #44]	; 0x2c                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1ccd8:	e58d5030 	str	r5, [sp, #48]	; 0x30                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1ccdc:	e58d5034 	str	r5, [sp, #52]	; 0x34                          <== NOT EXECUTED
   1cce0:	ebffd6d2 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cce4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
    return EIO;                                                       
   1cce8:	03a08005 	moveq	r8, #5                                      <== NOT EXECUTED
                                                                      
  if (fs->group_blocks >                                              
      rtems_rfs_bitmap_numof_bits (rtems_rfs_fs_block_size (fs)))     
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1ccec:	0affff2a 	beq	1c99c <rtems_rfs_fs_open+0x124>               <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: groups blocks larger than block bits\n");
   1ccf0:	e59f033c 	ldr	r0, [pc, #828]	; 1d034 <rtems_rfs_fs_open+0x7bc><== NOT EXECUTED
   1ccf4:	eb000e82 	bl	20704 <puts>                                   <== NOT EXECUTED
    return EIO;                                                       
   1ccf8:	e3a08005 	mov	r8, #5                                        <== NOT EXECUTED
   1ccfc:	eaffff26 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1cd00:	ebfff3fe 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  rtems_rfs_buffer_handle_close (fs, &handle);                        
                                                                      
  /*                                                                  
   * Change the block size to the value in the superblock.            
   */                                                                 
  rc = rtems_rfs_buffer_setblksize (fs, rtems_rfs_fs_block_size (fs));
   1cd04:	e5961008 	ldr	r1, [r6, #8]                                  
   1cd08:	e1a00006 	mov	r0, r6                                        
  handle->dirty = false;                                              
   1cd0c:	e5cd502c 	strb	r5, [sp, #44]	; 0x2c                         
  handle->bnum  = 0;                                                  
   1cd10:	e58d5030 	str	r5, [sp, #48]	; 0x30                          
  handle->buffer = NULL;                                              
   1cd14:	e58d5034 	str	r5, [sp, #52]	; 0x34                          
   1cd18:	ebfff5c0 	bl	1a420 <rtems_rfs_buffer_setblksize>            
  if (rc > 0)                                                         
   1cd1c:	e2508000 	subs	r8, r0, #0                                   
   1cd20:	da00001c 	ble	1cd98 <rtems_rfs_fs_open+0x520>               
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1cd24:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1cd28:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1cd2c:	ebfff3f3 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cd30:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cd34:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
  handle->dirty = false;                                              
   1cd38:	e5cd502c 	strb	r5, [sp, #44]	; 0x2c                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1cd3c:	e58d5030 	str	r5, [sp, #48]	; 0x30                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1cd40:	e58d5034 	str	r5, [sp, #52]	; 0x34                          <== NOT EXECUTED
   1cd44:	ebffd6b9 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cd48:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1cd4c:	0affff12 	beq	1c99c <rtems_rfs_fs_open+0x124>               <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
   1cd50:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1cd54:	eb001280 	bl	2175c <strerror>                               <== NOT EXECUTED
   1cd58:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   1cd5c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1cd60:	e59f02d0 	ldr	r0, [pc, #720]	; 1d038 <rtems_rfs_fs_open+0x7c0><== NOT EXECUTED
   1cd64:	eb000dce 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1cd68:	eaffff0b 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
    printf ("rtems-rfs: open: %s\n", name);                           
                                                                      
  *fs = malloc (sizeof (rtems_rfs_file_system));                      
  if (!*fs)                                                           
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cd6c:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cd70:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cd74:	ebffd6ad 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cd78:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: open: no memory for file system data\n");   
   1cd7c:	159f02b8 	ldrne	r0, [pc, #696]	; 1d03c <rtems_rfs_fs_open+0x7c4><== NOT EXECUTED
   1cd80:	1b000e5f 	blne	20704 <puts>                                 <== NOT EXECUTED
    errno = ENOMEM;                                                   
   1cd84:	eb000a02 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1cd88:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   1cd8c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
    return -1;                                                        
   1cd90:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   1cd94:	eaffff0c 	b	1c9cc <rtems_rfs_fs_open+0x154>                 <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
   1cd98:	e5965024 	ldr	r5, [r6, #36]	; 0x24                          
   1cd9c:	e3a01050 	mov	r1, #80	; 0x50                                
   1cda0:	e1a00005 	mov	r0, r5                                        
   1cda4:	ebffa83e 	bl	6ea4 <calloc>                                  
                                                                      
  if (!fs->groups)                                                    
   1cda8:	e3500000 	cmp	r0, #0                                        
      printf ("rtems-rfs: read-superblock: invalid superblock block size%d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
   1cdac:	e1a08000 	mov	r8, r0                                        
   1cdb0:	e5860020 	str	r0, [r6, #32]                                 
                                                                      
  if (!fs->groups)                                                    
   1cdb4:	0a000085 	beq	1cfd0 <rtems_rfs_fs_open+0x758>               
  /*                                                                  
   * Perform each phase of group initialisation at the same time. This way we
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
   1cdb8:	e3550000 	cmp	r5, #0                                        
   1cdbc:	da000032 	ble	1ce8c <rtems_rfs_fs_open+0x614>               
   1cdc0:	e3a07000 	mov	r7, #0                                        
                                                                      
  if (!fs->groups)                                                    
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: read-superblock: no memory for group table\n");
   1cdc4:	e5962028 	ldr	r2, [r6, #40]	; 0x28                          
  /*                                                                  
   * Perform each phase of group initialisation at the same time. This way we
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
   1cdc8:	e1a05007 	mov	r5, r7                                        
   1cdcc:	ea000006 	b	1cdec <rtems_rfs_fs_open+0x574>                 
   1cdd0:	e5963024 	ldr	r3, [r6, #36]	; 0x24                          
   1cdd4:	e2855001 	add	r5, r5, #1                                    
   1cdd8:	e1550003 	cmp	r5, r3                                        
   1cddc:	e2877050 	add	r7, r7, #80	; 0x50                            
   1cde0:	aa000029 	bge	1ce8c <rtems_rfs_fs_open+0x614>               
   1cde4:	e5962028 	ldr	r2, [r6, #40]	; 0x28                          <== NOT EXECUTED
   1cde8:	e5968020 	ldr	r8, [r6, #32]                                 <== NOT EXECUTED
  {                                                                   
    rc = rtems_rfs_group_open (fs,                                    
                               rtems_rfs_fs_block (fs, group, 0),     
   1cdec:	e0010592 	mul	r1, r2, r5                                    
   * know how far the initialisation has gone if an error occurs and we need to
   * close everything.                                                
   */                                                                 
  for (group = 0; group < fs->group_count; group++)                   
  {                                                                   
    rc = rtems_rfs_group_open (fs,                                    
   1cdf0:	e088c007 	add	ip, r8, r7                                    
   1cdf4:	e596302c 	ldr	r3, [r6, #44]	; 0x2c                          
   1cdf8:	e1a00006 	mov	r0, r6                                        
   1cdfc:	e2811001 	add	r1, r1, #1                                    
   1ce00:	e58dc000 	str	ip, [sp]                                      
   1ce04:	ebffce25 	bl	106a0 <rtems_rfs_group_open>                   
                               rtems_rfs_fs_block (fs, group, 0),     
                               fs->group_blocks,                      
                               fs->group_inodes,                      
                               &fs->groups[group]);                   
    if (rc > 0)                                                       
   1ce08:	e2508000 	subs	r8, r0, #0                                   
   1ce0c:	daffffef 	ble	1cdd0 <rtems_rfs_fs_open+0x558>               
    {                                                                 
      int g;                                                          
      for (g = 0; g < group; g++)                                     
   1ce10:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   1ce14:	0a000009 	beq	1ce40 <rtems_rfs_fs_open+0x5c8>               <== NOT EXECUTED
   1ce18:	e3a07000 	mov	r7, #0                                        <== NOT EXECUTED
   1ce1c:	e1a0a007 	mov	sl, r7                                        <== NOT EXECUTED
        rtems_rfs_group_close (fs, &fs->groups[g]);                   
   1ce20:	e5961020 	ldr	r1, [r6, #32]                                 <== NOT EXECUTED
   1ce24:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1ce28:	e0811007 	add	r1, r1, r7                                    <== NOT EXECUTED
                               fs->group_inodes,                      
                               &fs->groups[group]);                   
    if (rc > 0)                                                       
    {                                                                 
      int g;                                                          
      for (g = 0; g < group; g++)                                     
   1ce2c:	e28aa001 	add	sl, sl, #1                                    <== NOT EXECUTED
        rtems_rfs_group_close (fs, &fs->groups[g]);                   
   1ce30:	ebffce9d 	bl	108ac <rtems_rfs_group_close>                  <== NOT EXECUTED
                               fs->group_inodes,                      
                               &fs->groups[group]);                   
    if (rc > 0)                                                       
    {                                                                 
      int g;                                                          
      for (g = 0; g < group; g++)                                     
   1ce34:	e15a0005 	cmp	sl, r5                                        <== NOT EXECUTED
   1ce38:	e2877050 	add	r7, r7, #80	; 0x50                            <== NOT EXECUTED
   1ce3c:	1afffff7 	bne	1ce20 <rtems_rfs_fs_open+0x5a8>               <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1ce40:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1ce44:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1ce48:	ebfff3ac 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   1ce4c:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
        rtems_rfs_group_close (fs, &fs->groups[g]);                   
      rtems_rfs_buffer_handle_close (fs, &handle);                    
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                     
   1ce50:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1ce54:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ce58:	e5cd302c 	strb	r3, [sp, #44]	; 0x2c                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1ce5c:	e58d3030 	str	r3, [sp, #48]	; 0x30                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1ce60:	e58d3034 	str	r3, [sp, #52]	; 0x34                          <== NOT EXECUTED
   1ce64:	ebffd671 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1ce68:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1ce6c:	0afffeca 	beq	1c99c <rtems_rfs_fs_open+0x124>               <== NOT EXECUTED
        printf ("rtems-rfs: read-superblock: no memory for group table%d: %s\n",
   1ce70:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1ce74:	eb001238 	bl	2175c <strerror>                               <== NOT EXECUTED
   1ce78:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   1ce7c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1ce80:	e59f01b8 	ldr	r0, [pc, #440]	; 1d040 <rtems_rfs_fs_open+0x7c8><== NOT EXECUTED
   1ce84:	eb000d86 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1ce88:	eafffec3 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
              rc, strerror (rc));                                     
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);  
   1ce8c:	e3a01001 	mov	r1, #1                                        
   1ce90:	e5940000 	ldr	r0, [r4]                                      
   1ce94:	e28d2004 	add	r2, sp, #4                                    
   1ce98:	e1a03001 	mov	r3, r1                                        
   1ce9c:	ebffd009 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   1cea0:	e2505000 	subs	r5, r0, #0                                   
   1cea4:	ca000039 	bgt	1cf90 <rtems_rfs_fs_open+0x718>               
              rc, strerror (rc));                                     
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  if (((*fs)->flags & RTEMS_RFS_FS_FORCE_OPEN) == 0)                  
   1cea8:	e5940000 	ldr	r0, [r4]                                      
   1ceac:	e5903000 	ldr	r3, [r0]                                      
   1ceb0:	e3130004 	tst	r3, #4                                        
   1ceb4:	1a000009 	bne	1cee0 <rtems_rfs_fs_open+0x668>               
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   1ceb8:	e59d3010 	ldr	r3, [sp, #16]                                 
   1cebc:	e5d32002 	ldrb	r2, [r3, #2]                                 
   1cec0:	e5d33003 	ldrb	r3, [r3, #3]                                 
   1cec4:	e1833402 	orr	r3, r3, r2, lsl #8                            
  {                                                                   
    mode = rtems_rfs_inode_get_mode (&inode);                         
                                                                      
    if ((mode == 0xffff) || !RTEMS_RFS_S_ISDIR (mode))                
   1cec8:	e59f2174 	ldr	r2, [pc, #372]	; 1d044 <rtems_rfs_fs_open+0x7cc>
   1cecc:	e1530002 	cmp	r3, r2                                        
   1ced0:	0a00001d 	beq	1cf4c <rtems_rfs_fs_open+0x6d4>               
   1ced4:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
   1ced8:	e3530901 	cmp	r3, #16384	; 0x4000                           
   1cedc:	1a00001a 	bne	1cf4c <rtems_rfs_fs_open+0x6d4>               
      errno = EIO;                                                    
      return -1;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (*fs, &inode);                           
   1cee0:	e28d1004 	add	r1, sp, #4                                    
   1cee4:	ebffd071 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   1cee8:	e2505000 	subs	r5, r0, #0                                   
   1ceec:	ca000003 	bgt	1cf00 <rtems_rfs_fs_open+0x688>               
      printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
    errno = rc;                                                       
    return -1;                                                        
  }                                                                   
                                                                      
  errno = 0;                                                          
   1cef0:	eb0009a7 	bl	1f594 <__errno>                                
   1cef4:	e3a03000 	mov	r3, #0                                        
   1cef8:	e5803000 	str	r3, [r0]                                      
  return 0;                                                           
   1cefc:	eafffeb2 	b	1c9cc <rtems_rfs_fs_open+0x154>                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (*fs, &inode);                           
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
   1cf00:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cf04:	ebfff583 	bl	1a518 <rtems_rfs_buffer_close>                 <== NOT EXECUTED
    free (*fs);                                                       
   1cf08:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cf0c:	ebffa8c9 	bl	7238 <free>                                    <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cf10:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cf14:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cf18:	ebffd644 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cf1c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1cf20:	0a000005 	beq	1cf3c <rtems_rfs_fs_open+0x6c4>               <== NOT EXECUTED
      printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
   1cf24:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1cf28:	eb00120b 	bl	2175c <strerror>                               <== NOT EXECUTED
   1cf2c:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1cf30:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1cf34:	e59f010c 	ldr	r0, [pc, #268]	; 1d048 <rtems_rfs_fs_open+0x7d0><== NOT EXECUTED
   1cf38:	eb000d59 	bl	204a4 <printf>                                 <== NOT EXECUTED
    errno = rc;                                                       
   1cf3c:	eb000994 	bl	1f594 <__errno>                                <== NOT EXECUTED
    return -1;                                                        
   1cf40:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
    free (*fs);                                                       
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
      printf ("rtems-rfs: open: closing root inode: %d: %s\n", rc, strerror (rc));
    errno = rc;                                                       
   1cf44:	e5805000 	str	r5, [r0]                                      <== NOT EXECUTED
    return -1;                                                        
   1cf48:	eafffe9f 	b	1c9cc <rtems_rfs_fs_open+0x154>                 <== NOT EXECUTED
  {                                                                   
    mode = rtems_rfs_inode_get_mode (&inode);                         
                                                                      
    if ((mode == 0xffff) || !RTEMS_RFS_S_ISDIR (mode))                
    {                                                                 
      rtems_rfs_inode_close (*fs, &inode);                            
   1cf4c:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
   1cf50:	ebffd056 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
      rtems_rfs_buffer_close (*fs);                                   
   1cf54:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cf58:	ebfff56e 	bl	1a518 <rtems_rfs_buffer_close>                 <== NOT EXECUTED
      free (*fs);                                                     
   1cf5c:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cf60:	ebffa8b4 	bl	7238 <free>                                    <== NOT EXECUTED
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                     
   1cf64:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cf68:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cf6c:	ebffd62f 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cf70:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
        printf ("rtems-rfs: open: invalid root inode mode\n");        
   1cf74:	159f00d0 	ldrne	r0, [pc, #208]	; 1d04c <rtems_rfs_fs_open+0x7d4><== NOT EXECUTED
   1cf78:	1b000de1 	blne	20704 <puts>                                 <== NOT EXECUTED
      errno = EIO;                                                    
   1cf7c:	eb000984 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1cf80:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   1cf84:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
      return -1;                                                      
   1cf88:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   1cf8c:	eafffe8e 	b	1c9cc <rtems_rfs_fs_open+0x154>                 <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (*fs, RTEMS_RFS_ROOT_INO, &inode, true);  
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_close (*fs);                                     
   1cf90:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cf94:	ebfff55f 	bl	1a518 <rtems_rfs_buffer_close>                 <== NOT EXECUTED
    free (*fs);                                                       
   1cf98:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1cf9c:	ebffa8a5 	bl	7238 <free>                                    <== NOT EXECUTED
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cfa0:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cfa4:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1cfa8:	ebffd620 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cfac:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1cfb0:	0affffe1 	beq	1cf3c <rtems_rfs_fs_open+0x6c4>               <== NOT EXECUTED
      printf ("rtems-rfs: open: reading root inode: %d: %s\n",        
   1cfb4:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1cfb8:	eb0011e7 	bl	2175c <strerror>                               <== NOT EXECUTED
   1cfbc:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1cfc0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1cfc4:	e59f0084 	ldr	r0, [pc, #132]	; 1d050 <rtems_rfs_fs_open+0x7d8><== NOT EXECUTED
   1cfc8:	eb000d35 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1cfcc:	eaffffda 	b	1cf3c <rtems_rfs_fs_open+0x6c4>                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1cfd0:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1cfd4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1cfd8:	ebfff348 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
                                                                      
  if (!fs->groups)                                                    
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cfdc:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1cfe0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
  handle->dirty = false;                                              
   1cfe4:	e5cd802c 	strb	r8, [sp, #44]	; 0x2c                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1cfe8:	e58d8030 	str	r8, [sp, #48]	; 0x30                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1cfec:	e58d8034 	str	r8, [sp, #52]	; 0x34                          <== NOT EXECUTED
   1cff0:	ebffd60e 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1cff4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: no memory for group table\n");
    return ENOMEM;                                                    
   1cff8:	03a0800c 	moveq	r8, #12                                     <== NOT EXECUTED
  fs->groups = calloc (fs->group_count, sizeof (rtems_rfs_group));    
                                                                      
  if (!fs->groups)                                                    
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &handle);                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_OPEN))                       
   1cffc:	0afffe66 	beq	1c99c <rtems_rfs_fs_open+0x124>               <== NOT EXECUTED
      printf ("rtems-rfs: read-superblock: no memory for group table\n");
   1d000:	e59f004c 	ldr	r0, [pc, #76]	; 1d054 <rtems_rfs_fs_open+0x7dc><== NOT EXECUTED
   1d004:	eb000dbe 	bl	20704 <puts>                                   <== NOT EXECUTED
    return ENOMEM;                                                    
   1d008:	e3a0800c 	mov	r8, #12                                       <== NOT EXECUTED
   1d00c:	eafffe62 	b	1c99c <rtems_rfs_fs_open+0x124>                 <== NOT EXECUTED
                                                                      

0001c854 <rtems_rfs_fs_size>: #include <rtems/rfs/rtems-rfs-trace.h> uint64_t rtems_rfs_fs_size (rtems_rfs_file_system* fs) { uint64_t blocks = rtems_rfs_fs_blocks (fs);
   1c854:	e5903004 	ldr	r3, [r0, #4]                                  <== NOT EXECUTED
  uint64_t block_size = rtems_rfs_fs_block_size (fs);                 
   1c858:	e5902008 	ldr	r2, [r0, #8]                                  <== NOT EXECUTED
  return blocks * block_size;                                         
   1c85c:	e0810392 	umull	r0, r1, r2, r3                              <== NOT EXECUTED
}                                                                     
   1c860:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

0001093c <rtems_rfs_group_bitmap_alloc>: int rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs, rtems_rfs_bitmap_bit goal, bool inode, rtems_rfs_bitmap_bit* result) {
   1093c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_rfs_bitmap_bit bit;                                           
  int                  offset;                                        
  bool                 updown;                                        
  int                  direction;                                     
                                                                      
  if (inode)                                                          
   10940:	e21220ff 	ands	r2, r2, #255	; 0xff                          
int                                                                   
rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs,              
                              rtems_rfs_bitmap_bit   goal,            
                              bool                   inode,           
                              rtems_rfs_bitmap_bit*  result)          
{                                                                     
   10944:	e24dd018 	sub	sp, sp, #24                                   
   10948:	e58d300c 	str	r3, [sp, #12]                                 
  rtems_rfs_bitmap_bit bit;                                           
  int                  offset;                                        
  bool                 updown;                                        
  int                  direction;                                     
                                                                      
  if (inode)                                                          
   1094c:	e58d2008 	str	r2, [sp, #8]                                  
  {                                                                   
    size = fs->group_inodes;                                          
    goal -= RTEMS_RFS_ROOT_INO;                                       
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
   10950:	05903028 	ldreq	r3, [r0, #40]	; 0x28                        
  bool                 updown;                                        
  int                  direction;                                     
                                                                      
  if (inode)                                                          
  {                                                                   
    size = fs->group_inodes;                                          
   10954:	1590202c 	ldrne	r2, [r0, #44]	; 0x2c                        
    goal -= RTEMS_RFS_ROOT_INO;                                       
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
   10958:	058d3000 	streq	r3, [sp]                                    
  bool                 updown;                                        
  int                  direction;                                     
                                                                      
  if (inode)                                                          
  {                                                                   
    size = fs->group_inodes;                                          
   1095c:	158d2000 	strne	r2, [sp]                                    
int                                                                   
rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs,              
                              rtems_rfs_bitmap_bit   goal,            
                              bool                   inode,           
                              rtems_rfs_bitmap_bit*  result)          
{                                                                     
   10960:	e1a04001 	mov	r4, r1                                        
  int                  direction;                                     
                                                                      
  if (inode)                                                          
  {                                                                   
    size = fs->group_inodes;                                          
    goal -= RTEMS_RFS_ROOT_INO;                                       
   10964:	12414001 	subne	r4, r1, #1                                  
int                                                                   
rtems_rfs_group_bitmap_alloc (rtems_rfs_file_system* fs,              
                              rtems_rfs_bitmap_bit   goal,            
                              bool                   inode,           
                              rtems_rfs_bitmap_bit*  result)          
{                                                                     
   10968:	e1a07000 	mov	r7, r0                                        
    goal -= RTEMS_RFS_ROOT_INO;                                       
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
   1096c:	e59d1000 	ldr	r1, [sp]                                      
   10970:	e1a00004 	mov	r0, r4                                        
   10974:	ebffc44b 	bl	1aa8 <__aeabi_uidiv>                           
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
   10978:	e59d1000 	ldr	r1, [sp]                                      
    goal -= RTEMS_RFS_ROOT_INO;                                       
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
   1097c:	e1a0a000 	mov	sl, r0                                        
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
   10980:	e1a00004 	mov	r0, r4                                        
   10984:	eb00719b 	bl	2cff8 <__umodsi3>                              
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
   10988:	e28d9018 	add	r9, sp, #24                                   
   1098c:	e3a03000 	mov	r3, #0                                        
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
  offset = 0;                                                         
  updown = true;                                                      
  direction = 1;                                                      
   10990:	e3a05001 	mov	r5, #1                                        
  }                                                                   
  else                                                                
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
   10994:	e58d0010 	str	r0, [sp, #16]                                 
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
   10998:	e5693001 	strb	r3, [r9, #-1]!                               
  else                                                                
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
  offset = 0;                                                         
   1099c:	e1a06003 	mov	r6, r3                                        
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
   109a0:	e1a0400a 	mov	r4, sl                                        
    size = fs->group_blocks;                                          
                                                                      
  group_start = goal / size;                                          
  bit = (rtems_rfs_bitmap_bit) (goal % size);                         
  offset = 0;                                                         
  updown = true;                                                      
   109a4:	e1a08005 	mov	r8, r5                                        
    /*                                                                
     * If we are still looking up and down and if the group is out of range we
     * have reached one end. Stopping looking up and down and just move in the
     * one direction one group at a time.                             
     */                                                               
    if ((group < 0) || (group >= fs->group_count))                    
   109a8:	e3540000 	cmp	r4, #0                                        
   109ac:	ba000027 	blt	10a50 <rtems_rfs_group_bitmap_alloc+0x114>    
   109b0:	e5973024 	ldr	r3, [r7, #36]	; 0x24                          
   109b4:	e1530004 	cmp	r3, r4                                        
   109b8:	da000024 	ble	10a50 <rtems_rfs_group_bitmap_alloc+0x114>    
      direction = direction > 0 ? -1 : 1;                             
      updown = false;                                                 
      continue;                                                       
    }                                                                 
                                                                      
   if (inode)                                                         
   109bc:	e59d2008 	ldr	r2, [sp, #8]                                  
      bitmap = &fs->groups[group].inode_bitmap;                       
   109c0:	e1a03104 	lsl	r3, r4, #2                                    
   109c4:	e58d3004 	str	r3, [sp, #4]                                  
      direction = direction > 0 ? -1 : 1;                             
      updown = false;                                                 
      continue;                                                       
    }                                                                 
                                                                      
   if (inode)                                                         
   109c8:	e3520000 	cmp	r2, #0                                        
      bitmap = &fs->groups[group].inode_bitmap;                       
   109cc:	e59d2004 	ldr	r2, [sp, #4]                                  
   109d0:	e5973020 	ldr	r3, [r7, #32]                                 
   109d4:	e082b004 	add	fp, r2, r4                                    
   109d8:	e083b20b 	add	fp, r3, fp, lsl #4                            
   109dc:	128bb02c 	addne	fp, fp, #44	; 0x2c                          
    else                                                              
      bitmap = &fs->groups[group].block_bitmap;                       
   109e0:	028bb008 	addeq	fp, fp, #8                                  
                                                                      
    rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);  
   109e4:	e1a0000b 	mov	r0, fp                                        
   109e8:	e59d1010 	ldr	r1, [sp, #16]                                 
   109ec:	e1a02009 	mov	r2, r9                                        
   109f0:	e28d3010 	add	r3, sp, #16                                   
   109f4:	eb001fe7 	bl	18998 <rtems_rfs_bitmap_map_alloc>             
    if (rc > 0)                                                       
   109f8:	e3500000 	cmp	r0, #0                                        
   109fc:	ca00003a 	bgt	10aec <rtems_rfs_group_bitmap_alloc+0x1b0>    
      return rc;                                                      
                                                                      
    if (rtems_rfs_fs_release_bitmaps (fs))                            
   10a00:	e5973000 	ldr	r3, [r7]                                      
   10a04:	e3130001 	tst	r3, #1                                        
   10a08:	0a000043 	beq	10b1c <rtems_rfs_group_bitmap_alloc+0x1e0>    
      rtems_rfs_bitmap_release_buffer (fs, bitmap);                   
                                                                      
    if (allocated)                                                    
   10a0c:	e5dd3017 	ldrb	r3, [sp, #23]                                
   10a10:	e3530000 	cmp	r3, #0                                        
   10a14:	1a00001a 	bne	10a84 <rtems_rfs_group_bitmap_alloc+0x148>    
        printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
                inode ? "inode" : "block", *result);                  
      return 0;                                                       
    }                                                                 
                                                                      
    if (updown)                                                       
   10a18:	e3580000 	cmp	r8, #0                                        
   10a1c:	0a000002 	beq	10a2c <rtems_rfs_group_bitmap_alloc+0xf0>     
      direction = direction > 0 ? -1 : 1;                             
   10a20:	e3550001 	cmp	r5, #1                                        
   10a24:	13a05001 	movne	r5, #1                                      
   10a28:	03e05000 	mvneq	r5, #0                                      
                                                                      
    offset++;                                                         
   10a2c:	e2866001 	add	r6, r6, #1                                    
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
   10a30:	e024a596 	mla	r4, r6, r5, sl                                
    if (offset)                                                       
      bit = direction > 0 ? 0 : size - 1;                             
   10a34:	e3550001 	cmp	r5, #1                                        
   10a38:	159d2000 	ldrne	r2, [sp]                                    
   10a3c:	03a03000 	moveq	r3, #0                                      
   10a40:	12423001 	subne	r3, r2, #1                                  
    /*                                                                
     * If we are still looking up and down and if the group is out of range we
     * have reached one end. Stopping looking up and down and just move in the
     * one direction one group at a time.                             
     */                                                               
    if ((group < 0) || (group >= fs->group_count))                    
   10a44:	e3540000 	cmp	r4, #0                                        
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
    if (offset)                                                       
      bit = direction > 0 ? 0 : size - 1;                             
   10a48:	e58d3010 	str	r3, [sp, #16]                                 
    /*                                                                
     * If we are still looking up and down and if the group is out of range we
     * have reached one end. Stopping looking up and down and just move in the
     * one direction one group at a time.                             
     */                                                               
    if ((group < 0) || (group >= fs->group_count))                    
   10a4c:	aaffffd7 	bge	109b0 <rtems_rfs_group_bitmap_alloc+0x74>     
    {                                                                 
      if (!updown)                                                    
   10a50:	e3580000 	cmp	r8, #0                                        
   10a54:	0a000026 	beq	10af4 <rtems_rfs_group_bitmap_alloc+0x1b8>    
        break;                                                        
      direction = direction > 0 ? -1 : 1;                             
   10a58:	e3550001 	cmp	r5, #1                                        
   10a5c:	03e05000 	mvneq	r5, #0                                      
   10a60:	13a05001 	movne	r5, #1                                      
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
   10a64:	e3a03000 	mov	r3, #0                                        
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
    if (offset)                                                       
   10a68:	e3560000 	cmp	r6, #0                                        
   */                                                                 
  while (true)                                                        
  {                                                                   
    rtems_rfs_bitmap_control* bitmap;                                 
    int                       group;                                  
    bool                      allocated = false;                      
   10a6c:	e5cd3017 	strb	r3, [sp, #23]                                
                                                                      
    /*                                                                
     * We can start at any location and we move out from that point in each
     * direction. The offset grows until we find a free bit or we hit an end.
     */                                                               
    group = group_start + (direction * offset);                       
   10a70:	e024a596 	mla	r4, r6, r5, sl                                
    if (offset)                                                       
   10a74:	01a08006 	moveq	r8, r6                                      
   10a78:	0affffca 	beq	109a8 <rtems_rfs_group_bitmap_alloc+0x6c>     
   10a7c:	e3a08000 	mov	r8, #0                                        
   10a80:	eaffffeb 	b	10a34 <rtems_rfs_group_bitmap_alloc+0xf8>       
    if (rtems_rfs_fs_release_bitmaps (fs))                            
      rtems_rfs_bitmap_release_buffer (fs, bitmap);                   
                                                                      
    if (allocated)                                                    
    {                                                                 
      if (inode)                                                      
   10a84:	e59d3008 	ldr	r3, [sp, #8]                                  
   10a88:	e3530000 	cmp	r3, #0                                        
   10a8c:	1a000026 	bne	10b2c <rtems_rfs_group_bitmap_alloc+0x1f0>    
        *result = rtems_rfs_group_inode (fs, group, bit);             
      else                                                            
        *result = rtems_rfs_group_block (&fs->groups[group], bit);    
   10a90:	e59d2004 	ldr	r2, [sp, #4]                                  
   10a94:	e5973020 	ldr	r3, [r7, #32]                                 
   10a98:	e0824004 	add	r4, r2, r4                                    
   10a9c:	e7933204 	ldr	r3, [r3, r4, lsl #4]                          
   10aa0:	e59d2010 	ldr	r2, [sp, #16]                                 
   10aa4:	e0823003 	add	r3, r2, r3                                    
   10aa8:	e59d200c 	ldr	r2, [sp, #12]                                 
   10aac:	e5823000 	str	r3, [r2]                                      
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))            
   10ab0:	e3a00802 	mov	r0, #131072	; 0x20000                         
   10ab4:	e3a01000 	mov	r1, #0                                        
   10ab8:	eb00075c 	bl	12830 <rtems_rfs_trace>                        
   10abc:	e3500000 	cmp	r0, #0                                        
   10ac0:	0a000009 	beq	10aec <rtems_rfs_group_bitmap_alloc+0x1b0>    
        printf ("rtems-rfs: group-bitmap-alloc: %s allocated: %" PRId32 "\n",
   10ac4:	e59d2008 	ldr	r2, [sp, #8]                                  <== NOT EXECUTED
   10ac8:	e59f3078 	ldr	r3, [pc, #120]	; 10b48 <rtems_rfs_group_bitmap_alloc+0x20c><== NOT EXECUTED
   10acc:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
   10ad0:	e59f1074 	ldr	r1, [pc, #116]	; 10b4c <rtems_rfs_group_bitmap_alloc+0x210><== NOT EXECUTED
   10ad4:	11a01003 	movne	r1, r3                                      <== NOT EXECUTED
   10ad8:	e59d300c 	ldr	r3, [sp, #12]                                 <== NOT EXECUTED
   10adc:	e59f006c 	ldr	r0, [pc, #108]	; 10b50 <rtems_rfs_group_bitmap_alloc+0x214><== NOT EXECUTED
   10ae0:	e5932000 	ldr	r2, [r3]                                      <== NOT EXECUTED
   10ae4:	eb003e6e 	bl	204a4 <printf>                                 <== NOT EXECUTED
                inode ? "inode" : "block", *result);                  
      return 0;                                                       
   10ae8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
    printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");  
                                                                      
  return ENOSPC;                                                      
}                                                                     
   10aec:	e28dd018 	add	sp, sp, #24                                   
   10af0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
      direction = direction > 0 ? -1 : 1;                             
                                                                      
    offset++;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10af4:	e3a00802 	mov	r0, #131072	; 0x20000                         
   10af8:	e3a01000 	mov	r1, #0                                        
   10afc:	eb00074b 	bl	12830 <rtems_rfs_trace>                        
   10b00:	e3500000 	cmp	r0, #0                                        
    printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");  
                                                                      
  return ENOSPC;                                                      
   10b04:	03a0001c 	moveq	r0, #28                                     
      direction = direction > 0 ? -1 : 1;                             
                                                                      
    offset++;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10b08:	0afffff7 	beq	10aec <rtems_rfs_group_bitmap_alloc+0x1b0>    
    printf ("rtems-rfs: group-bitmap-alloc: no blocks available\n");  
   10b0c:	e59f0040 	ldr	r0, [pc, #64]	; 10b54 <rtems_rfs_group_bitmap_alloc+0x218><== NOT EXECUTED
   10b10:	eb003efb 	bl	20704 <puts>                                   <== NOT EXECUTED
                                                                      
  return ENOSPC;                                                      
   10b14:	e3a0001c 	mov	r0, #28                                       <== NOT EXECUTED
   10b18:	eafffff3 	b	10aec <rtems_rfs_group_bitmap_alloc+0x1b0>      <== NOT EXECUTED
    rc = rtems_rfs_bitmap_map_alloc (bitmap, bit, &allocated, &bit);  
    if (rc > 0)                                                       
      return rc;                                                      
                                                                      
    if (rtems_rfs_fs_release_bitmaps (fs))                            
      rtems_rfs_bitmap_release_buffer (fs, bitmap);                   
   10b1c:	e1a00007 	mov	r0, r7                                        
   10b20:	e59b1000 	ldr	r1, [fp]                                      
   10b24:	eb002475 	bl	19d00 <rtems_rfs_buffer_handle_release>        
   10b28:	eaffffb7 	b	10a0c <rtems_rfs_group_bitmap_alloc+0xd0>       
                                                                      
    if (allocated)                                                    
    {                                                                 
      if (inode)                                                      
        *result = rtems_rfs_group_inode (fs, group, bit);             
   10b2c:	e59d3010 	ldr	r3, [sp, #16]                                 
   10b30:	e597202c 	ldr	r2, [r7, #44]	; 0x2c                          
   10b34:	e2833001 	add	r3, r3, #1                                    
   10b38:	e0243492 	mla	r4, r2, r4, r3                                
   10b3c:	e59d200c 	ldr	r2, [sp, #12]                                 
   10b40:	e5824000 	str	r4, [r2]                                      
   10b44:	eaffffd9 	b	10ab0 <rtems_rfs_group_bitmap_alloc+0x174>      
                                                                      

00010b58 <rtems_rfs_group_bitmap_free>: int rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs, bool inode, rtems_rfs_bitmap_bit no) {
   10b58:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
   10b5c:	e1a06001 	mov	r6, r1                                        
   10b60:	e1a04000 	mov	r4, r0                                        
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10b64:	e3a01000 	mov	r1, #0                                        
   10b68:	e3a00802 	mov	r0, #131072	; 0x20000                         
                                                                      
int                                                                   
rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,               
                             bool                   inode,            
                             rtems_rfs_bitmap_bit   no)               
{                                                                     
   10b6c:	e1a05002 	mov	r5, r2                                        
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10b70:	eb00072e 	bl	12830 <rtems_rfs_trace>                        
   10b74:	e3500000 	cmp	r0, #0                                        
                                                                      
int                                                                   
rtems_rfs_group_bitmap_free (rtems_rfs_file_system* fs,               
                             bool                   inode,            
                             rtems_rfs_bitmap_bit   no)               
{                                                                     
   10b78:	e20660ff 	and	r6, r6, #255	; 0xff                           
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10b7c:	0a000006 	beq	10b9c <rtems_rfs_group_bitmap_free+0x44>      
    printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",   
   10b80:	e59f30ac 	ldr	r3, [pc, #172]	; 10c34 <rtems_rfs_group_bitmap_free+0xdc><== NOT EXECUTED
   10b84:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
   10b88:	e59f10a8 	ldr	r1, [pc, #168]	; 10c38 <rtems_rfs_group_bitmap_free+0xe0><== NOT EXECUTED
   10b8c:	e59f00a8 	ldr	r0, [pc, #168]	; 10c3c <rtems_rfs_group_bitmap_free+0xe4><== NOT EXECUTED
   10b90:	11a01003 	movne	r1, r3                                      <== NOT EXECUTED
   10b94:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   10b98:	eb003e41 	bl	204a4 <printf>                                 <== NOT EXECUTED
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
   10b9c:	e3560000 	cmp	r6, #0                                        
   10ba0:	0a000015 	beq	10bfc <rtems_rfs_group_bitmap_free+0xa4>      
  {                                                                   
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
   10ba4:	e594702c 	ldr	r7, [r4, #44]	; 0x2c                          
    printf ("rtems-rfs: group-bitmap-free: %s free: %" PRId32 "\n",   
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
  {                                                                   
    no -= RTEMS_RFS_ROOT_INO;                                         
   10ba8:	e2455001 	sub	r5, r5, #1                                    
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10bac:	e1a00005 	mov	r0, r5                                        
   10bb0:	e1a01007 	mov	r1, r7                                        
   10bb4:	eb00710f 	bl	2cff8 <__umodsi3>                              
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10bb8:	e1a01007 	mov	r1, r7                                        
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10bbc:	e1a06000 	mov	r6, r0                                        
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10bc0:	e1a00005 	mov	r0, r5                                        
   10bc4:	ebffc3b7 	bl	1aa8 <__aeabi_uidiv>                           
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
   10bc8:	e5943020 	ldr	r3, [r4, #32]                                 
   10bcc:	e0800100 	add	r0, r0, r0, lsl #2                            
   10bd0:	e0835200 	add	r5, r3, r0, lsl #4                            
   10bd4:	e285502c 	add	r5, r5, #44	; 0x2c                            
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_clear (bitmap, bit);                      
   10bd8:	e1a01006 	mov	r1, r6                                        
   10bdc:	e1a00005 	mov	r0, r5                                        
   10be0:	eb001edd 	bl	1875c <rtems_rfs_bitmap_map_clear>             
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
   10be4:	e5951000 	ldr	r1, [r5]                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_clear (bitmap, bit);                      
   10be8:	e1a06000 	mov	r6, r0                                        
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
   10bec:	e1a00004 	mov	r0, r4                                        
   10bf0:	eb002442 	bl	19d00 <rtems_rfs_buffer_handle_release>        
                                                                      
  return rc;                                                          
}                                                                     
   10bf4:	e1a00006 	mov	r0, r6                                        
   10bf8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
   10bfc:	e5947028 	ldr	r7, [r4, #40]	; 0x28                          
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
   10c00:	e2455001 	sub	r5, r5, #1                                    
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10c04:	e1a00005 	mov	r0, r5                                        
   10c08:	e1a01007 	mov	r1, r7                                        
   10c0c:	eb0070f9 	bl	2cff8 <__umodsi3>                              
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10c10:	e1a01007 	mov	r1, r7                                        
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10c14:	e1a06000 	mov	r6, r0                                        
  {                                                                   
    no -= RTEMS_RFS_SUPERBLOCK_SIZE;                                  
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10c18:	e1a00005 	mov	r0, r5                                        
   10c1c:	ebffc3a1 	bl	1aa8 <__aeabi_uidiv>                           
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
   10c20:	e5943020 	ldr	r3, [r4, #32]                                 
   10c24:	e0800100 	add	r0, r0, r0, lsl #2                            
   10c28:	e0835200 	add	r5, r3, r0, lsl #4                            
   10c2c:	e2855008 	add	r5, r5, #8                                    
   10c30:	eaffffe8 	b	10bd8 <rtems_rfs_group_bitmap_free+0x80>        
                                                                      

00010c40 <rtems_rfs_group_bitmap_test>: int rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs, bool inode, rtems_rfs_bitmap_bit no, bool* state) {
   10c40:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     <== NOT EXECUTED
   10c44:	e1a06001 	mov	r6, r1                                        <== NOT EXECUTED
   10c48:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10c4c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   10c50:	e3a00802 	mov	r0, #131072	; 0x20000                         <== NOT EXECUTED
int                                                                   
rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,               
                             bool                   inode,            
                             rtems_rfs_bitmap_bit   no,               
                             bool*                  state)            
{                                                                     
   10c54:	e1a04002 	mov	r4, r2                                        <== NOT EXECUTED
   10c58:	e1a07003 	mov	r7, r3                                        <== NOT EXECUTED
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10c5c:	eb0006f3 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   10c60:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
int                                                                   
rtems_rfs_group_bitmap_test (rtems_rfs_file_system* fs,               
                             bool                   inode,            
                             rtems_rfs_bitmap_bit   no,               
                             bool*                  state)            
{                                                                     
   10c64:	e20660ff 	and	r6, r6, #255	; 0xff                           <== NOT EXECUTED
  unsigned int              group;                                    
  rtems_rfs_bitmap_bit      bit;                                      
  size_t                    size;                                     
  int                       rc;                                       
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_BITMAPS))                
   10c68:	0a000006 	beq	10c88 <rtems_rfs_group_bitmap_test+0x48>      <== NOT EXECUTED
    printf ("rtems-rfs: group-bitmap-test: %s test: %" PRId32 "\n",   
   10c6c:	e59f30d8 	ldr	r3, [pc, #216]	; 10d4c <rtems_rfs_group_bitmap_test+0x10c><== NOT EXECUTED
   10c70:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
   10c74:	e59f10d4 	ldr	r1, [pc, #212]	; 10d50 <rtems_rfs_group_bitmap_test+0x110><== NOT EXECUTED
   10c78:	e59f00d4 	ldr	r0, [pc, #212]	; 10d54 <rtems_rfs_group_bitmap_test+0x114><== NOT EXECUTED
   10c7c:	11a01003 	movne	r1, r3                                      <== NOT EXECUTED
   10c80:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   10c84:	eb003e06 	bl	204a4 <printf>                                 <== NOT EXECUTED
            inode ? "inode" : "block", no);                           
                                                                      
  if (inode)                                                          
   10c88:	e3560000 	cmp	r6, #0                                        <== NOT EXECUTED
   10c8c:	0a000007 	beq	10cb0 <rtems_rfs_group_bitmap_test+0x70>      <== NOT EXECUTED
  {                                                                   
    if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs))) 
   10c90:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
   10c94:	da000002 	ble	10ca4 <rtems_rfs_group_bitmap_test+0x64>      <== NOT EXECUTED
   10c98:	e5953014 	ldr	r3, [r5, #20]                                 <== NOT EXECUTED
   10c9c:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
   10ca0:	9a00001b 	bls	10d14 <rtems_rfs_group_bitmap_test+0xd4>      <== NOT EXECUTED
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
   10ca4:	e3a06016 	mov	r6, #22                                       <== NOT EXECUTED
  rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);                
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
                                                                      
  return rc;                                                          
}                                                                     
   10ca8:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   10cac:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
  }                                                                   
  else                                                                
  {                                                                   
    if (no >= rtems_rfs_fs_blocks (fs))                               
   10cb0:	e5953004 	ldr	r3, [r5, #4]                                  <== NOT EXECUTED
   10cb4:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
   10cb8:	2afffff9 	bcs	10ca4 <rtems_rfs_group_bitmap_test+0x64>      <== NOT EXECUTED
        return EINVAL;                                                
    size = fs->group_blocks;                                          
   10cbc:	e5958028 	ldr	r8, [r5, #40]	; 0x28                          <== NOT EXECUTED
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10cc0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   10cc4:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   10cc8:	eb0070ca 	bl	2cff8 <__umodsi3>                              <== NOT EXECUTED
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10ccc:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10cd0:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10cd4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   10cd8:	ebffc372 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
   10cdc:	e5953020 	ldr	r3, [r5, #32]                                 <== NOT EXECUTED
   10ce0:	e0800100 	add	r0, r0, r0, lsl #2                            <== NOT EXECUTED
   10ce4:	e0834200 	add	r4, r3, r0, lsl #4                            <== NOT EXECUTED
   10ce8:	e2844008 	add	r4, r4, #8                                    <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);                
   10cec:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   10cf0:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   10cf4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   10cf8:	eb001eb9 	bl	187e4 <rtems_rfs_bitmap_map_test>              <== NOT EXECUTED
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
   10cfc:	e5941000 	ldr	r1, [r4]                                      <== NOT EXECUTED
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
  else                                                                
    bitmap = &fs->groups[group].block_bitmap;                         
                                                                      
  rc = rtems_rfs_bitmap_map_test (bitmap, bit, state);                
   10d00:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
                                                                      
  rtems_rfs_bitmap_release_buffer (fs, bitmap);                       
   10d04:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   10d08:	eb0023fc 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
                                                                      
  return rc;                                                          
}                                                                     
   10d0c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   10d10:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
  if (inode)                                                          
  {                                                                   
    if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs))) 
        return EINVAL;                                                
    no -= RTEMS_RFS_ROOT_INO;                                         
    size = fs->group_inodes;                                          
   10d14:	e595802c 	ldr	r8, [r5, #44]	; 0x2c                          <== NOT EXECUTED
                                                                      
  if (inode)                                                          
  {                                                                   
    if ((no < RTEMS_RFS_ROOT_INO) || (no > rtems_rfs_fs_inodes (fs))) 
        return EINVAL;                                                
    no -= RTEMS_RFS_ROOT_INO;                                         
   10d18:	e2444001 	sub	r4, r4, #1                                    <== NOT EXECUTED
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10d1c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   10d20:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   10d24:	eb0070b3 	bl	2cff8 <__umodsi3>                              <== NOT EXECUTED
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10d28:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
   10d2c:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
    if (no >= rtems_rfs_fs_blocks (fs))                               
        return EINVAL;                                                
    size = fs->group_blocks;                                          
  }                                                                   
                                                                      
  group = no / size;                                                  
   10d30:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   10d34:	ebffc35b 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
  bit = (rtems_rfs_bitmap_bit) (no % size);                           
                                                                      
  if (inode)                                                          
    bitmap = &fs->groups[group].inode_bitmap;                         
   10d38:	e5953020 	ldr	r3, [r5, #32]                                 <== NOT EXECUTED
   10d3c:	e0800100 	add	r0, r0, r0, lsl #2                            <== NOT EXECUTED
   10d40:	e0834200 	add	r4, r3, r0, lsl #4                            <== NOT EXECUTED
   10d44:	e284402c 	add	r4, r4, #44	; 0x2c                            <== NOT EXECUTED
   10d48:	eaffffe7 	b	10cec <rtems_rfs_group_bitmap_test+0xac>        <== NOT EXECUTED
                                                                      

000108ac <rtems_rfs_group_close>: return 0; } int rtems_rfs_group_close (rtems_rfs_file_system* fs, rtems_rfs_group* group) {
   108ac:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
   108b0:	e1a05000 	mov	r5, r0                                        
   108b4:	e1a04001 	mov	r4, r1                                        
  int result = 0;                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))                  
   108b8:	e3a00801 	mov	r0, #65536	; 0x10000                          
   108bc:	e3a01000 	mov	r1, #0                                        
   108c0:	eb0007da 	bl	12830 <rtems_rfs_trace>                        
   108c4:	e3500000 	cmp	r0, #0                                        
   108c8:	1a000016 	bne	10928 <rtems_rfs_group_close+0x7c>            
  /*                                                                  
   * We need to close as much as possible and also return any error if one
   * occurs but this may result in one even more important error being lost but
   * we cannot OR the errors together so this is a reasonable compromise.
   */                                                                 
  rc = rtems_rfs_bitmap_close (&group->inode_bitmap);                 
   108cc:	e284002c 	add	r0, r4, #44	; 0x2c                            
   108d0:	eb0020a9 	bl	18b7c <rtems_rfs_bitmap_close>                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   108d4:	e2841044 	add	r1, r4, #68	; 0x44                            
   108d8:	e1a07000 	mov	r7, r0                                        
   108dc:	e1a00005 	mov	r0, r5                                        
   108e0:	eb002506 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  handle->dirty = false;                                              
   108e4:	e3a03000 	mov	r3, #0                                        
   108e8:	e5c43044 	strb	r3, [r4, #68]	; 0x44                         
  handle->bnum  = 0;                                                  
   108ec:	e5843048 	str	r3, [r4, #72]	; 0x48                          
  handle->buffer = NULL;                                              
   108f0:	e584304c 	str	r3, [r4, #76]	; 0x4c                          
  if (rc > 0)                                                         
    result = rc;                                                      
  rc = rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);
  if (rc > 0)                                                         
    result = rc;                                                      
  rc = rtems_rfs_bitmap_close (&group->block_bitmap);                 
   108f4:	e2840008 	add	r0, r4, #8                                    
   108f8:	eb00209f 	bl	18b7c <rtems_rfs_bitmap_close>                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   108fc:	e2841020 	add	r1, r4, #32                                   
  if (rc > 0)                                                         
   10900:	e2506000 	subs	r6, r0, #0                                   
   10904:	e1a00005 	mov	r0, r5                                        
   10908:	d1c76fc7 	bicle	r6, r7, r7, asr #31                         
   1090c:	eb0024fb 	bl	19d00 <rtems_rfs_buffer_handle_release>        
  handle->dirty = false;                                              
   10910:	e3a03000 	mov	r3, #0                                        
   10914:	e5c43020 	strb	r3, [r4, #32]                                
  handle->bnum  = 0;                                                  
   10918:	e5843024 	str	r3, [r4, #36]	; 0x24                          
  handle->buffer = NULL;                                              
   1091c:	e5843028 	str	r3, [r4, #40]	; 0x28                          
  rc = rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);
  if (rc > 0)                                                         
    result = rc;                                                      
                                                                      
  return result;                                                      
}                                                                     
   10920:	e1a00006 	mov	r0, r6                                        
   10924:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
{                                                                     
  int result = 0;                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_CLOSE))                  
    printf ("rtems-rfs: group-close: base=%" PRId32 "\n", group->base);
   10928:	e5941000 	ldr	r1, [r4]                                      <== NOT EXECUTED
   1092c:	e59f0004 	ldr	r0, [pc, #4]	; 10938 <rtems_rfs_group_close+0x8c><== NOT EXECUTED
   10930:	eb003edb 	bl	204a4 <printf>                                 <== NOT EXECUTED
   10934:	eaffffe4 	b	108cc <rtems_rfs_group_close+0x20>              <== NOT EXECUTED
                                                                      

000106a0 <rtems_rfs_group_open>: rtems_rfs_group_open (rtems_rfs_file_system* fs, rtems_rfs_buffer_block base, size_t size, size_t inodes, rtems_rfs_group* group) {
   106a0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   106a4:	e1a08000 	mov	r8, r0                                        
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
   106a8:	e5900004 	ldr	r0, [r0, #4]                                  
rtems_rfs_group_open (rtems_rfs_file_system* fs,                      
                      rtems_rfs_buffer_block base,                    
                      size_t                 size,                    
                      size_t                 inodes,                  
                      rtems_rfs_group*       group)                   
{                                                                     
   106ac:	e24dd004 	sub	sp, sp, #4                                    
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
   106b0:	e1500001 	cmp	r0, r1                                        
rtems_rfs_group_open (rtems_rfs_file_system* fs,                      
                      rtems_rfs_buffer_block base,                    
                      size_t                 size,                    
                      size_t                 inodes,                  
                      rtems_rfs_group*       group)                   
{                                                                     
   106b4:	e1a06001 	mov	r6, r1                                        
   106b8:	e1a07002 	mov	r7, r2                                        
   106bc:	e59d4028 	ldr	r4, [sp, #40]	; 0x28                          
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
   106c0:	9a000027 	bls	10764 <rtems_rfs_group_open+0xc4>             
      printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
              EIO, strerror (EIO));                                   
    return EIO;                                                       
  }                                                                   
                                                                      
  if ((base + size) >= rtems_rfs_fs_blocks (fs))                      
   106c4:	e0822001 	add	r2, r2, r1                                    
   106c8:	e1500002 	cmp	r0, r2                                        
    size = rtems_rfs_fs_blocks (fs) - base;                           
   106cc:	90617000 	rsbls	r7, r1, r0                                  
   * the format configuration needs reviewing.                        
   */                                                                 
  if (inodes > size)                                                  
    inodes = size;                                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
   106d0:	e3a00902 	mov	r0, #32768	; 0x8000                           
   106d4:	e3a01000 	mov	r1, #0                                        
              EIO, strerror (EIO));                                   
    return EIO;                                                       
  }                                                                   
                                                                      
  if ((base + size) >= rtems_rfs_fs_blocks (fs))                      
    size = rtems_rfs_fs_blocks (fs) - base;                           
   106d8:	e1570003 	cmp	r7, r3                                        
   106dc:	31a0b007 	movcc	fp, r7                                      
   106e0:	21a0b003 	movcs	fp, r3                                      
   * the format configuration needs reviewing.                        
   */                                                                 
  if (inodes > size)                                                  
    inodes = size;                                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
   106e4:	eb000851 	bl	12830 <rtems_rfs_trace>                        
   106e8:	e3500000 	cmp	r0, #0                                        
   106ec:	1a00002a 	bne	1079c <rtems_rfs_group_open+0xfc>             
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   106f0:	e3a05000 	mov	r5, #0                                        
      printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,               
   106f4:	e2849008 	add	r9, r4, #8                                    
   106f8:	e284a020 	add	sl, r4, #32                                   
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
    printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
            base, size, inodes);                                      
                                                                      
  group->base = base;                                                 
  group->size = size;                                                 
   106fc:	e88400c0 	stm	r4, {r6, r7}                                  
   10700:	e5c45020 	strb	r5, [r4, #32]                                
  handle->bnum  = 0;                                                  
   10704:	e5845024 	str	r5, [r4, #36]	; 0x24                          
  handle->buffer = NULL;                                              
   10708:	e5845028 	str	r5, [r4, #40]	; 0x28                          
      printf ("rtems-rfs: group-open: could not open block bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->block_bitmap, fs,               
   1070c:	e1a00009 	mov	r0, r9                                        
   10710:	e1a01008 	mov	r1, r8                                        
   10714:	e1a0200a 	mov	r2, sl                                        
   10718:	e1a03007 	mov	r3, r7                                        
   1071c:	e58d6000 	str	r6, [sp]                                      
   10720:	eb002101 	bl	18b2c <rtems_rfs_bitmap_open>                  
                              &group->block_bitmap_buffer, size,      
                              group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
  if (rc > 0)                                                         
   10724:	e2506000 	subs	r6, r0, #0                                   
   10728:	da000028 	ble	107d0 <rtems_rfs_group_open+0x130>            
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1072c:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   10730:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   10734:	eb002571 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   10738:	e5c45020 	strb	r5, [r4, #32]                                <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1073c:	e5845024 	str	r5, [r4, #36]	; 0x24                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   10740:	e5845028 	str	r5, [r4, #40]	; 0x28                          <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);  
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
   10744:	e3a00902 	mov	r0, #32768	; 0x8000                           <== NOT EXECUTED
   10748:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1074c:	eb000837 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   10750:	e1500005 	cmp	r0, r5                                        <== NOT EXECUTED
   10754:	1a000016 	bne	107b4 <rtems_rfs_group_open+0x114>            <== NOT EXECUTED
    rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);       
    rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);       
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   10758:	e1a00006 	mov	r0, r6                                        
   1075c:	e28dd004 	add	sp, sp, #4                                    
   10760:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
{                                                                     
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
   10764:	e3a00902 	mov	r0, #32768	; 0x8000                           <== NOT EXECUTED
   10768:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1076c:	eb00082f 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   10770:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
              EIO, strerror (EIO));                                   
    return EIO;                                                       
   10774:	03a06005 	moveq	r6, #5                                      <== NOT EXECUTED
{                                                                     
  int rc;                                                             
                                                                      
  if (base >= rtems_rfs_fs_blocks (fs))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
   10778:	0afffff6 	beq	10758 <rtems_rfs_group_open+0xb8>             <== NOT EXECUTED
      printf ("rtems-rfs: group-open: base outside file system range: %d: %s\n",
   1077c:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
   10780:	eb0043f5 	bl	2175c <strerror>                               <== NOT EXECUTED
   10784:	e3a01005 	mov	r1, #5                                        <== NOT EXECUTED
   10788:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1078c:	e59f0108 	ldr	r0, [pc, #264]	; 1089c <rtems_rfs_group_open+0x1fc><== NOT EXECUTED
   10790:	eb003f43 	bl	204a4 <printf>                                 <== NOT EXECUTED
              EIO, strerror (EIO));                                   
    return EIO;                                                       
   10794:	e3a06005 	mov	r6, #5                                        <== NOT EXECUTED
   10798:	eaffffee 	b	10758 <rtems_rfs_group_open+0xb8>               <== NOT EXECUTED
   */                                                                 
  if (inodes > size)                                                  
    inodes = size;                                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                   
    printf ("rtems-rfs: group-open: base=%" PRId32 ", blocks=%zd inodes=%zd\n",
   1079c:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   107a0:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   107a4:	e1a0300b 	mov	r3, fp                                        <== NOT EXECUTED
   107a8:	e59f00f0 	ldr	r0, [pc, #240]	; 108a0 <rtems_rfs_group_open+0x200><== NOT EXECUTED
   107ac:	eb003f3c 	bl	204a4 <printf>                                 <== NOT EXECUTED
   107b0:	eaffffce 	b	106f0 <rtems_rfs_group_open+0x50>               <== NOT EXECUTED
                              group->base + RTEMS_RFS_GROUP_BLOCK_BITMAP_BLOCK);
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);  
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
      printf ("rtems-rfs: group-open: could not open block bitmap: %d: %s\n",
   107b4:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   107b8:	eb0043e7 	bl	2175c <strerror>                               <== NOT EXECUTED
   107bc:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   107c0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   107c4:	e59f00d8 	ldr	r0, [pc, #216]	; 108a4 <rtems_rfs_group_open+0x204><== NOT EXECUTED
   107c8:	eb003f35 	bl	204a4 <printf>                                 <== NOT EXECUTED
   107cc:	eaffffe1 	b	10758 <rtems_rfs_group_open+0xb8>               <== NOT EXECUTED
      printf ("rtems-rfs: group-open: could not open inode bitmap handle: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_bitmap_open (&group->inode_bitmap, fs,               
   107d0:	e594c000 	ldr	ip, [r4]                                      
   107d4:	e2847044 	add	r7, r4, #68	; 0x44                            
   107d8:	e28cc001 	add	ip, ip, #1                                    
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   107dc:	e5c45044 	strb	r5, [r4, #68]	; 0x44                         
  handle->bnum  = 0;                                                  
   107e0:	e5845048 	str	r5, [r4, #72]	; 0x48                          
  handle->buffer = NULL;                                              
   107e4:	e584504c 	str	r5, [r4, #76]	; 0x4c                          
   107e8:	e284002c 	add	r0, r4, #44	; 0x2c                            
   107ec:	e1a01008 	mov	r1, r8                                        
   107f0:	e1a02007 	mov	r2, r7                                        
   107f4:	e1a0300b 	mov	r3, fp                                        
   107f8:	e58dc000 	str	ip, [sp]                                      
   107fc:	eb0020ca 	bl	18b2c <rtems_rfs_bitmap_open>                  
                              &group->inode_bitmap_buffer, inodes,    
                              group->base + RTEMS_RFS_GROUP_INODE_BITMAP_BLOCK);
  if (rc > 0)                                                         
   10800:	e2506000 	subs	r6, r0, #0                                   
   10804:	da000019 	ble	10870 <rtems_rfs_group_open+0x1d0>            
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   10808:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   1080c:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   10810:	eb00253a 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   10814:	e5c45044 	strb	r5, [r4, #68]	; 0x44                         <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   10818:	e5845048 	str	r5, [r4, #72]	; 0x48                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1081c:	e584504c 	str	r5, [r4, #76]	; 0x4c                          <== NOT EXECUTED
  {                                                                   
    rtems_rfs_buffer_handle_close (fs, &group->inode_bitmap_buffer);  
    rtems_rfs_bitmap_close (&group->block_bitmap);                    
   10820:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   10824:	eb0020d4 	bl	18b7c <rtems_rfs_bitmap_close>                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   10828:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1082c:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   10830:	eb002532 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
  handle->dirty = false;                                              
   10834:	e5c45020 	strb	r5, [r4, #32]                                <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   10838:	e5845024 	str	r5, [r4, #36]	; 0x24                          <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1083c:	e5845028 	str	r5, [r4, #40]	; 0x28                          <== NOT EXECUTED
    rtems_rfs_buffer_handle_close (fs, &group->block_bitmap_buffer);  
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_GROUP_OPEN))                 
   10840:	e3a00902 	mov	r0, #32768	; 0x8000                           <== NOT EXECUTED
   10844:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   10848:	eb0007f8 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1084c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   10850:	0affffc0 	beq	10758 <rtems_rfs_group_open+0xb8>             <== NOT EXECUTED
      printf ("rtems-rfs: group-open: could not open inode bitmap: %d: %s\n",
   10854:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   10858:	eb0043bf 	bl	2175c <strerror>                               <== NOT EXECUTED
   1085c:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   10860:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   10864:	e59f003c 	ldr	r0, [pc, #60]	; 108a8 <rtems_rfs_group_open+0x208><== NOT EXECUTED
   10868:	eb003f0d 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1086c:	eaffffb9 	b	10758 <rtems_rfs_group_open+0xb8>               <== NOT EXECUTED
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  if (rtems_rfs_fs_release_bitmaps (fs))                              
   10870:	e5986000 	ldr	r6, [r8]                                      
   10874:	e2166001 	ands	r6, r6, #1                                   
  {                                                                   
    rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);       
    rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);       
  }                                                                   
                                                                      
  return 0;                                                           
   10878:	11a06005 	movne	r6, r5                                      
      printf ("rtems-rfs: group-open: could not open inode bitmap: %d: %s\n",
              rc, strerror (rc));                                     
    return rc;                                                        
  }                                                                   
                                                                      
  if (rtems_rfs_fs_release_bitmaps (fs))                              
   1087c:	1affffb5 	bne	10758 <rtems_rfs_group_open+0xb8>             
  {                                                                   
    rtems_rfs_bitmap_release_buffer (fs, &group->block_bitmap);       
   10880:	e5941008 	ldr	r1, [r4, #8]                                  
   10884:	e1a00008 	mov	r0, r8                                        
   10888:	eb00251c 	bl	19d00 <rtems_rfs_buffer_handle_release>        
    rtems_rfs_bitmap_release_buffer (fs, &group->inode_bitmap);       
   1088c:	e1a00008 	mov	r0, r8                                        
   10890:	e594102c 	ldr	r1, [r4, #44]	; 0x2c                          
   10894:	eb002519 	bl	19d00 <rtems_rfs_buffer_handle_release>        
   10898:	eaffffae 	b	10758 <rtems_rfs_group_open+0xb8>               
                                                                      

00010d58 <rtems_rfs_group_usage>: int g; *blocks = 0; *inodes = 0; for (g = 0; g < fs->group_count; g++)
   10d58:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          <== NOT EXECUTED
                       size_t*                blocks,                 
                       size_t*                inodes)                 
{                                                                     
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
   10d5c:	e3a0c000 	mov	ip, #0                                        <== NOT EXECUTED
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
   10d60:	e153000c 	cmp	r3, ip                                        <== NOT EXECUTED
                                                                      
int                                                                   
rtems_rfs_group_usage (rtems_rfs_file_system* fs,                     
                       size_t*                blocks,                 
                       size_t*                inodes)                 
{                                                                     
   10d64:	e92d00f0 	push	{r4, r5, r6, r7}                             <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
   10d68:	e581c000 	str	ip, [r1]                                      <== NOT EXECUTED
  *inodes = 0;                                                        
   10d6c:	e582c000 	str	ip, [r2]                                      <== NOT EXECUTED
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
   10d70:	da000010 	ble	10db8 <rtems_rfs_group_usage+0x60>            <== NOT EXECUTED
   10d74:	e5904020 	ldr	r4, [r0, #32]                                 <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
   10d78:	e5947014 	ldr	r7, [r4, #20]                                 <== NOT EXECUTED
   10d7c:	e5915000 	ldr	r5, [r1]                                      <== NOT EXECUTED
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
   10d80:	e5946018 	ldr	r6, [r4, #24]                                 <== NOT EXECUTED
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
   10d84:	e0875005 	add	r5, r7, r5                                    <== NOT EXECUTED
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
   10d88:	e0665005 	rsb	r5, r6, r5                                    <== NOT EXECUTED
   10d8c:	e5815000 	str	r5, [r1]                                      <== NOT EXECUTED
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
      rtems_rfs_bitmap_map_size (&group->inode_bitmap) -              
   10d90:	e5947038 	ldr	r7, [r4, #56]	; 0x38                          <== NOT EXECUTED
   10d94:	e5925000 	ldr	r5, [r2]                                      <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
   10d98:	e594603c 	ldr	r6, [r4, #60]	; 0x3c                          <== NOT EXECUTED
      rtems_rfs_bitmap_map_size (&group->inode_bitmap) -              
   10d9c:	e0875005 	add	r5, r7, r5                                    <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
   10da0:	e28cc001 	add	ip, ip, #1                                    <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
   10da4:	e0665005 	rsb	r5, r6, r5                                    <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
   10da8:	e15c0003 	cmp	ip, r3                                        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_group* group = &fs->groups[g];                          
    *blocks +=                                                        
      rtems_rfs_bitmap_map_size(&group->block_bitmap) -               
      rtems_rfs_bitmap_map_free (&group->block_bitmap);               
    *inodes +=                                                        
   10dac:	e5825000 	str	r5, [r2]                                      <== NOT EXECUTED
  int g;                                                              
                                                                      
  *blocks = 0;                                                        
  *inodes = 0;                                                        
                                                                      
  for (g = 0; g < fs->group_count; g++)                               
   10db0:	e2844050 	add	r4, r4, #80	; 0x50                            <== NOT EXECUTED
   10db4:	1affffef 	bne	10d78 <rtems_rfs_group_usage+0x20>            <== NOT EXECUTED
    *inodes +=                                                        
      rtems_rfs_bitmap_map_size (&group->inode_bitmap) -              
      rtems_rfs_bitmap_map_free (&group->inode_bitmap);               
  }                                                                   
                                                                      
  if (*blocks > rtems_rfs_fs_blocks (fs))                             
   10db8:	e5903004 	ldr	r3, [r0, #4]                                  <== NOT EXECUTED
   10dbc:	e591c000 	ldr	ip, [r1]                                      <== NOT EXECUTED
   10dc0:	e15c0003 	cmp	ip, r3                                        <== NOT EXECUTED
   10dc4:	9581c000 	strls	ip, [r1]                                    <== NOT EXECUTED
   10dc8:	85813000 	strhi	r3, [r1]                                    <== NOT EXECUTED
    *blocks = rtems_rfs_fs_blocks (fs);                               
  if (*inodes > rtems_rfs_fs_inodes (fs))                             
   10dcc:	e5903014 	ldr	r3, [r0, #20]                                 <== NOT EXECUTED
   10dd0:	e5921000 	ldr	r1, [r2]                                      <== NOT EXECUTED
    *inodes = rtems_rfs_fs_inodes (fs);                               
                                                                      
  return 0;                                                           
}                                                                     
   10dd4:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
      rtems_rfs_bitmap_map_free (&group->inode_bitmap);               
  }                                                                   
                                                                      
  if (*blocks > rtems_rfs_fs_blocks (fs))                             
    *blocks = rtems_rfs_fs_blocks (fs);                               
  if (*inodes > rtems_rfs_fs_inodes (fs))                             
   10dd8:	e1510003 	cmp	r1, r3                                        <== NOT EXECUTED
   10ddc:	95821000 	strls	r1, [r2]                                    <== NOT EXECUTED
   10de0:	85823000 	strhi	r3, [r2]                                    <== NOT EXECUTED
    *inodes = rtems_rfs_fs_inodes (fs);                               
                                                                      
  return 0;                                                           
}                                                                     
   10de4:	e8bd00f0 	pop	{r4, r5, r6, r7}                              <== NOT EXECUTED
   10de8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

000110b0 <rtems_rfs_inode_close>: } int rtems_rfs_inode_close (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle) {
   110b0:	e92d4030 	push	{r4, r5, lr}                                 
   110b4:	e1a05000 	mov	r5, r0                                        
   110b8:	e1a04001 	mov	r4, r1                                        
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                  
   110bc:	e3a00702 	mov	r0, #524288	; 0x80000                         
   110c0:	e3a01000 	mov	r1, #0                                        
   110c4:	eb0005d9 	bl	12830 <rtems_rfs_trace>                        
   110c8:	e3500000 	cmp	r0, #0                                        
   110cc:	1a000011 	bne	11118 <rtems_rfs_inode_close+0x68>            
    printf ("rtems-rfs: inode-close: ino: %" PRIu32 "\n", handle->ino);
                                                                      
  rc = rtems_rfs_inode_unload (fs, handle, true);                     
   110d0:	e1a00005 	mov	r0, r5                                        
   110d4:	e1a01004 	mov	r1, r4                                        
   110d8:	e3a02001 	mov	r2, #1                                        
   110dc:	ebffffb7 	bl	10fc0 <rtems_rfs_inode_unload>                 
                                                                      
  if ((rc == 0) && (handle->loads > 0))                               
   110e0:	e3500000 	cmp	r0, #0                                        
   110e4:	1a000008 	bne	1110c <rtems_rfs_inode_close+0x5c>            
   110e8:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   110ec:	e3530000 	cmp	r3, #0                                        
   110f0:	da000005 	ble	1110c <rtems_rfs_inode_close+0x5c>            
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
   110f4:	e3a00702 	mov	r0, #524288	; 0x80000                         <== NOT EXECUTED
   110f8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   110fc:	eb0005cb 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   11100:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
              handle->loads);                                         
    rc = EIO;                                                         
   11104:	03a00005 	moveq	r0, #5                                      <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_inode_unload (fs, handle, true);                     
                                                                      
  if ((rc == 0) && (handle->loads > 0))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
   11108:	1a000006 	bne	11128 <rtems_rfs_inode_close+0x78>            <== NOT EXECUTED
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
              handle->loads);                                         
    rc = EIO;                                                         
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
   1110c:	e3a03000 	mov	r3, #0                                        
   11110:	e5843008 	str	r3, [r4, #8]                                  
  return rc;                                                          
}                                                                     
   11114:	e8bd8030 	pop	{r4, r5, pc}                                  
                       rtems_rfs_inode_handle* handle)                
{                                                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                  
    printf ("rtems-rfs: inode-close: ino: %" PRIu32 "\n", handle->ino);
   11118:	e5941008 	ldr	r1, [r4, #8]                                  <== NOT EXECUTED
   1111c:	e59f0020 	ldr	r0, [pc, #32]	; 11144 <rtems_rfs_inode_close+0x94><== NOT EXECUTED
   11120:	eb003cdf 	bl	204a4 <printf>                                 <== NOT EXECUTED
   11124:	eaffffe9 	b	110d0 <rtems_rfs_inode_close+0x20>              <== NOT EXECUTED
  rc = rtems_rfs_inode_unload (fs, handle, true);                     
                                                                      
  if ((rc == 0) && (handle->loads > 0))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
   11128:	e5941024 	ldr	r1, [r4, #36]	; 0x24                          <== NOT EXECUTED
   1112c:	e59f0014 	ldr	r0, [pc, #20]	; 11148 <rtems_rfs_inode_close+0x98><== NOT EXECUTED
   11130:	eb003cdb 	bl	204a4 <printf>                                 <== NOT EXECUTED
              handle->loads);                                         
    rc = EIO;                                                         
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
   11134:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
  if ((rc == 0) && (handle->loads > 0))                               
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CLOSE))                
      printf ("rtems-rfs: inode-close: bad loads number: %d\n",       
              handle->loads);                                         
    rc = EIO;                                                         
   11138:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  handle->ino = 0;                                                    
   1113c:	e5843008 	str	r3, [r4, #8]                                  <== NOT EXECUTED
  return rc;                                                          
}                                                                     
   11140:	e8bd8030 	pop	{r4, r5, pc}                                  <== NOT EXECUTED
                                                                      

00011450 <rtems_rfs_inode_create>: uint16_t mode, uint16_t links, uid_t uid, gid_t gid, rtems_rfs_ino* ino) {
   11450:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   11454:	e24dd060 	sub	sp, sp, #96	; 0x60                            
   11458:	e1ddc8bc 	ldrh	ip, [sp, #140]	; 0x8c                        
   1145c:	e58dc004 	str	ip, [sp, #4]                                  
   11460:	e1ddc9b0 	ldrh	ip, [sp, #144]	; 0x90                        
   11464:	e1a0a000 	mov	sl, r0                                        
   11468:	e1a08001 	mov	r8, r1                                        
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
   1146c:	e3a00501 	mov	r0, #4194304	; 0x400000                       
   11470:	e3a01000 	mov	r1, #0                                        
                        uint16_t                mode,                 
                        uint16_t                links,                
                        uid_t                   uid,                  
                        gid_t                   gid,                  
                        rtems_rfs_ino*          ino)                  
{                                                                     
   11474:	e1dd78b4 	ldrh	r7, [sp, #132]	; 0x84                        
   11478:	e1a05002 	mov	r5, r2                                        
   1147c:	e1a04003 	mov	r4, r3                                        
   11480:	e1ddb8b8 	ldrh	fp, [sp, #136]	; 0x88                        
   11484:	e58dc008 	str	ip, [sp, #8]                                  
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
   11488:	eb0004e8 	bl	12830 <rtems_rfs_trace>                        
   1148c:	e3500000 	cmp	r0, #0                                        
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
   11490:	e2076a0f 	and	r6, r7, #61440	; 0xf000                       
{                                                                     
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
   11494:	0a00002a 	beq	11544 <rtems_rfs_inode_create+0xf4>           
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
   11498:	e3560901 	cmp	r6, #16384	; 0x4000                           <== NOT EXECUTED
      type = "dir";                                                   
   1149c:	059f92d4 	ldreq	r9, [pc, #724]	; 11778 <rtems_rfs_inode_create+0x328><== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_CREATE))                 
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
   114a0:	0a00000c 	beq	114d8 <rtems_rfs_inode_create+0x88>           <== NOT EXECUTED
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
   114a4:	e3560a02 	cmp	r6, #8192	; 0x2000                            <== NOT EXECUTED
      type = "char";                                                  
   114a8:	059f92cc 	ldreq	r9, [pc, #716]	; 1177c <rtems_rfs_inode_create+0x32c><== NOT EXECUTED
  {                                                                   
    const char* type = "unknown";                                     
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
   114ac:	0a000009 	beq	114d8 <rtems_rfs_inode_create+0x88>           <== NOT EXECUTED
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
   114b0:	e3560a06 	cmp	r6, #24576	; 0x6000                           <== NOT EXECUTED
      type = "block";                                                 
   114b4:	059f92c4 	ldreq	r9, [pc, #708]	; 11780 <rtems_rfs_inode_create+0x330><== NOT EXECUTED
    int         c;                                                    
    if (RTEMS_RFS_S_ISDIR (mode))                                     
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
   114b8:	0a000006 	beq	114d8 <rtems_rfs_inode_create+0x88>           <== NOT EXECUTED
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
   114bc:	e3560902 	cmp	r6, #32768	; 0x8000                           <== NOT EXECUTED
      type = "file";                                                  
   114c0:	059f92bc 	ldreq	r9, [pc, #700]	; 11784 <rtems_rfs_inode_create+0x334><== NOT EXECUTED
      type = "dir";                                                   
    else if (RTEMS_RFS_S_ISCHR (mode))                                
      type = "char";                                                  
    else if (RTEMS_RFS_S_ISBLK (mode))                                
      type = "block";                                                 
    else if (RTEMS_RFS_S_ISREG (mode))                                
   114c4:	0a000003 	beq	114d8 <rtems_rfs_inode_create+0x88>           <== NOT EXECUTED
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
      type = "link";                                                  
   114c8:	e59f32b8 	ldr	r3, [pc, #696]	; 11788 <rtems_rfs_inode_create+0x338><== NOT EXECUTED
   114cc:	e3560a0a 	cmp	r6, #40960	; 0xa000                           <== NOT EXECUTED
   114d0:	e59f92b4 	ldr	r9, [pc, #692]	; 1178c <rtems_rfs_inode_create+0x33c><== NOT EXECUTED
   114d4:	01a09003 	moveq	r9, r3                                      <== NOT EXECUTED
    printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
   114d8:	e59f02b0 	ldr	r0, [pc, #688]	; 11790 <rtems_rfs_inode_create+0x340><== NOT EXECUTED
   114dc:	e1a01008 	mov	r1, r8                                        <== NOT EXECUTED
   114e0:	eb003bef 	bl	204a4 <printf>                                 <== NOT EXECUTED
    for (c = 0; c < length; c++)                                      
   114e4:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
   114e8:	0a00000f 	beq	1152c <rtems_rfs_inode_create+0xdc>           <== NOT EXECUTED
   114ec:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   114f0:	e58db00c 	str	fp, [sp, #12]                                 <== NOT EXECUTED
   114f4:	e1a0b007 	mov	fp, r7                                        <== NOT EXECUTED
   114f8:	e1a07006 	mov	r7, r6                                        <== NOT EXECUTED
   114fc:	e1a06004 	mov	r6, r4                                        <== NOT EXECUTED
   11500:	e1a04002 	mov	r4, r2                                        <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   11504:	e7d50002 	ldrb	r0, [r5, r2]                                 <== NOT EXECUTED
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
      type = "link";                                                  
    printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
    for (c = 0; c < length; c++)                                      
   11508:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1150c:	eb003c4e 	bl	2064c <putchar>                                <== NOT EXECUTED
    else if (RTEMS_RFS_S_ISREG (mode))                                
      type = "file";                                                  
    else if (RTEMS_RFS_S_ISLNK (mode))                                
      type = "link";                                                  
    printf("rtems-rfs: inode-create: parent:%" PRIu32 " name:", parent);
    for (c = 0; c < length; c++)                                      
   11510:	e1540006 	cmp	r4, r6                                        <== NOT EXECUTED
   11514:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   11518:	1afffff9 	bne	11504 <rtems_rfs_inode_create+0xb4>           <== NOT EXECUTED
   1151c:	e1a04006 	mov	r4, r6                                        <== NOT EXECUTED
   11520:	e1a06007 	mov	r6, r7                                        <== NOT EXECUTED
   11524:	e1a0700b 	mov	r7, fp                                        <== NOT EXECUTED
   11528:	e59db00c 	ldr	fp, [sp, #12]                                 <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (" type:%s mode:%04x (%03o)\n", type, mode, mode & ((1 << 10) - 1));
   1152c:	e1a03b07 	lsl	r3, r7, #22                                   <== NOT EXECUTED
   11530:	e59f025c 	ldr	r0, [pc, #604]	; 11794 <rtems_rfs_inode_create+0x344><== NOT EXECUTED
   11534:	e1a01009 	mov	r1, r9                                        <== NOT EXECUTED
   11538:	e1a02007 	mov	r2, r7                                        <== NOT EXECUTED
   1153c:	e1a03b23 	lsr	r3, r3, #22                                   <== NOT EXECUTED
   11540:	eb003bd7 	bl	204a4 <printf>                                 <== NOT EXECUTED
  }                                                                   
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & RTEMS_RFS_S_IFMT)                                    
   11544:	e3560a06 	cmp	r6, #24576	; 0x6000                           
   11548:	0a00000c 	beq	11580 <rtems_rfs_inode_create+0x130>          
   1154c:	da000007 	ble	11570 <rtems_rfs_inode_create+0x120>          
   11550:	e3560902 	cmp	r6, #32768	; 0x8000                           
   11554:	0a000009 	beq	11580 <rtems_rfs_inode_create+0x130>          
   11558:	e3560a0a 	cmp	r6, #40960	; 0xa000                           
   1155c:	0a000007 	beq	11580 <rtems_rfs_inode_create+0x130>          
    case RTEMS_RFS_S_IFBLK:                                           
    case RTEMS_RFS_S_IFREG:                                           
    case RTEMS_RFS_S_IFLNK:                                           
      break;                                                          
    default:                                                          
      return EINVAL;                                                  
   11560:	e3a09016 	mov	r9, #22                                       <== NOT EXECUTED
    rtems_rfs_inode_free (fs, *ino);                                  
    return rc;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11564:	e1a00009 	mov	r0, r9                                        
   11568:	e28dd060 	add	sp, sp, #96	; 0x60                            
   1156c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  }                                                                   
                                                                      
  /*                                                                  
   * The file type is field within the mode. Check we have a sane mode set.
   */                                                                 
  switch (mode & RTEMS_RFS_S_IFMT)                                    
   11570:	e3560a02 	cmp	r6, #8192	; 0x2000                            
   11574:	0a000001 	beq	11580 <rtems_rfs_inode_create+0x130>          
   11578:	e3560901 	cmp	r6, #16384	; 0x4000                           
   1157c:	1afffff7 	bne	11560 <rtems_rfs_inode_create+0x110>          
      break;                                                          
    default:                                                          
      return EINVAL;                                                  
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_alloc (fs, parent, ino);                       
   11580:	e1a0000a 	mov	r0, sl                                        
   11584:	e1a01008 	mov	r1, r8                                        
   11588:	e59d2094 	ldr	r2, [sp, #148]	; 0x94                         
   1158c:	ebfffe16 	bl	10dec <rtems_rfs_inode_alloc>                  
  if (rc > 0)                                                         
   11590:	e2509000 	subs	r9, r0, #0                                   
   11594:	cafffff2 	bgt	11564 <rtems_rfs_inode_create+0x114>          
    return rc;                                                        
                                                                      
  rc = rtems_rfs_inode_open (fs, *ino, &inode, true);                 
   11598:	e59dc094 	ldr	ip, [sp, #148]	; 0x94                         
   1159c:	e1a0000a 	mov	r0, sl                                        
   115a0:	e59c1000 	ldr	r1, [ip]                                      
   115a4:	e28d2038 	add	r2, sp, #56	; 0x38                            
   115a8:	e3a03001 	mov	r3, #1                                        
   115ac:	ebfffe45 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   115b0:	e2509000 	subs	r9, r0, #0                                   
   115b4:	da000004 	ble	115cc <rtems_rfs_inode_create+0x17c>          
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_inode_free (fs, *ino);                                  
   115b8:	e59dc094 	ldr	ip, [sp, #148]	; 0x94                         <== NOT EXECUTED
   115bc:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   115c0:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
   115c4:	ebfffe12 	bl	10e14 <rtems_rfs_inode_free>                   <== NOT EXECUTED
    return rc;                                                        
   115c8:	eaffffe5 	b	11564 <rtems_rfs_inode_create+0x114>            <== NOT EXECUTED
  {                                                                   
    rtems_rfs_inode_free (fs, *ino);                                  
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);    
   115cc:	e99d1008 	ldmib	sp, {r3, ip}                                
   115d0:	e28d0038 	add	r0, sp, #56	; 0x38                            
   115d4:	e1a0100b 	mov	r1, fp                                        
   115d8:	e1a02007 	mov	r2, r7                                        
   115dc:	e58dc000 	str	ip, [sp]                                      
   115e0:	ebffff3c 	bl	112d8 <rtems_rfs_inode_initialise>             
  if (rc > 0)                                                         
   115e4:	e2509000 	subs	r9, r0, #0                                   
   115e8:	ca00000f 	bgt	1162c <rtems_rfs_inode_create+0x1dc>          
  /*                                                                  
   * Only handle the specifics of a directory. Let caller handle the others.
   *                                                                  
   * The inode delete will free the inode.                            
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
   115ec:	e3560901 	cmp	r6, #16384	; 0x4000                           
   115f0:	0a00003d 	beq	116ec <rtems_rfs_inode_create+0x29c>          
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
   115f4:	e1a0000a 	mov	r0, sl                                        
   115f8:	e1a01008 	mov	r1, r8                                        
   115fc:	e28d2010 	add	r2, sp, #16                                   
   11600:	e3a03001 	mov	r3, #1                                        
   11604:	ebfffe2f 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   11608:	e2509000 	subs	r9, r0, #0                                   
   1160c:	da00000e 	ble	1164c <rtems_rfs_inode_create+0x1fc>          
  {                                                                   
    rtems_rfs_inode_delete (fs, &inode);                              
   11610:	e28d1038 	add	r1, sp, #56	; 0x38                            <== NOT EXECUTED
   11614:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11618:	ebfffecb 	bl	1114c <rtems_rfs_inode_delete>                 <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &inode);                               
   1161c:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11620:	e28d1038 	add	r1, sp, #56	; 0x38                            <== NOT EXECUTED
   11624:	ebfffea1 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return rc;                                                        
   11628:	eaffffcd 	b	11564 <rtems_rfs_inode_create+0x114>            <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_initialise (&inode, links, mode, uid, gid);    
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
   1162c:	e28d1038 	add	r1, sp, #56	; 0x38                            <== NOT EXECUTED
   11630:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11634:	ebfffe9d 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    rtems_rfs_inode_free (fs, *ino);                                  
   11638:	e59dc094 	ldr	ip, [sp, #148]	; 0x94                         <== NOT EXECUTED
   1163c:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11640:	e59c1000 	ldr	r1, [ip]                                      <== NOT EXECUTED
   11644:	ebfffdf2 	bl	10e14 <rtems_rfs_inode_free>                   <== NOT EXECUTED
    return rc;                                                        
   11648:	eaffffc5 	b	11564 <rtems_rfs_inode_create+0x114>            <== NOT EXECUTED
    rtems_rfs_inode_delete (fs, &inode);                              
    rtems_rfs_inode_close (fs, &inode);                               
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
   1164c:	e59d3094 	ldr	r3, [sp, #148]	; 0x94                         
   11650:	e593c000 	ldr	ip, [r3]                                      
   11654:	e1a0000a 	mov	r0, sl                                        
   11658:	e28d1010 	add	r1, sp, #16                                   
   1165c:	e1a02005 	mov	r2, r5                                        
   11660:	e1a03004 	mov	r3, r4                                        
   11664:	e58dc000 	str	ip, [sp]                                      
   11668:	eb00252c 	bl	1ab20 <rtems_rfs_dir_add_entry>                
  if (rc > 0)                                                         
   1166c:	e2509000 	subs	r9, r0, #0                                   
   11670:	ca000031 	bgt	1173c <rtems_rfs_inode_create+0x2ec>          
                                                                      
  /*                                                                  
   * If the node is a directory update the parent link count as the   
   * new directory has the '..' link that points to the parent.       
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
   11674:	e3560901 	cmp	r6, #16384	; 0x4000                           
   11678:	1a00000f 	bne	116bc <rtems_rfs_inode_create+0x26c>          
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
   1167c:	e59d201c 	ldr	r2, [sp, #28]                                 
   11680:	e5d21000 	ldrb	r1, [r2]                                     
   11684:	e5d23001 	ldrb	r3, [r2, #1]                                 
   11688:	e1833401 	orr	r3, r3, r1, lsl #8                            
  if (links == 0xffff)                                                
    links = 0;                                                        
   1168c:	e59f1104 	ldr	r1, [pc, #260]	; 11798 <rtems_rfs_inode_create+0x348>
   11690:	e1530001 	cmp	r3, r1                                        
   11694:	03a03000 	moveq	r3, #0                                      
    rtems_rfs_inode_set_links (&parent_inode,                         
   11698:	e2833001 	add	r3, r3, #1                                    
   1169c:	e1a03803 	lsl	r3, r3, #16                                   
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
   116a0:	e1a01c23 	lsr	r1, r3, #24                                   
   116a4:	e5c21000 	strb	r1, [r2]                                     
   116a8:	e59d201c 	ldr	r2, [sp, #28]                                 
   116ac:	e1a03823 	lsr	r3, r3, #16                                   
   116b0:	e5c23001 	strb	r3, [r2, #1]                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   116b4:	e3a03001 	mov	r3, #1                                        
   116b8:	e5cd3020 	strb	r3, [sp, #32]                                
                               rtems_rfs_inode_get_links (&parent_inode) + 1);
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
   116bc:	e28d1010 	add	r1, sp, #16                                   
   116c0:	e1a0000a 	mov	r0, sl                                        
   116c4:	ebfffe79 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   116c8:	e2509000 	subs	r9, r0, #0                                   
  {                                                                   
    rtems_rfs_inode_delete (fs, &inode);                              
   116cc:	e28d1038 	add	r1, sp, #56	; 0x38                            
   116d0:	e1a0000a 	mov	r0, sl                                        
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    rtems_rfs_inode_set_links (&parent_inode,                         
                               rtems_rfs_inode_get_links (&parent_inode) + 1);
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
  if (rc > 0)                                                         
   116d4:	da000022 	ble	11764 <rtems_rfs_inode_create+0x314>          
  {                                                                   
    rtems_rfs_inode_delete (fs, &inode);                              
   116d8:	ebfffe9b 	bl	1114c <rtems_rfs_inode_delete>                 <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &inode);                               
   116dc:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   116e0:	e28d1038 	add	r1, sp, #56	; 0x38                            <== NOT EXECUTED
   116e4:	ebfffe71 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return rc;                                                        
   116e8:	eaffff9d 	b	11564 <rtems_rfs_inode_create+0x114>            <== NOT EXECUTED
   *                                                                  
   * The inode delete will free the inode.                            
   */                                                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
  {                                                                   
    rc = rtems_rfs_dir_add_entry (fs, &inode, ".", 1, *ino);          
   116ec:	e59d3094 	ldr	r3, [sp, #148]	; 0x94                         
   116f0:	e593c000 	ldr	ip, [r3]                                      
   116f4:	e1a0000a 	mov	r0, sl                                        
   116f8:	e28d1038 	add	r1, sp, #56	; 0x38                            
   116fc:	e59f2098 	ldr	r2, [pc, #152]	; 1179c <rtems_rfs_inode_create+0x34c>
   11700:	e3a03001 	mov	r3, #1                                        
   11704:	e58dc000 	str	ip, [sp]                                      
   11708:	eb002504 	bl	1ab20 <rtems_rfs_dir_add_entry>                
    if (rc == 0)                                                      
   1170c:	e2509000 	subs	r9, r0, #0                                   
   11710:	1a000006 	bne	11730 <rtems_rfs_inode_create+0x2e0>          
      rc = rtems_rfs_dir_add_entry (fs, &inode, "..", 2, parent);     
   11714:	e1a0000a 	mov	r0, sl                                        
   11718:	e28d1038 	add	r1, sp, #56	; 0x38                            
   1171c:	e59f207c 	ldr	r2, [pc, #124]	; 117a0 <rtems_rfs_inode_create+0x350>
   11720:	e3a03002 	mov	r3, #2                                        
   11724:	e58d8000 	str	r8, [sp]                                      
   11728:	eb0024fc 	bl	1ab20 <rtems_rfs_dir_add_entry>                
   1172c:	e1a09000 	mov	r9, r0                                        
    if (rc > 0)                                                       
   11730:	e3590000 	cmp	r9, #0                                        
   11734:	daffffae 	ble	115f4 <rtems_rfs_inode_create+0x1a4>          
   11738:	eaffffb4 	b	11610 <rtems_rfs_inode_create+0x1c0>            <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, *ino);
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_inode_delete (fs, &inode);                              
   1173c:	e28d1038 	add	r1, sp, #56	; 0x38                            <== NOT EXECUTED
   11740:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11744:	ebfffe80 	bl	1114c <rtems_rfs_inode_delete>                 <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &inode);                               
   11748:	e28d1038 	add	r1, sp, #56	; 0x38                            <== NOT EXECUTED
   1174c:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11750:	ebfffe56 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &parent_inode);                        
   11754:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   11758:	e28d1010 	add	r1, sp, #16                                   <== NOT EXECUTED
   1175c:	ebfffe53 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return rc;                                                        
   11760:	eaffff7f 	b	11564 <rtems_rfs_inode_create+0x114>            <== NOT EXECUTED
    rtems_rfs_inode_delete (fs, &inode);                              
    rtems_rfs_inode_close (fs, &inode);                               
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11764:	ebfffe51 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   11768:	e2509000 	subs	r9, r0, #0                                   
  {                                                                   
    rtems_rfs_inode_free (fs, *ino);                                  
    return rc;                                                        
  }                                                                   
                                                                      
  return 0;                                                           
   1176c:	d3a09000 	movle	r9, #0                                      
    rtems_rfs_inode_close (fs, &inode);                               
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
   11770:	caffff90 	bgt	115b8 <rtems_rfs_inode_create+0x168>          
   11774:	eaffff7a 	b	11564 <rtems_rfs_inode_create+0x114>            
                                                                      

0001114c <rtems_rfs_inode_delete>: } int rtems_rfs_inode_delete (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle) {
   1114c:	e92d4030 	push	{r4, r5, lr}                                 
   11150:	e1a05000 	mov	r5, r0                                        
   11154:	e24dd050 	sub	sp, sp, #80	; 0x50                            
   11158:	e1a04001 	mov	r4, r1                                        
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_DELETE))                 
   1115c:	e3a00502 	mov	r0, #8388608	; 0x800000                       
   11160:	e3a01000 	mov	r1, #0                                        
   11164:	eb0005b1 	bl	12830 <rtems_rfs_trace>                        
   11168:	e3500000 	cmp	r0, #0                                        
   1116c:	0a000007 	beq	11190 <rtems_rfs_inode_delete+0x44>           
    printf("rtems-rfs: inode-delete: ino:%" PRIu32 " loaded:%s\n",    
   11170:	e594c00c 	ldr	ip, [r4, #12]                                 <== NOT EXECUTED
   11174:	e59f30a0 	ldr	r3, [pc, #160]	; 1121c <rtems_rfs_inode_delete+0xd0><== NOT EXECUTED
   11178:	e35c0000 	cmp	ip, #0                                        <== NOT EXECUTED
   1117c:	e59f209c 	ldr	r2, [pc, #156]	; 11220 <rtems_rfs_inode_delete+0xd4><== NOT EXECUTED
   11180:	e59f009c 	ldr	r0, [pc, #156]	; 11224 <rtems_rfs_inode_delete+0xd8><== NOT EXECUTED
   11184:	e5941008 	ldr	r1, [r4, #8]                                  <== NOT EXECUTED
   11188:	11a02003 	movne	r2, r3                                      <== NOT EXECUTED
   1118c:	eb003cc4 	bl	204a4 <printf>                                 <== NOT EXECUTED
           rtems_rfs_inode_ino (handle),                              
           rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");        
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
   11190:	e594000c 	ldr	r0, [r4, #12]                                 
   11194:	e3500000 	cmp	r0, #0                                        
   11198:	0a000004 	beq	111b0 <rtems_rfs_inode_delete+0x64>           
    rtems_rfs_block_map map;                                          
                                                                      
    /*                                                                
     * Free the ino number.                                           
     */                                                               
    rc = rtems_rfs_inode_free (fs, handle->ino);                      
   1119c:	e1a00005 	mov	r0, r5                                        
   111a0:	e5941008 	ldr	r1, [r4, #8]                                  
   111a4:	ebffff1a 	bl	10e14 <rtems_rfs_inode_free>                   
    if (rc > 0)                                                       
   111a8:	e3500000 	cmp	r0, #0                                        
   111ac:	da000001 	ble	111b8 <rtems_rfs_inode_delete+0x6c>           
      handle->loads = 0;                                              
      handle->node = NULL;                                            
    }                                                                 
  }                                                                   
  return rc;                                                          
}                                                                     
   111b0:	e28dd050 	add	sp, sp, #80	; 0x50                            
   111b4:	e8bd8030 	pop	{r4, r5, pc}                                  
      return rc;                                                      
                                                                      
    /*                                                                
     * Free the blocks the inode may have attached.                   
     */                                                               
    rc = rtems_rfs_block_map_open (fs, handle, &map);                 
   111b8:	e1a00005 	mov	r0, r5                                        
   111bc:	e1a01004 	mov	r1, r4                                        
   111c0:	e1a0200d 	mov	r2, sp                                        
   111c4:	eb001f5b 	bl	18f38 <rtems_rfs_block_map_open>               
    if (rc == 0)                                                      
   111c8:	e3500000 	cmp	r0, #0                                        
   111cc:	1afffff7 	bne	111b0 <rtems_rfs_inode_delete+0x64>           
    {                                                                 
      int rrc;                                                        
      rrc = rtems_rfs_block_map_free_all (fs, &map);                  
   111d0:	e1a0100d 	mov	r1, sp                                        
   111d4:	e1a00005 	mov	r0, r5                                        
   111d8:	eb002263 	bl	19b6c <rtems_rfs_block_map_free_all>           
      rc = rtems_rfs_block_map_close (fs, &map);                      
   111dc:	e1a0100d 	mov	r1, sp                                        
   111e0:	e1a00005 	mov	r0, r5                                        
   111e4:	eb001fad 	bl	190a0 <rtems_rfs_block_map_close>              
      if (rc > 0)                                                     
        rrc = rc;                                                     
      memset (handle->node, 0xff, RTEMS_RFS_INODE_SIZE);              
   111e8:	e3a010ff 	mov	r1, #255	; 0xff                               
   111ec:	e3a02038 	mov	r2, #56	; 0x38                                
   111f0:	e594000c 	ldr	r0, [r4, #12]                                 
   111f4:	eb003c39 	bl	202e0 <memset>                                 
      rtems_rfs_buffer_mark_dirty (&handle->buffer);                  
   111f8:	e3a03001 	mov	r3, #1                                        
   111fc:	e1a01004 	mov	r1, r4                                        
   11200:	e5e13010 	strb	r3, [r1, #16]!                               
      /*                                                              
       * Do the release here to avoid the ctime field being set on a  
       * close. Also if there loads is greater then one then other loads
       * active. Forcing the loads count to 0.                        
       */                                                             
      rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);     
   11204:	e1a00005 	mov	r0, r5                                        
   11208:	eb0022bc 	bl	19d00 <rtems_rfs_buffer_handle_release>        
      handle->loads = 0;                                              
   1120c:	e3a03000 	mov	r3, #0                                        
   11210:	e5843024 	str	r3, [r4, #36]	; 0x24                          
      handle->node = NULL;                                            
   11214:	e584300c 	str	r3, [r4, #12]                                 
   11218:	eaffffe4 	b	111b0 <rtems_rfs_inode_delete+0x64>             
                                                                      

00010e20 <rtems_rfs_inode_load>: } int rtems_rfs_inode_load (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle) {
   10e20:	e92d4030 	push	{r4, r5, lr}                                 
   10e24:	e1a05000 	mov	r5, r0                                        
   10e28:	e1a04001 	mov	r4, r1                                        
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_LOAD))                   
   10e2c:	e3a00601 	mov	r0, #1048576	; 0x100000                       
   10e30:	e3a01000 	mov	r1, #0                                        
   10e34:	eb00067d 	bl	12830 <rtems_rfs_trace>                        
   10e38:	e3500000 	cmp	r0, #0                                        
   10e3c:	0a000008 	beq	10e64 <rtems_rfs_inode_load+0x44>             
    printf ("rtems-rfs: inode-load: ino=%" PRIu32 " loads=%i loaded=%s\n",
   10e40:	e594e00c 	ldr	lr, [r4, #12]                                 <== NOT EXECUTED
   10e44:	e59fc070 	ldr	ip, [pc, #112]	; 10ebc <rtems_rfs_inode_load+0x9c><== NOT EXECUTED
   10e48:	e35e0000 	cmp	lr, #0                                        <== NOT EXECUTED
   10e4c:	e59f306c 	ldr	r3, [pc, #108]	; 10ec0 <rtems_rfs_inode_load+0xa0><== NOT EXECUTED
   10e50:	e59f006c 	ldr	r0, [pc, #108]	; 10ec4 <rtems_rfs_inode_load+0xa4><== NOT EXECUTED
   10e54:	e5941008 	ldr	r1, [r4, #8]                                  <== NOT EXECUTED
   10e58:	e5942024 	ldr	r2, [r4, #36]	; 0x24                          <== NOT EXECUTED
   10e5c:	11a0300c 	movne	r3, ip                                      <== NOT EXECUTED
   10e60:	eb003d8f 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * An inode does not move so once loaded no need to do again.       
   */                                                                 
                                                                      
  if (!rtems_rfs_inode_is_loaded (handle))                            
   10e64:	e594300c 	ldr	r3, [r4, #12]                                 
   10e68:	e3530000 	cmp	r3, #0                                        
   10e6c:	0a000004 	beq	10e84 <rtems_rfs_inode_load+0x64>             
                                                                      
    handle->node = rtems_rfs_buffer_data (&handle->buffer);           
    handle->node += handle->offset;                                   
  }                                                                   
                                                                      
  handle->loads++;                                                    
   10e70:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   10e74:	e2833001 	add	r3, r3, #1                                    
   10e78:	e5843024 	str	r3, [r4, #36]	; 0x24                          
                                                                      
  return 0;                                                           
   10e7c:	e3a00000 	mov	r0, #0                                        
}                                                                     
   10e80:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      
  if (!rtems_rfs_inode_is_loaded (handle))                            
  {                                                                   
    int rc;                                                           
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs,&handle->buffer,         
   10e84:	e1a00005 	mov	r0, r5                                        
   10e88:	e2841010 	add	r1, r4, #16                                   
   10e8c:	e594201c 	ldr	r2, [r4, #28]                                 
   10e90:	e3a03001 	mov	r3, #1                                        
   10e94:	eb002412 	bl	19ee4 <rtems_rfs_buffer_handle_request>        
                                          handle->block, true);       
    if (rc > 0)                                                       
   10e98:	e3500000 	cmp	r0, #0                                        
   10e9c:	c8bd8030 	popgt	{r4, r5, pc}                                
      return rc;                                                      
                                                                      
    handle->node = rtems_rfs_buffer_data (&handle->buffer);           
   10ea0:	e5942018 	ldr	r2, [r4, #24]                                 
    handle->node += handle->offset;                                   
   10ea4:	e5943020 	ldr	r3, [r4, #32]                                 
   10ea8:	e592201c 	ldr	r2, [r2, #28]                                 
   10eac:	e0633183 	rsb	r3, r3, r3, lsl #3                            
   10eb0:	e0823183 	add	r3, r2, r3, lsl #3                            
   10eb4:	e584300c 	str	r3, [r4, #12]                                 
   10eb8:	eaffffec 	b	10e70 <rtems_rfs_inode_load+0x50>               
                                                                      

00010ec8 <rtems_rfs_inode_open>: int rtems_rfs_inode_open (rtems_rfs_file_system* fs, rtems_rfs_ino ino, rtems_rfs_inode_handle* handle, bool load) {
   10ec8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   10ecc:	e1a05000 	mov	r5, r0                                        
   10ed0:	e1a04001 	mov	r4, r1                                        
  int group;                                                          
  int gino;                                                           
  int index;                                                          
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
   10ed4:	e3a00701 	mov	r0, #262144	; 0x40000                         
   10ed8:	e3a01000 	mov	r1, #0                                        
int                                                                   
rtems_rfs_inode_open (rtems_rfs_file_system*  fs,                     
                      rtems_rfs_ino           ino,                    
                      rtems_rfs_inode_handle* handle,                 
                      bool                    load)                   
{                                                                     
   10edc:	e1a06002 	mov	r6, r2                                        
   10ee0:	e20370ff 	and	r7, r3, #255	; 0xff                           
  int group;                                                          
  int gino;                                                           
  int index;                                                          
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
   10ee4:	eb000651 	bl	12830 <rtems_rfs_trace>                        
   10ee8:	e3500000 	cmp	r0, #0                                        
   10eec:	1a000008 	bne	10f14 <rtems_rfs_inode_open+0x4c>             
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
                                                                      
  if (ino == RTEMS_RFS_EMPTY_INO)                                     
   10ef0:	e3540000 	cmp	r4, #0                                        
    return EINVAL;                                                    
   10ef4:	03a00016 	moveq	r0, #22                                     
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
                                                                      
  if (ino == RTEMS_RFS_EMPTY_INO)                                     
   10ef8:	08bd8ff0 	popeq	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
    return EINVAL;                                                    
                                                                      
  if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))          
   10efc:	e5953014 	ldr	r3, [r5, #20]                                 
   10f00:	e2448001 	sub	r8, r4, #1                                    
   10f04:	e1580003 	cmp	r8, r3                                        
   10f08:	9a000008 	bls	10f30 <rtems_rfs_inode_open+0x68>             
    return EINVAL;                                                    
   10f0c:	e3a00016 	mov	r0, #22                                       <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);            
  if ((rc == 0) && load)                                              
    rc = rtems_rfs_inode_load (fs, handle);                           
  return rc;                                                          
}                                                                     
   10f10:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
  int gino;                                                           
  int index;                                                          
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
   10f14:	e59f00a0 	ldr	r0, [pc, #160]	; 10fbc <rtems_rfs_inode_open+0xf4><== NOT EXECUTED
   10f18:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   10f1c:	eb003d60 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
  if (ino == RTEMS_RFS_EMPTY_INO)                                     
   10f20:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
    return EINVAL;                                                    
   10f24:	03a00016 	moveq	r0, #22                                     <== NOT EXECUTED
  int rc;                                                             
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_OPEN))                   
    printf ("rtems-rfs: inode-open: ino: %" PRIu32 "\n", ino);        
                                                                      
  if (ino == RTEMS_RFS_EMPTY_INO)                                     
   10f28:	08bd8ff0 	popeq	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        <== NOT EXECUTED
   10f2c:	eafffff2 	b	10efc <rtems_rfs_inode_open+0x34>               <== NOT EXECUTED
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
   10f30:	e595902c 	ldr	r9, [r5, #44]	; 0x2c                          
                                                                      
  if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))          
    return EINVAL;                                                    
                                                                      
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
   10f34:	e3a0a000 	mov	sl, #0                                        
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
   10f38:	e1a01009 	mov	r1, r9                                        
    return EINVAL;                                                    
                                                                      
  if ((ino - RTEMS_RFS_ROOT_INO) > rtems_rfs_fs_inodes (fs))          
    return EINVAL;                                                    
                                                                      
  handle->ino = ino;                                                  
   10f3c:	e5864008 	str	r4, [r6, #8]                                  
  handle->node = NULL;                                                
   10f40:	e586a00c 	str	sl, [r6, #12]                                 
  handle->loads = 0;                                                  
   10f44:	e586a024 	str	sl, [r6, #36]	; 0x24                          
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
   10f48:	e1a00008 	mov	r0, r8                                        
   10f4c:	eb007029 	bl	2cff8 <__umodsi3>                              
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
   10f50:	e5954030 	ldr	r4, [r5, #48]	; 0x30                          
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
   10f54:	e1a01004 	mov	r1, r4                                        
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
   10f58:	e1a0b000 	mov	fp, r0                                        
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
   10f5c:	eb007025 	bl	2cff8 <__umodsi3>                              
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
   10f60:	e1a01009 	mov	r1, r9                                        
  gino  = gino % fs->group_inodes;                                    
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
   10f64:	e5860020 	str	r0, [r6, #32]                                 
  handle->ino = ino;                                                  
  handle->node = NULL;                                                
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
   10f68:	e1a00008 	mov	r0, r8                                        
   10f6c:	ebffc2cd 	bl	1aa8 <__aeabi_uidiv>                           
  gino  = gino % fs->group_inodes;                                    
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
   10f70:	e5953020 	ldr	r3, [r5, #32]                                 
   10f74:	e0800100 	add	r0, r0, r0, lsl #2                            
  handle->loads = 0;                                                  
                                                                      
  gino  = ino - RTEMS_RFS_ROOT_INO;                                   
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
   10f78:	e7933200 	ldr	r3, [r3, r0, lsl #4]                          
   10f7c:	e1a01004 	mov	r1, r4                                        
   10f80:	e1a0000b 	mov	r0, fp                                        
   10f84:	e2834002 	add	r4, r3, #2                                    
   10f88:	ebffc2c6 	bl	1aa8 <__aeabi_uidiv>                           
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
                                                                      
  rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);            
  if ((rc == 0) && load)                                              
   10f8c:	e157000a 	cmp	r7, sl                                        
  group = gino / fs->group_inodes;                                    
  gino  = gino % fs->group_inodes;                                    
  index = (gino / fs->inodes_per_block) + RTEMS_RFS_GROUP_INODE_BLOCK;
                                                                      
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
   10f90:	e0840000 	add	r0, r4, r0                                    
   10f94:	e586001c 	str	r0, [r6, #28]                                 
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   10f98:	e5c6a010 	strb	sl, [r6, #16]                                
  handle->bnum  = 0;                                                  
   10f9c:	e586a014 	str	sl, [r6, #20]                                 
  handle->buffer = NULL;                                              
   10fa0:	e586a018 	str	sl, [r6, #24]                                 
                                                                      
  rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);            
   10fa4:	01a00007 	moveq	r0, r7                                      
  if ((rc == 0) && load)                                              
   10fa8:	08bd8ff0 	popeq	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
    rc = rtems_rfs_inode_load (fs, handle);                           
   10fac:	e1a00005 	mov	r0, r5                                        
   10fb0:	e1a01006 	mov	r1, r6                                        
  return rc;                                                          
}                                                                     
   10fb4:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          
  handle->offset = gino % fs->inodes_per_block;                       
  handle->block  = rtems_rfs_group_block (&fs->groups[group], index); 
                                                                      
  rc = rtems_rfs_buffer_handle_open (fs, &handle->buffer);            
  if ((rc == 0) && load)                                              
    rc = rtems_rfs_inode_load (fs, handle);                           
   10fb8:	eaffff98 	b	10e20 <rtems_rfs_inode_load>                    
                                                                      

00011228 <rtems_rfs_inode_time_stamp_now>: rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle, bool atime, bool mtime) { time_t now; if (!rtems_rfs_inode_is_loaded (handle))
   11228:	e590300c 	ldr	r3, [r0, #12]                                 
   1122c:	e3530000 	cmp	r3, #0                                        
                                                                      
int                                                                   
rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle,       
                                bool                    atime,        
                                bool                    mtime)        
{                                                                     
   11230:	e92d4070 	push	{r4, r5, r6, lr}                             
   11234:	e1a04000 	mov	r4, r0                                        
   11238:	e20160ff 	and	r6, r1, #255	; 0xff                           
   1123c:	e20250ff 	and	r5, r2, #255	; 0xff                           
  time_t now;                                                         
  if (!rtems_rfs_inode_is_loaded (handle))                            
    return ENXIO;                                                     
   11240:	03a00006 	moveq	r0, #6                                      
rtems_rfs_inode_time_stamp_now (rtems_rfs_inode_handle* handle,       
                                bool                    atime,        
                                bool                    mtime)        
{                                                                     
  time_t now;                                                         
  if (!rtems_rfs_inode_is_loaded (handle))                            
   11244:	08bd8070 	popeq	{r4, r5, r6, pc}                            
    return ENXIO;                                                     
  now = time (NULL);                                                  
   11248:	e3a00000 	mov	r0, #0                                        
   1124c:	eb004ccf 	bl	24590 <time>                                   
  if (atime)                                                          
   11250:	e3560000 	cmp	r6, #0                                        
   11254:	0a00000c 	beq	1128c <rtems_rfs_inode_time_stamp_now+0x64>   
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
   11258:	e594300c 	ldr	r3, [r4, #12]                                 
   1125c:	e1a02c20 	lsr	r2, r0, #24                                   
   11260:	e5c32010 	strb	r2, [r3, #16]                                
   11264:	e594300c 	ldr	r3, [r4, #12]                                 
   11268:	e1a02820 	lsr	r2, r0, #16                                   
   1126c:	e5c32011 	strb	r2, [r3, #17]                                
   11270:	e594300c 	ldr	r3, [r4, #12]                                 
   11274:	e1a02420 	lsr	r2, r0, #8                                    
   11278:	e5c32012 	strb	r2, [r3, #18]                                
   1127c:	e594300c 	ldr	r3, [r4, #12]                                 
   11280:	e5c30013 	strb	r0, [r3, #19]                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   11284:	e3a03001 	mov	r3, #1                                        
   11288:	e5c43010 	strb	r3, [r4, #16]                                
    rtems_rfs_inode_set_atime (handle, now);                          
  if (mtime)                                                          
   1128c:	e3550000 	cmp	r5, #0                                        
   11290:	0a00000e 	beq	112d0 <rtems_rfs_inode_time_stamp_now+0xa8>   
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   11294:	e594300c 	ldr	r3, [r4, #12]                                 
   11298:	e1a02c20 	lsr	r2, r0, #24                                   
   1129c:	e5c32014 	strb	r2, [r3, #20]                                
   112a0:	e594300c 	ldr	r3, [r4, #12]                                 
   112a4:	e1a02820 	lsr	r2, r0, #16                                   
   112a8:	e5c32015 	strb	r2, [r3, #21]                                
   112ac:	e594300c 	ldr	r3, [r4, #12]                                 
   112b0:	e1a02420 	lsr	r2, r0, #8                                    
   112b4:	e5c32016 	strb	r2, [r3, #22]                                
   112b8:	e594300c 	ldr	r3, [r4, #12]                                 
   112bc:	e5c30017 	strb	r0, [r3, #23]                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   112c0:	e3a03001 	mov	r3, #1                                        
    rtems_rfs_inode_set_mtime (handle, now);                          
  return 0;                                                           
   112c4:	e3a00000 	mov	r0, #0                                        
   112c8:	e5c43010 	strb	r3, [r4, #16]                                
   112cc:	e8bd8070 	pop	{r4, r5, r6, pc}                              
   112d0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
}                                                                     
   112d4:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

00010fc0 <rtems_rfs_inode_unload>: int rtems_rfs_inode_unload (rtems_rfs_file_system* fs, rtems_rfs_inode_handle* handle, bool update_ctime) {
   10fc0:	e92d4070 	push	{r4, r5, r6, lr}                             
   10fc4:	e1a05000 	mov	r5, r0                                        
   10fc8:	e1a04001 	mov	r4, r1                                        
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))                 
   10fcc:	e3a00602 	mov	r0, #2097152	; 0x200000                       
   10fd0:	e3a01000 	mov	r1, #0                                        
                                                                      
int                                                                   
rtems_rfs_inode_unload (rtems_rfs_file_system*  fs,                   
                        rtems_rfs_inode_handle* handle,               
                        bool                    update_ctime)         
{                                                                     
   10fd4:	e20260ff 	and	r6, r2, #255	; 0xff                           
  int rc = 0;                                                         
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_INODE_UNLOAD))                 
   10fd8:	eb000614 	bl	12830 <rtems_rfs_trace>                        
   10fdc:	e3500000 	cmp	r0, #0                                        
   10fe0:	0a000008 	beq	11008 <rtems_rfs_inode_unload+0x48>           
    printf ("rtems-rfs: inode-unload: ino=%" PRIu32 " loads=%i loaded=%s\n",
   10fe4:	e594e00c 	ldr	lr, [r4, #12]                                 <== NOT EXECUTED
   10fe8:	e59fc0b4 	ldr	ip, [pc, #180]	; 110a4 <rtems_rfs_inode_unload+0xe4><== NOT EXECUTED
   10fec:	e35e0000 	cmp	lr, #0                                        <== NOT EXECUTED
   10ff0:	e59f30b0 	ldr	r3, [pc, #176]	; 110a8 <rtems_rfs_inode_unload+0xe8><== NOT EXECUTED
   10ff4:	e59f00b0 	ldr	r0, [pc, #176]	; 110ac <rtems_rfs_inode_unload+0xec><== NOT EXECUTED
   10ff8:	e5941008 	ldr	r1, [r4, #8]                                  <== NOT EXECUTED
   10ffc:	e5942024 	ldr	r2, [r4, #36]	; 0x24                          <== NOT EXECUTED
   11000:	11a0300c 	movne	r3, ip                                      <== NOT EXECUTED
   11004:	eb003d26 	bl	204a4 <printf>                                 <== NOT EXECUTED
            handle->ino, handle->loads,                               
            rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");       
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
   11008:	e594000c 	ldr	r0, [r4, #12]                                 
   1100c:	e3500000 	cmp	r0, #0                                        
   11010:	08bd8070 	popeq	{r4, r5, r6, pc}                            
  {                                                                   
    if (handle->loads == 0)                                           
   11014:	e5943024 	ldr	r3, [r4, #36]	; 0x24                          
   11018:	e3530000 	cmp	r3, #0                                        
      return EIO;                                                     
   1101c:	03a00005 	moveq	r0, #5                                      
            handle->ino, handle->loads,                               
            rtems_rfs_inode_is_loaded (handle) ? "yes" : "no");       
                                                                      
  if (rtems_rfs_inode_is_loaded (handle))                             
  {                                                                   
    if (handle->loads == 0)                                           
   11020:	08bd8070 	popeq	{r4, r5, r6, pc}                            
      return EIO;                                                     
                                                                      
    handle->loads--;                                                  
   11024:	e2430001 	sub	r0, r3, #1                                    
                                                                      
    if (handle->loads == 0)                                           
   11028:	e3500000 	cmp	r0, #0                                        
  if (rtems_rfs_inode_is_loaded (handle))                             
  {                                                                   
    if (handle->loads == 0)                                           
      return EIO;                                                     
                                                                      
    handle->loads--;                                                  
   1102c:	e5840024 	str	r0, [r4, #36]	; 0x24                          
                                                                      
    if (handle->loads == 0)                                           
   11030:	1a00000a 	bne	11060 <rtems_rfs_inode_unload+0xa0>           
    {                                                                 
      /*                                                              
       * If the buffer is dirty it will be release. Also set the ctime.
       */                                                             
      if (rtems_rfs_buffer_dirty (&handle->buffer) && update_ctime)   
   11034:	e5d43010 	ldrb	r3, [r4, #16]                                
   11038:	e3530000 	cmp	r3, #0                                        
   1103c:	0a000001 	beq	11048 <rtems_rfs_inode_unload+0x88>           
   11040:	e3560000 	cmp	r6, #0                                        
   11044:	1a000007 	bne	11068 <rtems_rfs_inode_unload+0xa8>           
        rtems_rfs_inode_set_ctime (handle, time (NULL));              
      rc = rtems_rfs_buffer_handle_release (fs, &handle->buffer);     
   11048:	e1a00005 	mov	r0, r5                                        
   1104c:	e2841010 	add	r1, r4, #16                                   
   11050:	eb00232a 	bl	19d00 <rtems_rfs_buffer_handle_release>        
      handle->node = NULL;                                            
   11054:	e3a03000 	mov	r3, #0                                        
   11058:	e584300c 	str	r3, [r4, #12]                                 
   1105c:	e8bd8070 	pop	{r4, r5, r6, pc}                              
int                                                                   
rtems_rfs_inode_unload (rtems_rfs_file_system*  fs,                   
                        rtems_rfs_inode_handle* handle,               
                        bool                    update_ctime)         
{                                                                     
  int rc = 0;                                                         
   11060:	e3a00000 	mov	r0, #0                                        
      handle->node = NULL;                                            
    }                                                                 
  }                                                                   
                                                                      
  return rc;                                                          
}                                                                     
   11064:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    {                                                                 
      /*                                                              
       * If the buffer is dirty it will be release. Also set the ctime.
       */                                                             
      if (rtems_rfs_buffer_dirty (&handle->buffer) && update_ctime)   
        rtems_rfs_inode_set_ctime (handle, time (NULL));              
   11068:	eb004d48 	bl	24590 <time>                                   
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_ctime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          ctime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->ctime, ctime);                  
   1106c:	e594300c 	ldr	r3, [r4, #12]                                 
   11070:	e1a02c20 	lsr	r2, r0, #24                                   
   11074:	e5c32018 	strb	r2, [r3, #24]                                
   11078:	e594300c 	ldr	r3, [r4, #12]                                 
   1107c:	e1a02820 	lsr	r2, r0, #16                                   
   11080:	e5c32019 	strb	r2, [r3, #25]                                
   11084:	e594300c 	ldr	r3, [r4, #12]                                 
   11088:	e1a02420 	lsr	r2, r0, #8                                    
   1108c:	e5c3201a 	strb	r2, [r3, #26]                                
   11090:	e594300c 	ldr	r3, [r4, #12]                                 
   11094:	e5c3001b 	strb	r0, [r3, #27]                                
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   11098:	e3a03001 	mov	r3, #1                                        
   1109c:	e5c43010 	strb	r3, [r4, #16]                                
   110a0:	eaffffe8 	b	11048 <rtems_rfs_inode_unload+0x88>             
                                                                      

0001d0d4 <rtems_rfs_link>: const char* name, int length, rtems_rfs_ino parent, rtems_rfs_ino target, bool link_dir) {
   1d0d4:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
   1d0d8:	e1a06000 	mov	r6, r0                                        
   1d0dc:	e24dd054 	sub	sp, sp, #84	; 0x54                            
   1d0e0:	e1a05001 	mov	r5, r1                                        
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
   1d0e4:	e3a00401 	mov	r0, #16777216	; 0x1000000                     
   1d0e8:	e3a01000 	mov	r1, #0                                        
                const char*            name,                          
                int                    length,                        
                rtems_rfs_ino          parent,                        
                rtems_rfs_ino          target,                        
                bool                   link_dir)                      
{                                                                     
   1d0ec:	e1a04002 	mov	r4, r2                                        
   1d0f0:	e1a07003 	mov	r7, r3                                        
   1d0f4:	e59da074 	ldr	sl, [sp, #116]	; 0x74                         
   1d0f8:	e5dd8078 	ldrb	r8, [sp, #120]	; 0x78                        
  rtems_rfs_inode_handle parent_inode;                                
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
   1d0fc:	ebffd5cb 	bl	12830 <rtems_rfs_trace>                        
   1d100:	e3500000 	cmp	r0, #0                                        
   1d104:	1a000045 	bne	1d220 <rtems_rfs_link+0x14c>                  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf ("(%" PRIu32 ")\n", target);                               
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, target, &target_inode, true);        
   1d108:	e1a00006 	mov	r0, r6                                        
   1d10c:	e1a0100a 	mov	r1, sl                                        
   1d110:	e28d202c 	add	r2, sp, #44	; 0x2c                            
   1d114:	e3a03001 	mov	r3, #1                                        
   1d118:	ebffcf6a 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1d11c:	e2509000 	subs	r9, r0, #0                                   
   1d120:	1a000034 	bne	1d1f8 <rtems_rfs_link+0x124>                  
                                                                      
  /*                                                                  
   * If the target inode is a directory and we cannot link directories
   * return a not supported error code.                               
   */                                                                 
  if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
   1d124:	e3580000 	cmp	r8, #0                                        
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d128:	e1a00006 	mov	r0, r6                                        
                                                                      
  /*                                                                  
   * If the target inode is a directory and we cannot link directories
   * return a not supported error code.                               
   */                                                                 
  if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
   1d12c:	1a000005 	bne	1d148 <rtems_rfs_link+0x74>                   
   1d130:	e59d3038 	ldr	r3, [sp, #56]	; 0x38                          
   1d134:	e5d33002 	ldrb	r3, [r3, #2]                                 
   1d138:	e1a03403 	lsl	r3, r3, #8                                    
   1d13c:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
   1d140:	e3530901 	cmp	r3, #16384	; 0x4000                           
   1d144:	0a000044 	beq	1d25c <rtems_rfs_link+0x188>                  
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
    return ENOTSUP;                                                   
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
   1d148:	e1a01007 	mov	r1, r7                                        
   1d14c:	e28d2004 	add	r2, sp, #4                                    
   1d150:	e3a03001 	mov	r3, #1                                        
   1d154:	ebffcf5b 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1d158:	e2509000 	subs	r9, r0, #0                                   
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d15c:	e1a00006 	mov	r0, r6                                        
    rtems_rfs_inode_close (fs, &target_inode);                        
    return ENOTSUP;                                                   
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
  if (rc)                                                             
   1d160:	1a00002b 	bne	1d214 <rtems_rfs_link+0x140>                  
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, target);
   1d164:	e28d1004 	add	r1, sp, #4                                    
   1d168:	e1a02005 	mov	r2, r5                                        
   1d16c:	e1a03004 	mov	r3, r4                                        
   1d170:	e58da000 	str	sl, [sp]                                      
   1d174:	ebfff669 	bl	1ab20 <rtems_rfs_dir_add_entry>                
  if (rc > 0)                                                         
   1d178:	e2509000 	subs	r9, r0, #0                                   
   1d17c:	ca000020 	bgt	1d204 <rtems_rfs_link+0x130>                  
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
   1d180:	e59d3038 	ldr	r3, [sp, #56]	; 0x38                          
   1d184:	e5d31000 	ldrb	r1, [r3]                                     
   1d188:	e5d32001 	ldrb	r2, [r3, #1]                                 
   1d18c:	e1822401 	orr	r2, r2, r1, lsl #8                            
  if (links == 0xffff)                                                
   1d190:	e59f10f4 	ldr	r1, [pc, #244]	; 1d28c <rtems_rfs_link+0x1b8> 
   1d194:	e1520001 	cmp	r2, r1                                        
   1d198:	12822001 	addne	r2, r2, #1                                  
   1d19c:	11a02802 	lslne	r2, r2, #16                                 
   1d1a0:	11a00822 	lsrne	r0, r2, #16                                 
   1d1a4:	03a02000 	moveq	r2, #0                                      
   1d1a8:	11a02c22 	lsrne	r2, r2, #24                                 
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
   1d1ac:	e5c32000 	strb	r2, [r3]                                     
   1d1b0:	e59d2038 	ldr	r2, [sp, #56]	; 0x38                          
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
  if (links == 0xffff)                                                
   1d1b4:	120000ff 	andne	r0, r0, #255	; 0xff                         
   1d1b8:	03a00001 	moveq	r0, #1                                      
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1d1bc:	e3a03001 	mov	r3, #1                                        
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
   1d1c0:	e5c20001 	strb	r0, [r2, #1]                                 
  }                                                                   
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode) + 1;              
  rtems_rfs_inode_set_links (&target_inode, links);                   
                                                                      
  rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);    
   1d1c4:	e1a01003 	mov	r1, r3                                        
   1d1c8:	e28d0004 	add	r0, sp, #4                                    
   1d1cc:	e1a02003 	mov	r2, r3                                        
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1d1d0:	e5cd303c 	strb	r3, [sp, #60]	; 0x3c                         
   1d1d4:	ebffd013 	bl	11228 <rtems_rfs_inode_time_stamp_now>         
  if (rc > 0)                                                         
   1d1d8:	e2509000 	subs	r9, r0, #0                                   
  {                                                                   
    rtems_rfs_inode_close (fs, &parent_inode);                        
   1d1dc:	e28d1004 	add	r1, sp, #4                                    
   1d1e0:	e1a00006 	mov	r0, r6                                        
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode) + 1;              
  rtems_rfs_inode_set_links (&target_inode, links);                   
                                                                      
  rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);    
  if (rc > 0)                                                         
   1d1e4:	da000020 	ble	1d26c <rtems_rfs_link+0x198>                  
  {                                                                   
    rtems_rfs_inode_close (fs, &parent_inode);                        
   1d1e8:	ebffcfb0 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d1ec:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1d1f0:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1d1f4:	ebffcfad 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &target_inode);                     
                                                                      
  return rc;                                                          
}                                                                     
   1d1f8:	e1a00009 	mov	r0, r9                                        
   1d1fc:	e28dd054 	add	sp, sp, #84	; 0x54                            
   1d200:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_add_entry (fs, &parent_inode, name, length, target);
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_inode_close (fs, &parent_inode);                        
   1d204:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1d208:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
   1d20c:	ebffcfa7 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d210:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1d214:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1d218:	ebffcfa4 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return rc;                                                        
   1d21c:	eafffff5 	b	1d1f8 <rtems_rfs_link+0x124>                    <== NOT EXECUTED
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
   1d220:	e59f0068 	ldr	r0, [pc, #104]	; 1d290 <rtems_rfs_link+0x1bc> <== NOT EXECUTED
   1d224:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   1d228:	eb000c9d 	bl	204a4 <printf>                                 <== NOT EXECUTED
    for (c = 0; c < length; c++)                                      
   1d22c:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
   1d230:	da000005 	ble	1d24c <rtems_rfs_link+0x178>                  <== NOT EXECUTED
   1d234:	e3a09000 	mov	r9, #0                                        <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1d238:	e7d50009 	ldrb	r0, [r5, r9]                                 <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
    for (c = 0; c < length; c++)                                      
   1d23c:	e2899001 	add	r9, r9, #1                                    <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1d240:	eb000d01 	bl	2064c <putchar>                                <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_LINK))                         
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: link: parent(%" PRIu32 ") -> ", parent);      
    for (c = 0; c < length; c++)                                      
   1d244:	e1590004 	cmp	r9, r4                                        <== NOT EXECUTED
   1d248:	1afffffa 	bne	1d238 <rtems_rfs_link+0x164>                  <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf ("(%" PRIu32 ")\n", target);                               
   1d24c:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d250:	e59f003c 	ldr	r0, [pc, #60]	; 1d294 <rtems_rfs_link+0x1c0>  <== NOT EXECUTED
   1d254:	eb000c92 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d258:	eaffffaa 	b	1d108 <rtems_rfs_link+0x34>                     <== NOT EXECUTED
   * If the target inode is a directory and we cannot link directories
   * return a not supported error code.                               
   */                                                                 
  if (!link_dir && S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)))
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d25c:	e28d102c 	add	r1, sp, #44	; 0x2c                            <== NOT EXECUTED
   1d260:	ebffcf92 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return ENOTSUP;                                                   
   1d264:	e3a09086 	mov	r9, #134	; 0x86                               <== NOT EXECUTED
   1d268:	eaffffe2 	b	1d1f8 <rtems_rfs_link+0x124>                    <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &parent_inode);                        
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
   1d26c:	ebffcf8f 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   1d270:	e2509000 	subs	r9, r0, #0                                   
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d274:	e28d102c 	add	r1, sp, #44	; 0x2c                            
   1d278:	e1a00006 	mov	r0, r6                                        
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
  if (rc > 0)                                                         
   1d27c:	caffffe5 	bgt	1d218 <rtems_rfs_link+0x144>                  
  {                                                                   
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &target_inode);                     
   1d280:	ebffcf8a 	bl	110b0 <rtems_rfs_inode_close>                  
   1d284:	e1a09000 	mov	r9, r0                                        
                                                                      
  return rc;                                                          
   1d288:	eaffffda 	b	1d1f8 <rtems_rfs_link+0x124>                    
                                                                      

0001daf4 <rtems_rfs_mutex_create>: RTEMS_INHERIT_PRIORITY | RTEMS_NO_PRIORITY_CEILING | RTEMS_LOCAL) #endif int rtems_rfs_mutex_create (rtems_rfs_mutex* mutex) {
   1daf4:	e92d4010 	push	{r4, lr}                                     
   1daf8:	e24dd004 	sub	sp, sp, #4                                    
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
   1dafc:	e58d0000 	str	r0, [sp]                                      
   1db00:	e3a01001 	mov	r1, #1                                        
   1db04:	e59f0050 	ldr	r0, [pc, #80]	; 1db5c <rtems_rfs_mutex_create+0x68>
   1db08:	e3a02054 	mov	r2, #84	; 0x54                                
   1db0c:	e3a03000 	mov	r3, #0                                        
   1db10:	ebffb79e 	bl	b990 <rtems_semaphore_create>                  
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
   1db14:	e2504000 	subs	r4, r0, #0                                   
      printf ("rtems-rfs: mutex: open failed: %s\n",                  
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
   1db18:	01a00004 	moveq	r0, r4                                      
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
   1db1c:	1a000001 	bne	1db28 <rtems_rfs_mutex_create+0x34>           
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
}                                                                     
   1db20:	e28dd004 	add	sp, sp, #4                                    
   1db24:	e8bd8010 	pop	{r4, pc}                                      
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1db28:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1db2c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1db30:	ebffd33e 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1db34:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: open failed: %s\n",                  
              rtems_status_text (sc));                                
    return EIO;                                                       
   1db38:	03a00005 	moveq	r0, #5                                      <== NOT EXECUTED
  sc = rtems_semaphore_create (rtems_build_name ('R', 'F', 'S', 'm'), 
                               1, RTEMS_RFS_MUTEX_ATTRIBS, 0,         
                               mutex);                                
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1db3c:	0afffff7 	beq	1db20 <rtems_rfs_mutex_create+0x2c>           <== NOT EXECUTED
      printf ("rtems-rfs: mutex: open failed: %s\n",                  
   1db40:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1db44:	ebffa530 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1db48:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1db4c:	e59f000c 	ldr	r0, [pc, #12]	; 1db60 <rtems_rfs_mutex_create+0x6c><== NOT EXECUTED
   1db50:	eb000a53 	bl	204a4 <printf>                                 <== NOT EXECUTED
              rtems_status_text (sc));                                
    return EIO;                                                       
   1db54:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
   1db58:	eafffff0 	b	1db20 <rtems_rfs_mutex_create+0x2c>             <== NOT EXECUTED
                                                                      

0001db64 <rtems_rfs_mutex_destroy>: return 0; } int rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex) {
   1db64:	e92d4010 	push	{r4, lr}                                     
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
   1db68:	e5900000 	ldr	r0, [r0]                                      
   1db6c:	ebffb7f7 	bl	bb50 <rtems_semaphore_delete>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1db70:	e2504000 	subs	r4, r0, #0                                   
      printf ("rtems-rfs: mutex: close failed: %s\n",                 
              rtems_status_text (sc));                                
    return EIO;                                                       
  }                                                                   
#endif                                                                
  return 0;                                                           
   1db74:	01a00004 	moveq	r0, r4                                      
rtems_rfs_mutex_destroy (rtems_rfs_mutex* mutex)                      
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
  if (sc != RTEMS_SUCCESSFUL)                                         
   1db78:	08bd8010 	popeq	{r4, pc}                                    
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1db7c:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1db80:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1db84:	ebffd329 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1db88:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1db8c:	1a000001 	bne	1db98 <rtems_rfs_mutex_destroy+0x34>          <== NOT EXECUTED
      printf ("rtems-rfs: mutex: close failed: %s\n",                 
              rtems_status_text (sc));                                
    return EIO;                                                       
   1db90:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
  }                                                                   
#endif                                                                
  return 0;                                                           
}                                                                     
   1db94:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
  rtems_status_code sc;                                               
  sc = rtems_semaphore_delete (*mutex);                               
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
      printf ("rtems-rfs: mutex: close failed: %s\n",                 
   1db98:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1db9c:	ebffa51a 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1dba0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1dba4:	e59f0008 	ldr	r0, [pc, #8]	; 1dbb4 <rtems_rfs_mutex_destroy+0x50><== NOT EXECUTED
   1dba8:	eb000a3d 	bl	204a4 <printf>                                 <== NOT EXECUTED
              rtems_status_text (sc));                                
    return EIO;                                                       
   1dbac:	e3a00005 	mov	r0, #5                                        <== NOT EXECUTED
   1dbb0:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

00019b74 <rtems_rfs_release_chain>: static int rtems_rfs_release_chain (rtems_chain_control* chain, uint32_t* count, bool modified) {
   19b74:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
   19b78:	e1a04000 	mov	r4, r0                                        
   19b7c:	e1a05001 	mov	r5, r1                                        
  rtems_rfs_buffer* buffer;                                           
  int               rrc = 0;                                          
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
   19b80:	e3a00080 	mov	r0, #128	; 0x80                               
   19b84:	e3a01000 	mov	r1, #0                                        
                                                                      
static int                                                            
rtems_rfs_release_chain (rtems_chain_control* chain,                  
                         uint32_t*            count,                  
                         bool                 modified)               
{                                                                     
   19b88:	e1a0a002 	mov	sl, r2                                        
  rtems_rfs_buffer* buffer;                                           
  int               rrc = 0;                                          
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
   19b8c:	ebffe327 	bl	12830 <rtems_rfs_trace>                        
   19b90:	e3500000 	cmp	r0, #0                                        
   19b94:	1a000017 	bne	19bf8 <rtems_rfs_release_chain+0x84>          
    (*count)--;                                                       
                                                                      
    buffer->user = (void*) 0;                                         
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
    if ((rc > 0) && (rrc == 0))                                       
   19b98:	e3a06000 	mov	r6, #0                                        
   19b9c:	e2847004 	add	r7, r4, #4                                    
  while (!rtems_chain_is_empty (chain))                               
  {                                                                   
    buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);             
    (*count)--;                                                       
                                                                      
    buffer->user = (void*) 0;                                         
   19ba0:	e1a08006 	mov	r8, r6                                        
   19ba4:	ea00000d 	b	19be0 <rtems_rfs_release_chain+0x6c>            
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
   19ba8:	ebffcac2 	bl	c6b8 <_Chain_Get>                              
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
                                                                      
  while (!rtems_chain_is_empty (chain))                               
  {                                                                   
    buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);             
    (*count)--;                                                       
   19bac:	e5952000 	ldr	r2, [r5]                                      
   19bb0:	e2422001 	sub	r2, r2, #1                                    
   19bb4:	e5852000 	str	r2, [r5]                                      
                                                                      
    buffer->user = (void*) 0;                                         
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
   19bb8:	e1a0100a 	mov	r1, sl                                        
  while (!rtems_chain_is_empty (chain))                               
  {                                                                   
    buffer = (rtems_rfs_buffer*) rtems_chain_get (chain);             
    (*count)--;                                                       
                                                                      
    buffer->user = (void*) 0;                                         
   19bbc:	e5808034 	str	r8, [r0, #52]	; 0x34                          
                                                                      
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
   19bc0:	eb0015b8 	bl	1f2a8 <rtems_rfs_buffer_bdbuf_release>         
    if ((rc > 0) && (rrc == 0))                                       
   19bc4:	e3500000 	cmp	r0, #0                                        
   19bc8:	d3a03000 	movle	r3, #0                                      
   19bcc:	c3a03001 	movgt	r3, #1                                      
   19bd0:	e3560000 	cmp	r6, #0                                        
   19bd4:	13a03000 	movne	r3, #0                                      
   19bd8:	e3530000 	cmp	r3, #0                                        
   19bdc:	11a06000 	movne	r6, r0                                      
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
                                                                      
  while (!rtems_chain_is_empty (chain))                               
   19be0:	e5943000 	ldr	r3, [r4]                                      
   19be4:	e1530007 	cmp	r3, r7                                        
   19be8:	e1a00004 	mov	r0, r4                                        
   19bec:	1affffed 	bne	19ba8 <rtems_rfs_release_chain+0x34>          
    rc = rtems_rfs_buffer_io_release (buffer, modified);              
    if ((rc > 0) && (rrc == 0))                                       
      rrc = rc;                                                       
  }                                                                   
  return rrc;                                                         
}                                                                     
   19bf0:	e1a00006 	mov	r0, r6                                        
   19bf4:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  rtems_rfs_buffer* buffer;                                           
  int               rrc = 0;                                          
  int               rc;                                               
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: release-chain: count=%" PRIu32 "\n", *count); 
   19bf8:	e5951000 	ldr	r1, [r5]                                      <== NOT EXECUTED
   19bfc:	e59f0004 	ldr	r0, [pc, #4]	; 19c08 <rtems_rfs_release_chain+0x94><== NOT EXECUTED
   19c00:	eb001a27 	bl	204a4 <printf>                                 <== NOT EXECUTED
   19c04:	eaffffe3 	b	19b98 <rtems_rfs_release_chain+0x24>            <== NOT EXECUTED
                                                                      

00011bc4 <rtems_rfs_rtems_chown>: static int rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc, uid_t owner, gid_t group) {
   11bc4:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
   11bc8:	e1a03000 	mov	r3, r0                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
   11bcc:	e5900014 	ldr	r0, [r0, #20]                                 
   11bd0:	e5904008 	ldr	r4, [r0, #8]                                  
                                                                      
static int                                                            
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
                       uid_t                                   owner, 
                       gid_t                                   group) 
{                                                                     
   11bd4:	e24dd028 	sub	sp, sp, #40	; 0x28                            
   11bd8:	e1a05801 	lsl	r5, r1, #16                                   
   11bdc:	e1a06802 	lsl	r6, r2, #16                                   
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))            
    printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
            ino, owner, group);                                       
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   11be0:	e5931008 	ldr	r1, [r3, #8]                                  
   11be4:	e1a00004 	mov	r0, r4                                        
   11be8:	e1a0200d 	mov	r2, sp                                        
   11bec:	e3a03001 	mov	r3, #1                                        
   11bf0:	ebfffcb4 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   11bf4:	e2507000 	subs	r7, r0, #0                                   
                                                                      
static int                                                            
rtems_rfs_rtems_chown (const rtems_filesystem_location_info_t *pathloc,
                       uid_t                                   owner, 
                       gid_t                                   group) 
{                                                                     
   11bf8:	e1a05825 	lsr	r5, r5, #16                                   
   11bfc:	e1a06826 	lsr	r6, r6, #16                                   
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_CHOWN))            
    printf ("rtems-rfs-rtems: chown: in: ino:%" PRId32 " uid:%d gid:%d\n",
            ino, owner, group);                                       
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
  if (rc > 0)                                                         
   11c00:	da000005 	ble	11c1c <rtems_rfs_rtems_chown+0x58>            
  {                                                                   
    return rtems_rfs_rtems_error ("chown: opening inode", rc);        
   11c04:	eb003662 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11c08:	e5807000 	str	r7, [r0]                                      <== NOT EXECUTED
   11c0c:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("chown: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11c10:	e1a00003 	mov	r0, r3                                        
   11c14:	e28dd028 	add	sp, sp, #40	; 0x28                            
   11c18:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_uid_gid (rtems_rfs_inode_handle* handle,          
                             uint16_t uid, uint16_t gid)              
{                                                                     
  rtems_rfs_write_u32 (&handle->node->owner, (((uint32_t) gid) << 16) | uid);
   11c1c:	e59d300c 	ldr	r3, [sp, #12]                                 
   11c20:	e1856806 	orr	r6, r5, r6, lsl #16                           
   11c24:	e1a02c26 	lsr	r2, r6, #24                                   
   11c28:	e5c32004 	strb	r2, [r3, #4]                                 
   11c2c:	e59d300c 	ldr	r3, [sp, #12]                                 
   11c30:	e1a02826 	lsr	r2, r6, #16                                   
   11c34:	e5c32005 	strb	r2, [r3, #5]                                 
   11c38:	e59d300c 	ldr	r3, [sp, #12]                                 
   11c3c:	e1a06426 	lsr	r6, r6, #8                                    
   11c40:	e5c36006 	strb	r6, [r3, #6]                                 
   11c44:	e59d300c 	ldr	r3, [sp, #12]                                 
  }                                                                   
#endif                                                                
                                                                      
  rtems_rfs_inode_set_uid_gid (&inode, owner, group);                 
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11c48:	e1a00004 	mov	r0, r4                                        
   11c4c:	e5c35007 	strb	r5, [r3, #7]                                 
   11c50:	e1a0100d 	mov	r1, sp                                        
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   11c54:	e3a03001 	mov	r3, #1                                        
   11c58:	e5cd3010 	strb	r3, [sp, #16]                                
   11c5c:	ebfffd13 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc)                                                             
   11c60:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    return rtems_rfs_rtems_error ("chown: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
   11c64:	01a03004 	moveq	r3, r4                                      
#endif                                                                
                                                                      
  rtems_rfs_inode_set_uid_gid (&inode, owner, group);                 
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc)                                                             
   11c68:	0affffe8 	beq	11c10 <rtems_rfs_rtems_chown+0x4c>            
  {                                                                   
    return rtems_rfs_rtems_error ("chown: closing inode", rc);        
   11c6c:	eb003648 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11c70:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   11c74:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11c78:	eaffffe4 	b	11c10 <rtems_rfs_rtems_chown+0x4c>              <== NOT EXECUTED
                                                                      

0001dc20 <rtems_rfs_rtems_device_close>: rtems_device_major_number major; rtems_device_minor_number minor; rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor); return rtems_deviceio_close (iop, major, minor);
   1dc20:	e2801028 	add	r1, r0, #40	; 0x28                            <== NOT EXECUTED
   1dc24:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
   1dc28:	ea000490 	b	1ee70 <rtems_deviceio_close>                    <== NOT EXECUTED
                                                                      

0001dbb8 <rtems_rfs_rtems_device_ftruncate>: static int rtems_rfs_rtems_device_ftruncate (rtems_libio_t* iop, off_t length) { return 0; }
   1dbb8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   1dbbc:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

0001dbc0 <rtems_rfs_rtems_device_ioctl>: static int rtems_rfs_rtems_device_ioctl (rtems_libio_t* iop, ioctl_command_t command, void* buffer) {
   1dbc0:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_control (iop, command, buffer, major, minor); 
   1dbc4:	e2803028 	add	r3, r0, #40	; 0x28                            <== NOT EXECUTED
   1dbc8:	e8931008 	ldm	r3, {r3, ip}                                  <== NOT EXECUTED
                                                                      
static int                                                            
rtems_rfs_rtems_device_ioctl (rtems_libio_t*  iop,                    
                              ioctl_command_t command,                
                              void*           buffer)                 
{                                                                     
   1dbcc:	e24dd004 	sub	sp, sp, #4                                    <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_control (iop, command, buffer, major, minor); 
   1dbd0:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   1dbd4:	eb0004e8 	bl	1ef7c <rtems_deviceio_control>                 <== NOT EXECUTED
}                                                                     
   1dbd8:	e28dd004 	add	sp, sp, #4                                    <== NOT EXECUTED
   1dbdc:	e8bd8000 	pop	{pc}                                          <== NOT EXECUTED
                                                                      

0001dc2c <rtems_rfs_rtems_device_open>: static int rtems_rfs_rtems_device_open ( rtems_libio_t *iop, const char *pathname, int oflag, mode_t mode) {
   1dc2c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         <== NOT EXECUTED
   1dc30:	e1a05000 	mov	r5, r0                                        <== NOT EXECUTED
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1dc34:	e5900024 	ldr	r0, [r0, #36]	; 0x24                          <== NOT EXECUTED
   1dc38:	e5904008 	ldr	r4, [r0, #8]                                  <== NOT EXECUTED
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_device_ftruncate,                    
  .fsync_h     = rtems_filesystem_default_fsync_or_fdatasync,         
  .fdatasync_h = rtems_filesystem_default_fsync_or_fdatasync,         
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1dc3c:	e5940080 	ldr	r0, [r4, #128]	; 0x80                         <== NOT EXECUTED
static int                                                            
rtems_rfs_rtems_device_open ( rtems_libio_t *iop,                     
                              const char    *pathname,                
                              int            oflag,                   
                              mode_t         mode)                    
{                                                                     
   1dc40:	e1a07001 	mov	r7, r1                                        <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1dc44:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1dc48:	e24dd048 	sub	sp, sp, #72	; 0x48                            <== NOT EXECUTED
   1dc4c:	e1a06002 	mov	r6, r2                                        <== NOT EXECUTED
   1dc50:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   1dc54:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   1dc58:	e1a08003 	mov	r8, r3                                        <== NOT EXECUTED
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
  rtems_rfs_ino                 ino = rtems_rfs_rtems_get_iop_ino (iop);
   1dc5c:	e595a018 	ldr	sl, [r5, #24]                                 <== NOT EXECUTED
   1dc60:	ebffb7e3 	bl	bbf4 <rtems_semaphore_obtain>                  <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1dc64:	e2509000 	subs	r9, r0, #0                                   <== NOT EXECUTED
   1dc68:	1a00001e 	bne	1dce8 <rtems_rfs_rtems_device_open+0xbc>      <== NOT EXECUTED
  rtems_device_minor_number     minor;                                
  int                           rc;                                   
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   1dc6c:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1dc70:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dc74:	e28d2020 	add	r2, sp, #32                                   <== NOT EXECUTED
   1dc78:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   1dc7c:	ebffcc91 	bl	10ec8 <rtems_rfs_inode_open>                   <== NOT EXECUTED
  if (rc > 0)                                                         
   1dc80:	e250a000 	subs	sl, r0, #0                                   <== NOT EXECUTED
   1dc84:	da000022 	ble	1dd14 <rtems_rfs_rtems_device_open+0xe8>      <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1dc88:	e5945080 	ldr	r5, [r4, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1dc8c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dc90:	ebfff1c4 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1dc94:	e5950000 	ldr	r0, [r5]                                      <== NOT EXECUTED
   1dc98:	ebffb81e 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1dc9c:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1dca0:	1a000005 	bne	1dcbc <rtems_rfs_rtems_device_open+0x90>      <== NOT EXECUTED
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("device_open: closing inode", rc);  
   1dca4:	eb00063a 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1dca8:	e580a000 	str	sl, [r0]                                      <== NOT EXECUTED
   1dcac:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
                                                                      
  iop->data0 = major;                                                 
  iop->data1 = (void *) minor;                                        
                                                                      
  return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
}                                                                     
   1dcb0:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
   1dcb4:	e28dd048 	add	sp, sp, #72	; 0x48                            <== NOT EXECUTED
   1dcb8:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1dcbc:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1dcc0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1dcc4:	ebffd2d9 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1dcc8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1dccc:	0afffff4 	beq	1dca4 <rtems_rfs_rtems_device_open+0x78>      <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1dcd0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dcd4:	ebffa4cc 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1dcd8:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1dcdc:	e59f012c 	ldr	r0, [pc, #300]	; 1de10 <rtems_rfs_rtems_device_open+0x1e4><== NOT EXECUTED
   1dce0:	eb0009ef 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1dce4:	eaffffee 	b	1dca4 <rtems_rfs_rtems_device_open+0x78>        <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1dce8:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1dcec:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1dcf0:	ebffd2ce 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1dcf4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1dcf8:	0affffdb 	beq	1dc6c <rtems_rfs_rtems_device_open+0x40>      <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1dcfc:	e1a00009 	mov	r0, r9                                        <== NOT EXECUTED
   1dd00:	ebffa4c1 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1dd04:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1dd08:	e59f0104 	ldr	r0, [pc, #260]	; 1de14 <rtems_rfs_rtems_device_open+0x1e8><== NOT EXECUTED
   1dd0c:	eb0009e4 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1dd10:	eaffffd5 	b	1dc6c <rtems_rfs_rtems_device_open+0x40>        <== NOT EXECUTED
 * @return uint32_t The block number.                                 
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) 
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);      
   1dd14:	e59d302c 	ldr	r3, [sp, #44]	; 0x2c                          <== NOT EXECUTED
   1dd18:	e5d3201c 	ldrb	r2, [r3, #28]                                <== NOT EXECUTED
   1dd1c:	e58d2008 	str	r2, [sp, #8]                                  <== NOT EXECUTED
   1dd20:	e5d3201e 	ldrb	r2, [r3, #30]                                <== NOT EXECUTED
   1dd24:	e58d200c 	str	r2, [sp, #12]                                 <== NOT EXECUTED
   1dd28:	e5d3201f 	ldrb	r2, [r3, #31]                                <== NOT EXECUTED
   1dd2c:	e58d2010 	str	r2, [sp, #16]                                 <== NOT EXECUTED
   1dd30:	e5d32020 	ldrb	r2, [r3, #32]                                <== NOT EXECUTED
   1dd34:	e5d3b01d 	ldrb	fp, [r3, #29]                                <== NOT EXECUTED
   1dd38:	e58d2014 	str	r2, [sp, #20]                                 <== NOT EXECUTED
   1dd3c:	e5d39021 	ldrb	r9, [r3, #33]	; 0x21                         <== NOT EXECUTED
   1dd40:	e5d32022 	ldrb	r2, [r3, #34]	; 0x22                         <== NOT EXECUTED
   1dd44:	e5d33023 	ldrb	r3, [r3, #35]	; 0x23                         <== NOT EXECUTED
  }                                                                   
                                                                      
  major = rtems_rfs_inode_get_block (&inode, 0);                      
  minor = rtems_rfs_inode_get_block (&inode, 1);                      
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   1dd48:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dd4c:	e28d1020 	add	r1, sp, #32                                   <== NOT EXECUTED
   1dd50:	e58d2018 	str	r2, [sp, #24]                                 <== NOT EXECUTED
   1dd54:	e58d301c 	str	r3, [sp, #28]                                 <== NOT EXECUTED
   1dd58:	ebffccd4 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
  if (rc > 0)                                                         
   1dd5c:	e250a000 	subs	sl, r0, #0                                   <== NOT EXECUTED
   1dd60:	caffffc8 	bgt	1dc88 <rtems_rfs_rtems_device_open+0x5c>      <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1dd64:	e594a080 	ldr	sl, [r4, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1dd68:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dd6c:	ebfff18d 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1dd70:	e59a0000 	ldr	r0, [sl]                                      <== NOT EXECUTED
   1dd74:	ebffb7e7 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1dd78:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1dd7c:	1a000018 	bne	1dde4 <rtems_rfs_rtems_device_open+0x1b8>     <== NOT EXECUTED
   1dd80:	e59d3008 	ldr	r3, [sp, #8]                                  <== NOT EXECUTED
   1dd84:	e59d2014 	ldr	r2, [sp, #20]                                 <== NOT EXECUTED
   1dd88:	e1a0c80b 	lsl	ip, fp, #16                                   <== NOT EXECUTED
   1dd8c:	e1a0e809 	lsl	lr, r9, #16                                   <== NOT EXECUTED
   1dd90:	e18ccc03 	orr	ip, ip, r3, lsl #24                           <== NOT EXECUTED
   1dd94:	e18eec02 	orr	lr, lr, r2, lsl #24                           <== NOT EXECUTED
   1dd98:	e59d3010 	ldr	r3, [sp, #16]                                 <== NOT EXECUTED
   1dd9c:	e59d201c 	ldr	r2, [sp, #28]                                 <== NOT EXECUTED
   1dda0:	e18cc003 	orr	ip, ip, r3                                    <== NOT EXECUTED
   1dda4:	e18ee002 	orr	lr, lr, r2                                    <== NOT EXECUTED
   1dda8:	e59d300c 	ldr	r3, [sp, #12]                                 <== NOT EXECUTED
   1ddac:	e59d2018 	ldr	r2, [sp, #24]                                 <== NOT EXECUTED
   1ddb0:	e18cc403 	orr	ip, ip, r3, lsl #8                            <== NOT EXECUTED
   1ddb4:	e18ee402 	orr	lr, lr, r2, lsl #8                            <== NOT EXECUTED
    return rtems_rfs_rtems_error ("device_open: closing inode", rc);  
  }                                                                   
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  iop->data0 = major;                                                 
   1ddb8:	e585c028 	str	ip, [r5, #40]	; 0x28                          <== NOT EXECUTED
  iop->data1 = (void *) minor;                                        
   1ddbc:	e585e02c 	str	lr, [r5, #44]	; 0x2c                          <== NOT EXECUTED
                                                                      
  return rtems_deviceio_open (iop, pathname, oflag, mode, minor, major);
   1ddc0:	e1a03008 	mov	r3, r8                                        <== NOT EXECUTED
   1ddc4:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1ddc8:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   1ddcc:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   1ddd0:	e58de000 	str	lr, [sp]                                      <== NOT EXECUTED
   1ddd4:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
   1ddd8:	eb000417 	bl	1ee3c <rtems_deviceio_open>                    <== NOT EXECUTED
   1dddc:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   1dde0:	eaffffb2 	b	1dcb0 <rtems_rfs_rtems_device_open+0x84>        <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1dde4:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1dde8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ddec:	ebffd28f 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1ddf0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1ddf4:	0affffe1 	beq	1dd80 <rtems_rfs_rtems_device_open+0x154>     <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1ddf8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1ddfc:	ebffa482 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1de00:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1de04:	e59f0004 	ldr	r0, [pc, #4]	; 1de10 <rtems_rfs_rtems_device_open+0x1e4><== NOT EXECUTED
   1de08:	eb0009a5 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1de0c:	eaffffdb 	b	1dd80 <rtems_rfs_rtems_device_open+0x154>       <== NOT EXECUTED
                                                                      

0001dc00 <rtems_rfs_rtems_device_read>: * @return ssize_t */ static ssize_t rtems_rfs_rtems_device_read (rtems_libio_t* iop, void* buffer, size_t count) {
   1dc00:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_read (iop, buffer, count, major, minor);      
   1dc04:	e2803028 	add	r3, r0, #40	; 0x28                            <== NOT EXECUTED
   1dc08:	e8931008 	ldm	r3, {r3, ip}                                  <== NOT EXECUTED
 * @return ssize_t                                                    
 */                                                                   
                                                                      
static ssize_t                                                        
rtems_rfs_rtems_device_read (rtems_libio_t* iop, void* buffer, size_t count)
{                                                                     
   1dc0c:	e24dd004 	sub	sp, sp, #4                                    <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_read (iop, buffer, count, major, minor);      
   1dc10:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   1dc14:	eb0004a2 	bl	1eea4 <rtems_deviceio_read>                    <== NOT EXECUTED
}                                                                     
   1dc18:	e28dd004 	add	sp, sp, #4                                    <== NOT EXECUTED
   1dc1c:	e8bd8000 	pop	{pc}                                          <== NOT EXECUTED
                                                                      

0001dbe0 <rtems_rfs_rtems_device_write>: static ssize_t rtems_rfs_rtems_device_write (rtems_libio_t* iop, const void* buffer, size_t count) {
   1dbe0:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_write (iop, buffer, count, major, minor);     
   1dbe4:	e2803028 	add	r3, r0, #40	; 0x28                            <== NOT EXECUTED
   1dbe8:	e8931008 	ldm	r3, {r3, ip}                                  <== NOT EXECUTED
                                                                      
static ssize_t                                                        
rtems_rfs_rtems_device_write (rtems_libio_t* iop,                     
                              const void*    buffer,                  
                              size_t         count)                   
{                                                                     
   1dbec:	e24dd004 	sub	sp, sp, #4                                    <== NOT EXECUTED
  rtems_device_major_number major;                                    
  rtems_device_minor_number minor;                                    
                                                                      
  rtems_rfs_rtems_device_get_major_and_minor (iop, &major, &minor);   
                                                                      
  return rtems_deviceio_write (iop, buffer, count, major, minor);     
   1dbf0:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   1dbf4:	eb0004c5 	bl	1ef10 <rtems_deviceio_write>                   <== NOT EXECUTED
}                                                                     
   1dbf8:	e28dd004 	add	sp, sp, #4                                    <== NOT EXECUTED
   1dbfc:	e8bd8000 	pop	{pc}                                          <== NOT EXECUTED
                                                                      

0001e004 <rtems_rfs_rtems_dir_open>: rtems_rfs_rtems_dir_open (rtems_libio_t* iop, const char* pathname, int oflag, mode_t mode) { rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1e004:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
static int                                                            
rtems_rfs_rtems_dir_open (rtems_libio_t* iop,                         
                          const char*    pathname,                    
                          int            oflag,                       
                          mode_t         mode)                        
{                                                                     
   1e008:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1e00c:	e5934008 	ldr	r4, [r3, #8]                                  
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_filesystem_default_ftruncate_directory,        
  .fsync_h     = rtems_filesystem_default_fsync_or_fdatasync,         
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e010:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e014:	e3a01000 	mov	r1, #0                                        
static int                                                            
rtems_rfs_rtems_dir_open (rtems_libio_t* iop,                         
                          const char*    pathname,                    
                          int            oflag,                       
                          mode_t         mode)                        
{                                                                     
   1e018:	e1a05000 	mov	r5, r0                                        
   1e01c:	e24dd028 	sub	sp, sp, #40	; 0x28                            
   1e020:	e5930000 	ldr	r0, [r3]                                      
   1e024:	e1a02001 	mov	r2, r1                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_iop_ino (iop);     
   1e028:	e5956018 	ldr	r6, [r5, #24]                                 
   1e02c:	ebffb6f0 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e030:	e2507000 	subs	r7, r0, #0                                   
   1e034:	1a000029 	bne	1e0e0 <rtems_rfs_rtems_dir_open+0xdc>         
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   1e038:	e1a01006 	mov	r1, r6                                        
   1e03c:	e1a00004 	mov	r0, r4                                        
   1e040:	e1a0200d 	mov	r2, sp                                        
   1e044:	e3a03001 	mov	r3, #1                                        
   1e048:	ebffcb9e 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1e04c:	e2506000 	subs	r6, r0, #0                                   
   1e050:	1a000033 	bne	1e124 <rtems_rfs_rtems_dir_open+0x120>        
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   1e054:	e59d300c 	ldr	r3, [sp, #12]                                 
   1e058:	e5d33002 	ldrb	r3, [r3, #2]                                 
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: opening inode", rc);     
  }                                                                   
                                                                      
  if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))         
   1e05c:	e1a03403 	lsl	r3, r3, #8                                    
   1e060:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
   1e064:	e3530901 	cmp	r3, #16384	; 0x4000                           
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
   1e068:	e1a0100d 	mov	r1, sp                                        
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: opening inode", rc);     
  }                                                                   
                                                                      
  if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))         
   1e06c:	1a000042 	bne	1e17c <rtems_rfs_rtems_dir_open+0x178>        
    rtems_rfs_inode_close (fs, &inode);                               
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);      
  }                                                                   
                                                                      
  iop->offset = 0;                                                    
   1e070:	e3a02000 	mov	r2, #0                                        
   1e074:	e3a03000 	mov	r3, #0                                        
   1e078:	e985000c 	stmib	r5, {r2, r3}                                
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
   1e07c:	e1a00004 	mov	r0, r4                                        
   1e080:	ebffcc0a 	bl	110b0 <rtems_rfs_inode_close>                  
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e084:	e5945080 	ldr	r5, [r4, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e088:	e1a00004 	mov	r0, r4                                        
   1e08c:	ebfff0c5 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e090:	e5950000 	ldr	r0, [r5]                                      
   1e094:	ebffb71f 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e098:	e2504000 	subs	r4, r0, #0                                   
   1e09c:	1a000002 	bne	1e0ac <rtems_rfs_rtems_dir_open+0xa8>         
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
}                                                                     
   1e0a0:	e1a00004 	mov	r0, r4                                        
   1e0a4:	e28dd028 	add	sp, sp, #40	; 0x28                            
   1e0a8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e0ac:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e0b0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e0b4:	ebffd1dd 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e0b8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                                                                      
  iop->offset = 0;                                                    
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
   1e0bc:	01a04000 	moveq	r4, r0                                      <== NOT EXECUTED
   1e0c0:	0afffff6 	beq	1e0a0 <rtems_rfs_rtems_dir_open+0x9c>         <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e0c4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e0c8:	ebffa3cf 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e0cc:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e0d0:	e59f0108 	ldr	r0, [pc, #264]	; 1e1e0 <rtems_rfs_rtems_dir_open+0x1dc><== NOT EXECUTED
   1e0d4:	eb0008f2 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e0d8:	e1a04006 	mov	r4, r6                                        <== NOT EXECUTED
   1e0dc:	eaffffef 	b	1e0a0 <rtems_rfs_rtems_dir_open+0x9c>           <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e0e0:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e0e4:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e0e8:	ebffd1d0 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e0ec:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e0f0:	0affffd0 	beq	1e038 <rtems_rfs_rtems_dir_open+0x34>         <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1e0f4:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1e0f8:	ebffa3c3 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e0fc:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e100:	e59f00dc 	ldr	r0, [pc, #220]	; 1e1e4 <rtems_rfs_rtems_dir_open+0x1e0><== NOT EXECUTED
   1e104:	eb0008e6 	bl	204a4 <printf>                                 <== NOT EXECUTED
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   1e108:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1e10c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e110:	e1a0200d 	mov	r2, sp                                        <== NOT EXECUTED
   1e114:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   1e118:	ebffcb6a 	bl	10ec8 <rtems_rfs_inode_open>                   <== NOT EXECUTED
  if (rc)                                                             
   1e11c:	e2506000 	subs	r6, r0, #0                                   <== NOT EXECUTED
   1e120:	0affffcb 	beq	1e054 <rtems_rfs_rtems_dir_open+0x50>         <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e124:	e5945080 	ldr	r5, [r4, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1e128:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e12c:	ebfff09d 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e130:	e5950000 	ldr	r0, [r5]                                      <== NOT EXECUTED
   1e134:	ebffb6f7 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e138:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1e13c:	1a000003 	bne	1e150 <rtems_rfs_rtems_dir_open+0x14c>        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: opening inode", rc);     
   1e140:	eb000513 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e144:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   1e148:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   1e14c:	eaffffd3 	b	1e0a0 <rtems_rfs_rtems_dir_open+0x9c>           <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e150:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e154:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e158:	ebffd1b4 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e15c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e160:	0afffff6 	beq	1e140 <rtems_rfs_rtems_dir_open+0x13c>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e164:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e168:	ebffa3a7 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e16c:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e170:	e59f0068 	ldr	r0, [pc, #104]	; 1e1e0 <rtems_rfs_rtems_dir_open+0x1dc><== NOT EXECUTED
   1e174:	eb0008ca 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e178:	eafffff0 	b	1e140 <rtems_rfs_rtems_dir_open+0x13c>          <== NOT EXECUTED
  }                                                                   
                                                                      
  if (!RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&inode)))         
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
   1e17c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e180:	ebffcbca 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e184:	e5945080 	ldr	r5, [r4, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1e188:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e18c:	ebfff085 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e190:	e5950000 	ldr	r0, [r5]                                      <== NOT EXECUTED
   1e194:	ebffb6df 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e198:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1e19c:	1a000004 	bne	1e1b4 <rtems_rfs_rtems_dir_open+0x1b0>        <== NOT EXECUTED
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_open: not dir", ENOTDIR);      
   1e1a0:	eb0004fb 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e1a4:	e3a03014 	mov	r3, #20                                       <== NOT EXECUTED
   1e1a8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   1e1ac:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   1e1b0:	eaffffba 	b	1e0a0 <rtems_rfs_rtems_dir_open+0x9c>           <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e1b4:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e1b8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e1bc:	ebffd19b 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e1c0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e1c4:	0afffff5 	beq	1e1a0 <rtems_rfs_rtems_dir_open+0x19c>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e1c8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e1cc:	ebffa38e 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e1d0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e1d4:	e59f0004 	ldr	r0, [pc, #4]	; 1e1e0 <rtems_rfs_rtems_dir_open+0x1dc><== NOT EXECUTED
   1e1d8:	eb0008b1 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e1dc:	eaffffef 	b	1e1a0 <rtems_rfs_rtems_dir_open+0x19c>          <== NOT EXECUTED
                                                                      

0001de20 <rtems_rfs_rtems_dir_read>: static ssize_t rtems_rfs_rtems_dir_read (rtems_libio_t* iop, void* buffer, size_t count) { rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1de20:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
                          void*          buffer,                      
                          size_t         count)                       
{                                                                     
   1de24:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1de28:	e5937008 	ldr	r7, [r3, #8]                                  
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_filesystem_default_ftruncate_directory,        
  .fsync_h     = rtems_filesystem_default_fsync_or_fdatasync,         
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1de2c:	e5973080 	ldr	r3, [r7, #128]	; 0x80                         
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
                          void*          buffer,                      
                          size_t         count)                       
{                                                                     
   1de30:	e1a08001 	mov	r8, r1                                        
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1de34:	e3a01000 	mov	r1, #0                                        
   1de38:	e1a04000 	mov	r4, r0                                        
   1de3c:	e24dd034 	sub	sp, sp, #52	; 0x34                            
   1de40:	e1a05002 	mov	r5, r2                                        
   1de44:	e5930000 	ldr	r0, [r3]                                      
   1de48:	e1a02001 	mov	r2, r1                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_iop_ino (iop);     
   1de4c:	e5946018 	ldr	r6, [r4, #24]                                 
   1de50:	ebffb767 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1de54:	e250a000 	subs	sl, r0, #0                                   
   1de58:	1a00003b 	bne	1df4c <rtems_rfs_rtems_dir_read+0x12c>        
  count  = count / sizeof (struct dirent);                            
  dirent = buffer;                                                    
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   1de5c:	e1a01006 	mov	r1, r6                                        
   1de60:	e1a00007 	mov	r0, r7                                        
   1de64:	e28d2008 	add	r2, sp, #8                                    
   1de68:	e3a03001 	mov	r3, #1                                        
   1de6c:	ebffcc15 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1de70:	e2506000 	subs	r6, r0, #0                                   
   1de74:	1a000045 	bne	1df90 <rtems_rfs_rtems_dir_read+0x170>        
  struct dirent*         dirent;                                      
  ssize_t                bytes_transferred;                           
  int                    d;                                           
  int                    rc;                                          
                                                                      
  count  = count / sizeof (struct dirent);                            
   1de78:	e59f9178 	ldr	r9, [pc, #376]	; 1dff8 <rtems_rfs_rtems_dir_read+0x1d8>
   1de7c:	e0893995 	umull	r3, r9, r5, r9                              
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
   1de80:	e1b09429 	lsrs	r9, r9, #8                                   
   1de84:	01a05009 	moveq	r5, r9                                      
   1de88:	0a000017 	beq	1deec <rtems_rfs_rtems_dir_read+0xcc>         
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
  if (rc)                                                             
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
   1de8c:	e994000c 	ldmib	r4, {r2, r3}                                
 * exisiting file, the remaining entries will be placed in the buffer and the
 * returned value will be equal to -m actual- times the size of a directory
 * entry.                                                             
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
   1de90:	e1a05006 	mov	r5, r6                                        
   1de94:	e28da030 	add	sl, sp, #48	; 0x30                            
   1de98:	ea000009 	b	1dec4 <rtems_rfs_rtems_dir_read+0xa4>           
    if (rc == ENOENT)                                                 
    {                                                                 
      rc = 0;                                                         
      break;                                                          
    }                                                                 
    if (rc > 0)                                                       
   1de9c:	e3500000 	cmp	r0, #0                                        
   1dea0:	ca000045 	bgt	1dfbc <rtems_rfs_rtems_dir_read+0x19c>        
    {                                                                 
      bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
      break;                                                          
    }                                                                 
    iop->offset += size;                                              
   1dea4:	e994000c 	ldmib	r4, {r2, r3}                                
   1dea8:	e59d1030 	ldr	r1, [sp, #48]	; 0x30                          
   1deac:	e0922001 	adds	r2, r2, r1                                   
   1deb0:	e2a33000 	adc	r3, r3, #0                                    
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
   1deb4:	e1560009 	cmp	r6, r9                                        
    if (rc > 0)                                                       
    {                                                                 
      bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
      break;                                                          
    }                                                                 
    iop->offset += size;                                              
   1deb8:	e984000c 	stmib	r4, {r2, r3}                                
 * exisiting file, the remaining entries will be placed in the buffer and the
 * returned value will be equal to -m actual- times the size of a directory
 * entry.                                                             
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
   1debc:	e2855e11 	add	r5, r5, #272	; 0x110                          
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
   1dec0:	0a000009 	beq	1deec <rtems_rfs_rtems_dir_read+0xcc>         
 * exisiting file, the remaining entries will be placed in the buffer and the
 * returned value will be equal to -m actual- times the size of a directory
 * entry.                                                             
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_dir_read (rtems_libio_t* iop,                         
   1dec4:	e088c005 	add	ip, r8, r5                                    
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
  {                                                                   
    size_t size;                                                      
    rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size); 
   1dec8:	e1a00007 	mov	r0, r7                                        
   1decc:	e28d1008 	add	r1, sp, #8                                    
   1ded0:	e58dc000 	str	ip, [sp]                                      
   1ded4:	e58da004 	str	sl, [sp, #4]                                  
   1ded8:	ebfff536 	bl	1b3b8 <rtems_rfs_dir_read>                     
    if (rc == ENOENT)                                                 
   1dedc:	e3500002 	cmp	r0, #2                                        
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
  {                                                                   
    size_t size;                                                      
    rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size); 
   1dee0:	e1a0b000 	mov	fp, r0                                        
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
  }                                                                   
                                                                      
  bytes_transferred = 0;                                              
                                                                      
  for (d = 0; d < count; d++, dirent++)                               
   1dee4:	e2866001 	add	r6, r6, #1                                    
  {                                                                   
    size_t size;                                                      
    rc = rtems_rfs_dir_read (fs, &inode, iop->offset, dirent, &size); 
    if (rc == ENOENT)                                                 
   1dee8:	1affffeb 	bne	1de9c <rtems_rfs_rtems_dir_read+0x7c>         
    }                                                                 
    iop->offset += size;                                              
    bytes_transferred += sizeof (struct dirent);                      
  }                                                                   
                                                                      
  rtems_rfs_inode_close (fs, &inode);                                 
   1deec:	e28d1008 	add	r1, sp, #8                                    
   1def0:	e1a00007 	mov	r0, r7                                        
   1def4:	ebffcc6d 	bl	110b0 <rtems_rfs_inode_close>                  
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1def8:	e5974080 	ldr	r4, [r7, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1defc:	e1a00007 	mov	r0, r7                                        
   1df00:	ebfff128 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1df04:	e5940000 	ldr	r0, [r4]                                      
   1df08:	ebffb782 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1df0c:	e2504000 	subs	r4, r0, #0                                   
   1df10:	1a000002 	bne	1df20 <rtems_rfs_rtems_dir_read+0x100>        
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  return bytes_transferred;                                           
}                                                                     
   1df14:	e1a00005 	mov	r0, r5                                        
   1df18:	e28dd034 	add	sp, sp, #52	; 0x34                            
   1df1c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1df20:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1df24:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1df28:	ebffd240 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1df2c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1df30:	0afffff7 	beq	1df14 <rtems_rfs_rtems_dir_read+0xf4>         <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1df34:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1df38:	ebffa433 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1df3c:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1df40:	e59f00b4 	ldr	r0, [pc, #180]	; 1dffc <rtems_rfs_rtems_dir_read+0x1dc><== NOT EXECUTED
   1df44:	eb000956 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1df48:	eafffff1 	b	1df14 <rtems_rfs_rtems_dir_read+0xf4>           <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1df4c:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1df50:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1df54:	ebffd235 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1df58:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1df5c:	0affffbe 	beq	1de5c <rtems_rfs_rtems_dir_read+0x3c>         <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1df60:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1df64:	ebffa428 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1df68:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1df6c:	e59f008c 	ldr	r0, [pc, #140]	; 1e000 <rtems_rfs_rtems_dir_read+0x1e0><== NOT EXECUTED
   1df70:	eb00094b 	bl	204a4 <printf>                                 <== NOT EXECUTED
  count  = count / sizeof (struct dirent);                            
  dirent = buffer;                                                    
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   1df74:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1df78:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1df7c:	e28d2008 	add	r2, sp, #8                                    <== NOT EXECUTED
   1df80:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   1df84:	ebffcbcf 	bl	10ec8 <rtems_rfs_inode_open>                   <== NOT EXECUTED
  if (rc)                                                             
   1df88:	e2506000 	subs	r6, r0, #0                                   <== NOT EXECUTED
   1df8c:	0affffb9 	beq	1de78 <rtems_rfs_rtems_dir_read+0x58>         <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1df90:	e5974080 	ldr	r4, [r7, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1df94:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1df98:	ebfff102 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1df9c:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1dfa0:	ebffb75c 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1dfa4:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1dfa8:	1a000007 	bne	1dfcc <rtems_rfs_rtems_dir_read+0x1ac>        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("dir_read: read inode", rc);        
   1dfac:	eb000578 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1dfb0:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   1dfb4:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   1dfb8:	eaffffd5 	b	1df14 <rtems_rfs_rtems_dir_read+0xf4>           <== NOT EXECUTED
      rc = 0;                                                         
      break;                                                          
    }                                                                 
    if (rc > 0)                                                       
    {                                                                 
      bytes_transferred = rtems_rfs_rtems_error ("dir_read: dir read", rc);
   1dfbc:	eb000574 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1dfc0:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   1dfc4:	e580b000 	str	fp, [r0]                                      <== NOT EXECUTED
   1dfc8:	eaffffc7 	b	1deec <rtems_rfs_rtems_dir_read+0xcc>           <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1dfcc:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1dfd0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1dfd4:	ebffd215 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1dfd8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1dfdc:	0afffff2 	beq	1dfac <rtems_rfs_rtems_dir_read+0x18c>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1dfe0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dfe4:	ebffa408 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1dfe8:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1dfec:	e59f0008 	ldr	r0, [pc, #8]	; 1dffc <rtems_rfs_rtems_dir_read+0x1dc><== NOT EXECUTED
   1dff0:	eb00092b 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1dff4:	eaffffec 	b	1dfac <rtems_rfs_rtems_dir_read+0x18c>          <== NOT EXECUTED
                                                                      

00011ee4 <rtems_rfs_rtems_eval_path>: .eval_token = rtems_rfs_rtems_eval_token }; static void rtems_rfs_rtems_eval_path (rtems_filesystem_eval_path_context_t *ctx) {
   11ee4:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_filesystem_location_info_t *currentloc =                      
    rtems_filesystem_eval_path_get_currentloc (ctx);                  
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
   11ee8:	e590302c 	ldr	r3, [r0, #44]	; 0x2c                          
   11eec:	e5935008 	ldr	r5, [r3, #8]                                  
  .eval_token = rtems_rfs_rtems_eval_token                            
};                                                                    
                                                                      
static void                                                           
rtems_rfs_rtems_eval_path (rtems_filesystem_eval_path_context_t *ctx) 
{                                                                     
   11ef0:	e24dd028 	sub	sp, sp, #40	; 0x28                            
   11ef4:	e1a04000 	mov	r4, r0                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
  rtems_rfs_ino ino = rtems_rfs_rtems_get_pathloc_ino (currentloc);   
  rtems_rfs_inode_handle inode;                                       
  int rc;                                                             
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   11ef8:	e5941020 	ldr	r1, [r4, #32]                                 
   11efc:	e1a00005 	mov	r0, r5                                        
   11f00:	e1a0200d 	mov	r2, sp                                        
   11f04:	e3a03001 	mov	r3, #1                                        
   11f08:	ebfffbee 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc == 0) {                                                      
   11f0c:	e2506000 	subs	r6, r0, #0                                   
   11f10:	1a00000a 	bne	11f40 <rtems_rfs_rtems_eval_path+0x5c>        
    rtems_filesystem_eval_path_generic (                              
   11f14:	e59f2054 	ldr	r2, [pc, #84]	; 11f70 <rtems_rfs_rtems_eval_path+0x8c>
   11f18:	e1a00004 	mov	r0, r4                                        
   11f1c:	e1a0100d 	mov	r1, sp                                        
   11f20:	eb001154 	bl	16478 <rtems_filesystem_eval_path_generic>     
      ctx,                                                            
      &inode,                                                         
      &rtems_rfs_rtems_eval_config                                    
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
   11f24:	e1a00005 	mov	r0, r5                                        
   11f28:	e1a0100d 	mov	r1, sp                                        
   11f2c:	ebfffc5f 	bl	110b0 <rtems_rfs_inode_close>                  
    if (rc != 0) {                                                    
   11f30:	e2505000 	subs	r5, r0, #0                                   
   11f34:	1a000007 	bne	11f58 <rtems_rfs_rtems_eval_path+0x74>        
    rtems_filesystem_eval_path_error (                                
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
    );                                                                
  }                                                                   
}                                                                     
   11f38:	e28dd028 	add	sp, sp, #40	; 0x28                            
   11f3c:	e8bd8070 	pop	{r4, r5, r6, pc}                              
      );                                                              
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error (                                
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
   11f40:	eb003593 	bl	1f594 <__errno>                                <== NOT EXECUTED
        ctx,                                                          
        rtems_rfs_rtems_error ("eval_path: closing inode", rc)        
      );                                                              
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error (                                
   11f44:	e3e01000 	mvn	r1, #0                                        <== NOT EXECUTED
      ctx,                                                            
      rtems_rfs_rtems_error ("eval_path: opening inode", rc)          
   11f48:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
        ctx,                                                          
        rtems_rfs_rtems_error ("eval_path: closing inode", rc)        
      );                                                              
    }                                                                 
  } else {                                                            
    rtems_filesystem_eval_path_error (                                
   11f4c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   11f50:	ebffda58 	bl	88b8 <rtems_filesystem_eval_path_error>        <== NOT EXECUTED
   11f54:	eafffff7 	b	11f38 <rtems_rfs_rtems_eval_path+0x54>          <== NOT EXECUTED
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
    if (rc != 0) {                                                    
      rtems_filesystem_eval_path_error (                              
        ctx,                                                          
        rtems_rfs_rtems_error ("eval_path: closing inode", rc)        
   11f58:	eb00358d 	bl	1f594 <__errno>                                <== NOT EXECUTED
      &inode,                                                         
      &rtems_rfs_rtems_eval_config                                    
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
    if (rc != 0) {                                                    
      rtems_filesystem_eval_path_error (                              
   11f5c:	e3e01000 	mvn	r1, #0                                        <== NOT EXECUTED
        ctx,                                                          
        rtems_rfs_rtems_error ("eval_path: closing inode", rc)        
   11f60:	e5805000 	str	r5, [r0]                                      <== NOT EXECUTED
      &inode,                                                         
      &rtems_rfs_rtems_eval_config                                    
    );                                                                
    rc = rtems_rfs_inode_close (fs, &inode);                          
    if (rc != 0) {                                                    
      rtems_filesystem_eval_path_error (                              
   11f64:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   11f68:	ebffda52 	bl	88b8 <rtems_filesystem_eval_path_error>        <== NOT EXECUTED
   11f6c:	eafffff1 	b	11f38 <rtems_rfs_rtems_eval_path+0x54>          <== NOT EXECUTED
                                                                      

00011f74 <rtems_rfs_rtems_eval_token>: rtems_filesystem_eval_path_context_t *ctx, void *arg, const char *token, size_t tokenlen ) {
   11f74:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
   11f78:	e1a04001 	mov	r4, r1                                        
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   11f7c:	e591100c 	ldr	r1, [r1, #12]                                 
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
   11f80:	e5d18005 	ldrb	r8, [r1, #5]                                 
   11f84:	e5d15004 	ldrb	r5, [r1, #4]                                 
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   11f88:	e5d16003 	ldrb	r6, [r1, #3]                                 
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
   11f8c:	e5d1e006 	ldrb	lr, [r1, #6]                                 
   11f90:	e5d1c007 	ldrb	ip, [r1, #7]                                 
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   11f94:	e5d17002 	ldrb	r7, [r1, #2]                                 
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
   11f98:	e1a08808 	lsl	r8, r8, #16                                   
static bool                                                           
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
                            int eval_flags,                           
                            rtems_rfs_inode_handle* inode)            
{                                                                     
  return rtems_filesystem_eval_path_check_access(                     
   11f9c:	e1888c05 	orr	r8, r8, r5, lsl #24                           
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
   11fa0:	e24dd014 	sub	sp, sp, #20                                   
static bool                                                           
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
                            int eval_flags,                           
                            rtems_rfs_inode_handle* inode)            
{                                                                     
  return rtems_filesystem_eval_path_check_access(                     
   11fa4:	e1a08828 	lsr	r8, r8, #16                                   
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
   11fa8:	e1a0a002 	mov	sl, r2                                        
   11fac:	e1a05003 	mov	r5, r3                                        
static bool                                                           
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
                            int eval_flags,                           
                            rtems_rfs_inode_handle* inode)            
{                                                                     
  return rtems_filesystem_eval_path_check_access(                     
   11fb0:	e1862407 	orr	r2, r6, r7, lsl #8                            
   11fb4:	e3a01001 	mov	r1, #1                                        
   11fb8:	e18c340e 	orr	r3, ip, lr, lsl #8                            
  rtems_filesystem_eval_path_context_t *ctx,                          
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
   11fbc:	e1a06000 	mov	r6, r0                                        
static bool                                                           
rtems_rfs_rtems_eval_perms (rtems_filesystem_eval_path_context_t *ctx,
                            int eval_flags,                           
                            rtems_rfs_inode_handle* inode)            
{                                                                     
  return rtems_filesystem_eval_path_check_access(                     
   11fc0:	e58d8000 	str	r8, [sp]                                      
   11fc4:	eb00111d 	bl	16440 <rtems_filesystem_eval_path_check_access>
  rtems_filesystem_eval_path_generic_status status =                  
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
  rtems_rfs_inode_handle* inode = arg;                                
  bool access_ok = rtems_rfs_rtems_eval_perms (ctx, RTEMS_FS_PERMS_EXEC, inode);
                                                                      
  if (access_ok) {                                                    
   11fc8:	e3500000 	cmp	r0, #0                                        
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   11fcc:	03a00001 	moveq	r0, #1                                      
    RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_DONE;                          
  rtems_rfs_inode_handle* inode = arg;                                
  bool access_ok = rtems_rfs_rtems_eval_perms (ctx, RTEMS_FS_PERMS_EXEC, inode);
                                                                      
  if (access_ok) {                                                    
   11fd0:	0a00000f 	beq	12014 <rtems_rfs_rtems_eval_token+0xa0>       
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
   11fd4:	e3550001 	cmp	r5, #1                                        
   11fd8:	0a00000f 	beq	1201c <rtems_rfs_rtems_eval_token+0xa8>       
    if (rtems_filesystem_is_current_directory (token, tokenlen)) {    
      rtems_filesystem_eval_path_clear_token (ctx);                   
    } else {                                                          
      rtems_filesystem_location_info_t *currentloc =                  
        rtems_filesystem_eval_path_get_currentloc( ctx );             
      rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (currentloc);
   11fdc:	e596302c 	ldr	r3, [r6, #44]	; 0x2c                          
   11fe0:	e5937008 	ldr	r7, [r3, #8]                                  
      rtems_rfs_ino entry_ino;                                        
      uint32_t entry_doff;                                            
      int rc = rtems_rfs_dir_lookup_ino (                             
   11fe4:	e28dc008 	add	ip, sp, #8                                    
   11fe8:	e58dc000 	str	ip, [sp]                                      
   11fec:	e1a00007 	mov	r0, r7                                        
   11ff0:	e28dc00c 	add	ip, sp, #12                                   
   11ff4:	e1a01004 	mov	r1, r4                                        
   11ff8:	e1a0200a 	mov	r2, sl                                        
   11ffc:	e1a03005 	mov	r3, r5                                        
   12000:	e58dc004 	str	ip, [sp, #4]                                  
   12004:	eb002179 	bl	1a5f0 <rtems_rfs_dir_lookup_ino>               
        tokenlen,                                                     
        &entry_ino,                                                   
        &entry_doff                                                   
      );                                                              
                                                                      
      if (rc == 0) {                                                  
   12008:	e3500000 	cmp	r0, #0                                        
           * rtems_rfs_rtems_eval_path().                             
           */                                                         
          memset (inode, 0, sizeof(*inode));                          
        }                                                             
      } else {                                                        
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;         
   1200c:	13a00002 	movne	r0, #2                                      
        tokenlen,                                                     
        &entry_ino,                                                   
        &entry_doff                                                   
      );                                                              
                                                                      
      if (rc == 0) {                                                  
   12010:	0a000008 	beq	12038 <rtems_rfs_rtems_eval_token+0xc4>       
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
   12014:	e28dd014 	add	sp, sp, #20                                   
   12018:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
   1201c:	e5da3000 	ldrb	r3, [sl]                                     
   12020:	e353002e 	cmp	r3, #46	; 0x2e                                
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
   12024:	03a03000 	moveq	r3, #0                                      
   12028:	0586300c 	streq	r3, [r6, #12]                               
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   1202c:	01a00005 	moveq	r0, r5                                      
static inline bool rtems_filesystem_is_current_directory(             
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  return tokenlen == 1 && token [0] == '.';                           
   12030:	1affffe9 	bne	11fdc <rtems_rfs_rtems_eval_token+0x68>       
   12034:	eafffff6 	b	12014 <rtems_rfs_rtems_eval_token+0xa0>         
        &entry_ino,                                                   
        &entry_doff                                                   
      );                                                              
                                                                      
      if (rc == 0) {                                                  
        rc = rtems_rfs_inode_close (fs, inode);                       
   12038:	e1a00007 	mov	r0, r7                                        
   1203c:	e1a01004 	mov	r1, r4                                        
   12040:	ebfffc1a 	bl	110b0 <rtems_rfs_inode_close>                  
        if (rc == 0) {                                                
   12044:	e3500000 	cmp	r0, #0                                        
   12048:	0a000005 	beq	12064 <rtems_rfs_rtems_eval_token+0xf0>       
        if (rc != 0) {                                                
          /*                                                          
           * This prevents the rtems_rfs_inode_close() from doing something in
           * rtems_rfs_rtems_eval_path().                             
           */                                                         
          memset (inode, 0, sizeof(*inode));                          
   1204c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12050:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   12054:	e3a02028 	mov	r2, #40	; 0x28                                <== NOT EXECUTED
   12058:	eb0038a0 	bl	202e0 <memset>                                 <== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   1205c:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   12060:	eaffffeb 	b	12014 <rtems_rfs_rtems_eval_token+0xa0>         <== NOT EXECUTED
      );                                                              
                                                                      
      if (rc == 0) {                                                  
        rc = rtems_rfs_inode_close (fs, inode);                       
        if (rc == 0) {                                                
          rc = rtems_rfs_inode_open (fs, entry_ino, inode, true);     
   12064:	e1a00007 	mov	r0, r7                                        
   12068:	e59d1008 	ldr	r1, [sp, #8]                                  
   1206c:	e1a02004 	mov	r2, r4                                        
   12070:	e3a03001 	mov	r3, #1                                        
   12074:	ebfffb93 	bl	10ec8 <rtems_rfs_inode_open>                   
        }                                                             
                                                                      
        if (rc != 0) {                                                
   12078:	e2508000 	subs	r8, r0, #0                                   
   1207c:	1afffff2 	bne	1204c <rtems_rfs_rtems_eval_token+0xd8>       
        status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_NO_ENTRY;         
        rc = -1;                                                      
      }                                                               
                                                                      
      if (rc == 0) {                                                  
        bool is_sym_link = rtems_rfs_rtems_node_type_by_inode (inode) 
   12080:	e1a00004 	mov	r0, r4                                        
   12084:	ebfffdd9 	bl	117f0 <rtems_rfs_rtems_node_type_by_inode>     
          == RTEMS_FILESYSTEM_SYM_LINK;                               
        int eval_flags = rtems_filesystem_eval_path_get_flags (ctx);  
        bool follow_sym_link = (eval_flags & RTEMS_FS_FOLLOW_SYM_LINK) != 0;
        bool terminal = !rtems_filesystem_eval_path_has_path (ctx);   
   12088:	e5965004 	ldr	r5, [r6, #4]                                  
   1208c:	e2755001 	rsbs	r5, r5, #1                                   
   12090:	33a05000 	movcc	r5, #0                                      
                                                                      
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
   12094:	e3500003 	cmp	r0, #3                                        
                                                                      
static inline int rtems_filesystem_eval_path_get_flags(               
  const rtems_filesystem_eval_path_context_t *ctx                     
)                                                                     
{                                                                     
  return ctx->flags;                                                  
   12098:	e5963010 	ldr	r3, [r6, #16]                                 
                                                                      
static inline void rtems_filesystem_eval_path_clear_token(            
  rtems_filesystem_eval_path_context_t *ctx                           
)                                                                     
{                                                                     
  ctx->tokenlen = 0;                                                  
   1209c:	e586800c 	str	r8, [r6, #12]                                 
   120a0:	1a00001b 	bne	12114 <rtems_rfs_rtems_eval_token+0x1a0>      
   120a4:	e3130010 	tst	r3, #16                                       
   120a8:	1a000001 	bne	120b4 <rtems_rfs_rtems_eval_token+0x140>      
   120ac:	e3550000 	cmp	r5, #0                                        
   120b0:	1a000017 	bne	12114 <rtems_rfs_rtems_eval_token+0x1a0>      
  rtems_filesystem_eval_path_context_t* ctx,                          
  rtems_rfs_file_system* fs,                                          
  rtems_rfs_ino ino                                                   
)                                                                     
{                                                                     
  size_t len = MAXPATHLEN;                                            
   120b4:	e3a05b01 	mov	r5, #1024	; 0x400                             
  char *link = malloc(len + 1);                                       
   120b8:	e59f00c0 	ldr	r0, [pc, #192]	; 12180 <rtems_rfs_rtems_eval_token+0x20c>
        bool terminal = !rtems_filesystem_eval_path_has_path (ctx);   
                                                                      
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
          rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);           
   120bc:	e59d8008 	ldr	r8, [sp, #8]                                  
  rtems_filesystem_eval_path_context_t* ctx,                          
  rtems_rfs_file_system* fs,                                          
  rtems_rfs_ino ino                                                   
)                                                                     
{                                                                     
  size_t len = MAXPATHLEN;                                            
   120c0:	e58d5010 	str	r5, [sp, #16]                                 
  char *link = malloc(len + 1);                                       
   120c4:	ebffd5da 	bl	7834 <malloc>                                  
                                                                      
  if (link != NULL) {                                                 
   120c8:	e2504000 	subs	r4, r0, #0                                   
   120cc:	0a000026 	beq	1216c <rtems_rfs_rtems_eval_token+0x1f8>      
    int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);       
   120d0:	e28dc010 	add	ip, sp, #16                                   
   120d4:	e1a00007 	mov	r0, r7                                        
   120d8:	e1a01008 	mov	r1, r8                                        
   120dc:	e1a02004 	mov	r2, r4                                        
   120e0:	e1a03005 	mov	r3, r5                                        
   120e4:	e58dc000 	str	ip, [sp]                                      
   120e8:	eb002e08 	bl	1d910 <rtems_rfs_symlink_read>                 
                                                                      
    if (rc == 0) {                                                    
   120ec:	e3500000 	cmp	r0, #0                                        
      rtems_filesystem_eval_path_recursive (ctx, link, len);          
   120f0:	e1a00006 	mov	r0, r6                                        
  char *link = malloc(len + 1);                                       
                                                                      
  if (link != NULL) {                                                 
    int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);       
                                                                      
    if (rc == 0) {                                                    
   120f4:	1a000019 	bne	12160 <rtems_rfs_rtems_eval_token+0x1ec>      
      rtems_filesystem_eval_path_recursive (ctx, link, len);          
   120f8:	e1a01004 	mov	r1, r4                                        
   120fc:	e59d2010 	ldr	r2, [sp, #16]                                 
   12100:	ebffdae7 	bl	8ca4 <rtems_filesystem_eval_path_recursive>    
    } else {                                                          
      rtems_filesystem_eval_path_error (ctx, 0);                      
    }                                                                 
                                                                      
    free(link);                                                       
   12104:	e1a00004 	mov	r0, r4                                        
   12108:	ebffd44a 	bl	7238 <free>                                    
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   1210c:	e3a00001 	mov	r0, #1                                        
   12110:	eaffffbf 	b	12014 <rtems_rfs_rtems_eval_token+0xa0>         
        rtems_filesystem_eval_path_clear_token (ctx);                 
                                                                      
        if (is_sym_link && (follow_sym_link || !terminal)) {          
          rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);           
        } else {                                                      
          rc = rtems_rfs_rtems_set_handlers (currentloc, inode) ? 0 : EIO;
   12114:	e2860018 	add	r0, r6, #24                                   
   12118:	e1a01004 	mov	r1, r4                                        
   1211c:	eb000192 	bl	1276c <rtems_rfs_rtems_set_handlers>           
   12120:	e3500000 	cmp	r0, #0                                        
   12124:	0a000005 	beq	12140 <rtems_rfs_rtems_eval_token+0x1cc>      
          if (rc == 0) {                                              
            rtems_rfs_rtems_set_pathloc_ino (currentloc, entry_ino);  
   12128:	e59d3008 	ldr	r3, [sp, #8]                                  
   1212c:	e5863020 	str	r3, [r6, #32]                                 
            rtems_rfs_rtems_set_pathloc_doff (currentloc, entry_doff);
   12130:	e59d300c 	ldr	r3, [sp, #12]                                 
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   12134:	e1a00005 	mov	r0, r5                                        
          rtems_rfs_rtems_follow_link (ctx, fs, entry_ino);           
        } else {                                                      
          rc = rtems_rfs_rtems_set_handlers (currentloc, inode) ? 0 : EIO;
          if (rc == 0) {                                              
            rtems_rfs_rtems_set_pathloc_ino (currentloc, entry_ino);  
            rtems_rfs_rtems_set_pathloc_doff (currentloc, entry_doff);
   12138:	e5863024 	str	r3, [r6, #36]	; 0x24                          
   1213c:	eaffffb4 	b	12014 <rtems_rfs_rtems_eval_token+0xa0>         
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;   
            }                                                         
          } else {                                                    
            rtems_filesystem_eval_path_error (                        
              ctx,                                                    
              rtems_rfs_rtems_error ("eval_path: set handlers", rc)   
   12140:	eb003513 	bl	1f594 <__errno>                                <== NOT EXECUTED
   12144:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   12148:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
                                                                      
            if (!terminal) {                                          
              status = RTEMS_FILESYSTEM_EVAL_PATH_GENERIC_CONTINUE;   
            }                                                         
          } else {                                                    
            rtems_filesystem_eval_path_error (                        
   1214c:	e3e01000 	mvn	r1, #0                                        <== NOT EXECUTED
   12150:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   12154:	ebffd9d7 	bl	88b8 <rtems_filesystem_eval_path_error>        <== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   12158:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1215c:	eaffffac 	b	12014 <rtems_rfs_rtems_eval_token+0xa0>         <== NOT EXECUTED
    int rc = rtems_rfs_symlink_read (fs, ino, link, len, &len);       
                                                                      
    if (rc == 0) {                                                    
      rtems_filesystem_eval_path_recursive (ctx, link, len);          
    } else {                                                          
      rtems_filesystem_eval_path_error (ctx, 0);                      
   12160:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   12164:	ebffd9d3 	bl	88b8 <rtems_filesystem_eval_path_error>        <== NOT EXECUTED
   12168:	eaffffe5 	b	12104 <rtems_rfs_rtems_eval_token+0x190>        <== NOT EXECUTED
    }                                                                 
                                                                      
    free(link);                                                       
  } else {                                                            
    rtems_filesystem_eval_path_error (ctx, ENOMEM);                   
   1216c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   12170:	e3a0100c 	mov	r1, #12                                       <== NOT EXECUTED
   12174:	ebffd9cf 	bl	88b8 <rtems_filesystem_eval_path_error>        <== NOT EXECUTED
  void *arg,                                                          
  const char *token,                                                  
  size_t tokenlen                                                     
)                                                                     
{                                                                     
  rtems_filesystem_eval_path_generic_status status =                  
   12178:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   1217c:	eaffffa4 	b	12014 <rtems_rfs_rtems_eval_token+0xa0>         <== NOT EXECUTED
                                                                      

00011c7c <rtems_rfs_rtems_fchmod>: } static int rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc, mode_t mode) {
   11c7c:	e92d4070 	push	{r4, r5, r6, lr}                             <== NOT EXECUTED
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (pathloc); 
   11c80:	e5902014 	ldr	r2, [r0, #20]                                 <== NOT EXECUTED
   11c84:	e5924008 	ldr	r4, [r2, #8]                                  <== NOT EXECUTED
}                                                                     
                                                                      
static int                                                            
rtems_rfs_rtems_fchmod (const rtems_filesystem_location_info_t* pathloc,
                        mode_t                                  mode) 
{                                                                     
   11c88:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
   11c8c:	e24dd028 	sub	sp, sp, #40	; 0x28                            <== NOT EXECUTED
   11c90:	e1a05001 	mov	r5, r1                                        <== NOT EXECUTED
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FCHMOD))           
    printf ("rtems-rfs-rtems: fchmod: in: ino:%" PRId32 " mode:%06" PRIomode_t "\n",
            ino, mode);                                               
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   11c94:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   11c98:	e5931008 	ldr	r1, [r3, #8]                                  <== NOT EXECUTED
   11c9c:	e1a0200d 	mov	r2, sp                                        <== NOT EXECUTED
   11ca0:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   11ca4:	ebfffc87 	bl	10ec8 <rtems_rfs_inode_open>                   <== NOT EXECUTED
  if (rc)                                                             
   11ca8:	e2506000 	subs	r6, r0, #0                                   <== NOT EXECUTED
   11cac:	0a000005 	beq	11cc8 <rtems_rfs_rtems_fchmod+0x4c>           <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: opening inode", rc);       
   11cb0:	eb003637 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11cb4:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   11cb8:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: closing inode", rc);       
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11cbc:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
   11cc0:	e28dd028 	add	sp, sp, #40	; 0x28                            <== NOT EXECUTED
   11cc4:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   11cc8:	e59d300c 	ldr	r3, [sp, #12]                                 <== NOT EXECUTED
   11ccc:	e5d32002 	ldrb	r2, [r3, #2]                                 <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &inode);                               
    return rtems_rfs_rtems_error ("fchmod: checking uid", EPERM);     
  }                                                                   
#endif                                                                
                                                                      
  imode &= ~(S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
   11cd0:	e1a02402 	lsl	r2, r2, #8                                    <== NOT EXECUTED
   11cd4:	e2022a0f 	and	r2, r2, #61440	; 0xf000                       <== NOT EXECUTED
  imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
   11cd8:	e1a05a05 	lsl	r5, r5, #20                                   <== NOT EXECUTED
   11cdc:	e1825a25 	orr	r5, r2, r5, lsr #20                           <== NOT EXECUTED
   11ce0:	e1a05805 	lsl	r5, r5, #16                                   <== NOT EXECUTED
 * @prarm mode The mode.                                              
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mode (rtems_rfs_inode_handle* handle, uint16_t mode)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->mode, mode);                    
   11ce4:	e1a02c25 	lsr	r2, r5, #24                                   <== NOT EXECUTED
   11ce8:	e5c32002 	strb	r2, [r3, #2]                                 <== NOT EXECUTED
   11cec:	e59d300c 	ldr	r3, [sp, #12]                                 <== NOT EXECUTED
   11cf0:	e1a05825 	lsr	r5, r5, #16                                   <== NOT EXECUTED
   11cf4:	e5c35003 	strb	r5, [r3, #3]                                 <== NOT EXECUTED
                                                                      
  rtems_rfs_inode_set_mode (&inode, imode);                           
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11cf8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   11cfc:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   11d00:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
   11d04:	e5cd3010 	strb	r3, [sp, #16]                                <== NOT EXECUTED
   11d08:	ebfffce8 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
  if (rc > 0)                                                         
   11d0c:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: closing inode", rc);       
  }                                                                   
                                                                      
  return 0;                                                           
   11d10:	d1a03006 	movle	r3, r6                                      <== NOT EXECUTED
  imode |= mode & (S_IRWXU | S_IRWXG | S_IRWXO | S_ISUID | S_ISGID | S_ISVTX);
                                                                      
  rtems_rfs_inode_set_mode (&inode, imode);                           
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
   11d14:	daffffe8 	ble	11cbc <rtems_rfs_rtems_fchmod+0x40>           <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("fchmod: closing inode", rc);       
   11d18:	eb00361d 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11d1c:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   11d20:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11d24:	eaffffe4 	b	11cbc <rtems_rfs_rtems_fchmod+0x40>             <== NOT EXECUTED
                                                                      

0001273c <rtems_rfs_rtems_fdatasync>: int rtems_rfs_rtems_fdatasync (rtems_libio_t* iop) { int rc; rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
   1273c:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          <== NOT EXECUTED
 * @param iop                                                         
 * @return int                                                        
 */                                                                   
int                                                                   
rtems_rfs_rtems_fdatasync (rtems_libio_t* iop)                        
{                                                                     
   12740:	e92d4010 	push	{r4, lr}                                     <== NOT EXECUTED
  int rc;                                                             
                                                                      
  rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
   12744:	e5930008 	ldr	r0, [r3, #8]                                  <== NOT EXECUTED
   12748:	eb001ef2 	bl	1a318 <rtems_rfs_buffer_sync>                  <== NOT EXECUTED
  if (rc)                                                             
   1274c:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
    return rtems_rfs_rtems_error ("fdatasync: sync", rc);             
                                                                      
  return 0;                                                           
   12750:	01a03004 	moveq	r3, r4                                      <== NOT EXECUTED
rtems_rfs_rtems_fdatasync (rtems_libio_t* iop)                        
{                                                                     
  int rc;                                                             
                                                                      
  rc = rtems_rfs_buffer_sync (rtems_rfs_rtems_pathloc_dev (&iop->pathinfo));
  if (rc)                                                             
   12754:	0a000002 	beq	12764 <rtems_rfs_rtems_fdatasync+0x28>        <== NOT EXECUTED
    return rtems_rfs_rtems_error ("fdatasync: sync", rc);             
   12758:	eb00338d 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1275c:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   12760:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
                                                                      
  return 0;                                                           
}                                                                     
   12764:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
   12768:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

0001e5fc <rtems_rfs_rtems_file_close>: * @param iop * @return int */ static int rtems_rfs_rtems_file_close (rtems_libio_t* iop) {
   1e5fc:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
   1e600:	e590501c 	ldr	r5, [r0, #28]                                 
  rtems_rfs_file_system* fs = rtems_rfs_file_fs (file);               
   1e604:	e595301c 	ldr	r3, [r5, #28]                                 
   1e608:	e5934098 	ldr	r4, [r3, #152]	; 0x98                         
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e60c:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e610:	e3a01000 	mov	r1, #0                                        
   1e614:	e5930000 	ldr	r0, [r3]                                      
   1e618:	e1a02001 	mov	r2, r1                                        
   1e61c:	ebffb574 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e620:	e2506000 	subs	r6, r0, #0                                   
   1e624:	1a000010 	bne	1e66c <rtems_rfs_rtems_file_close+0x70>       
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_CLOSE))       
    printf("rtems-rfs: file-close: handle:%p\n", file);               
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  rc = rtems_rfs_file_close (fs, file);                               
   1e628:	e1a01005 	mov	r1, r5                                        
   1e62c:	e1a00004 	mov	r0, r4                                        
   1e630:	ebfff59d 	bl	1bcac <rtems_rfs_file_close>                   
  if (rc > 0)                                                         
   1e634:	e2505000 	subs	r5, r0, #0                                   
   1e638:	da000002 	ble	1e648 <rtems_rfs_rtems_file_close+0x4c>       
    rc = rtems_rfs_rtems_error ("file-close: file close", rc);        
   1e63c:	eb0003d4 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e640:	e5805000 	str	r5, [r0]                                      <== NOT EXECUTED
   1e644:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e648:	e5946080 	ldr	r6, [r4, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e64c:	e1a00004 	mov	r0, r4                                        
   1e650:	ebffef54 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e654:	e5960000 	ldr	r0, [r6]                                      
   1e658:	ebffb5ae 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e65c:	e2504000 	subs	r4, r0, #0                                   
   1e660:	1a00000c 	bne	1e698 <rtems_rfs_rtems_file_close+0x9c>       
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
  return rc;                                                          
}                                                                     
   1e664:	e1a00005 	mov	r0, r5                                        
   1e668:	e8bd8070 	pop	{r4, r5, r6, pc}                              
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e66c:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e670:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e674:	ebffd06d 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e678:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e67c:	0affffe9 	beq	1e628 <rtems_rfs_rtems_file_close+0x2c>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1e680:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1e684:	ebffa260 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e688:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e68c:	e59f0034 	ldr	r0, [pc, #52]	; 1e6c8 <rtems_rfs_rtems_file_close+0xcc><== NOT EXECUTED
   1e690:	eb000783 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e694:	eaffffe3 	b	1e628 <rtems_rfs_rtems_file_close+0x2c>         <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e698:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e69c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e6a0:	ebffd062 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e6a4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e6a8:	0affffed 	beq	1e664 <rtems_rfs_rtems_file_close+0x68>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e6ac:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e6b0:	ebffa255 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e6b4:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e6b8:	e59f000c 	ldr	r0, [pc, #12]	; 1e6cc <rtems_rfs_rtems_file_close+0xd0><== NOT EXECUTED
   1e6bc:	eb000778 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e6c0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1e6c4:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
                                                                      

0001e3d8 <rtems_rfs_rtems_file_ftruncate>: * @return int */ static int rtems_rfs_rtems_file_ftruncate (rtems_libio_t* iop, off_t length) {
   1e3d8:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
   1e3dc:	e590401c 	ldr	r4, [r0, #28]                                 
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))      
    printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
   1e3e0:	e594301c 	ldr	r3, [r4, #28]                                 
 * Lock the RFS file system.                                          
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_lock (rtems_rfs_file_system* fs)                     
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e3e4:	e5933098 	ldr	r3, [r3, #152]	; 0x98                         
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e3e8:	e5933080 	ldr	r3, [r3, #128]	; 0x80                         
 * @return int                                                        
 */                                                                   
static int                                                            
rtems_rfs_rtems_file_ftruncate (rtems_libio_t* iop,                   
                                off_t          length)                
{                                                                     
   1e3ec:	e1a06001 	mov	r6, r1                                        
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e3f0:	e3a01000 	mov	r1, #0                                        
   1e3f4:	e1a07002 	mov	r7, r2                                        
   1e3f8:	e5930000 	ldr	r0, [r3]                                      
   1e3fc:	e1a02001 	mov	r2, r1                                        
   1e400:	ebffb5fb 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e404:	e2505000 	subs	r5, r0, #0                                   
   1e408:	1a000012 	bne	1e458 <rtems_rfs_rtems_file_ftruncate+0x80>   
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_FTRUNC))      
    printf("rtems-rfs: file-ftrunc: handle:%p length:%" PRIdoff_t "\n", file, length);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  rc = rtems_rfs_file_set_size (file, length);                        
   1e40c:	e1a00004 	mov	r0, r4                                        
   1e410:	e1a01006 	mov	r1, r6                                        
   1e414:	e1a02007 	mov	r2, r7                                        
   1e418:	ebfff83b 	bl	1c50c <rtems_rfs_file_set_size>                
  if (rc)                                                             
   1e41c:	e2505000 	subs	r5, r0, #0                                   
   1e420:	0a000002 	beq	1e430 <rtems_rfs_rtems_file_ftruncate+0x58>   
    rc = rtems_rfs_rtems_error ("file_ftruncate: set size", rc);      
   1e424:	eb00045a 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e428:	e5805000 	str	r5, [r0]                                      <== NOT EXECUTED
   1e42c:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
   1e430:	e594301c 	ldr	r3, [r4, #28]                                 
   1e434:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e438:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e43c:	ebffefd9 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e440:	e5940000 	ldr	r0, [r4]                                      
   1e444:	ebffb633 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e448:	e2504000 	subs	r4, r0, #0                                   
   1e44c:	1a00000c 	bne	1e484 <rtems_rfs_rtems_file_ftruncate+0xac>   
                                                                      
  return rc;                                                          
}                                                                     
   1e450:	e1a00005 	mov	r0, r5                                        
   1e454:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e458:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e45c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e460:	ebffd0f2 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e464:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e468:	0affffe7 	beq	1e40c <rtems_rfs_rtems_file_ftruncate+0x34>   <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1e46c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1e470:	ebffa2e5 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e474:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e478:	e59f0034 	ldr	r0, [pc, #52]	; 1e4b4 <rtems_rfs_rtems_file_ftruncate+0xdc><== NOT EXECUTED
   1e47c:	eb000808 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e480:	eaffffe1 	b	1e40c <rtems_rfs_rtems_file_ftruncate+0x34>     <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e484:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e488:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e48c:	ebffd0e7 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e490:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e494:	0affffed 	beq	1e450 <rtems_rfs_rtems_file_ftruncate+0x78>   <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e498:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e49c:	ebffa2da 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e4a0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e4a4:	e59f000c 	ldr	r0, [pc, #12]	; 1e4b8 <rtems_rfs_rtems_file_ftruncate+0xe0><== NOT EXECUTED
   1e4a8:	eb0007fd 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e4ac:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   1e4b0:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

0001e4bc <rtems_rfs_rtems_file_lseek>: */ static off_t rtems_rfs_rtems_file_lseek (rtems_libio_t* iop, off_t offset, int whence) {
   1e4bc:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
   1e4c0:	e590501c 	ldr	r5, [r0, #28]                                 
 */                                                                   
static off_t                                                          
rtems_rfs_rtems_file_lseek (rtems_libio_t* iop,                       
                            off_t          offset,                    
                            int            whence)                    
{                                                                     
   1e4c4:	e1a04000 	mov	r4, r0                                        
  off_t                  new_offset;                                  
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))       
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
   1e4c8:	e595001c 	ldr	r0, [r5, #28]                                 
 * Lock the RFS file system.                                          
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_lock (rtems_rfs_file_system* fs)                     
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e4cc:	e5900098 	ldr	r0, [r0, #152]	; 0x98                         
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e4d0:	e5900080 	ldr	r0, [r0, #128]	; 0x80                         
 */                                                                   
static off_t                                                          
rtems_rfs_rtems_file_lseek (rtems_libio_t* iop,                       
                            off_t          offset,                    
                            int            whence)                    
{                                                                     
   1e4d4:	e1a08001 	mov	r8, r1                                        
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e4d8:	e3a01000 	mov	r1, #0                                        
   1e4dc:	e24dd010 	sub	sp, sp, #16                                   
   1e4e0:	e1a09002 	mov	r9, r2                                        
   1e4e4:	e5900000 	ldr	r0, [r0]                                      
   1e4e8:	e1a02001 	mov	r2, r1                                        
   1e4ec:	e1a06003 	mov	r6, r3                                        
   1e4f0:	ebffb5bf 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e4f4:	e2507000 	subs	r7, r0, #0                                   
   1e4f8:	1a000020 	bne	1e580 <rtems_rfs_rtems_file_lseek+0xc4>       
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  old_offset = iop->offset;                                           
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
   1e4fc:	e1a03006 	mov	r3, r6                                        
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))       
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  old_offset = iop->offset;                                           
   1e500:	e99400c0 	ldmib	r4, {r6, r7}                                
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
   1e504:	e1a01008 	mov	r1, r8                                        
   1e508:	e1a02009 	mov	r2, r9                                        
   1e50c:	e1a00004 	mov	r0, r4                                        
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_LSEEK))       
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  old_offset = iop->offset;                                           
   1e510:	e88d00c0 	stm	sp, {r6, r7}                                  
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
   1e514:	eb00018d 	bl	1eb50 <rtems_filesystem_default_lseek_file>    
  if (new_offset != -1)                                               
   1e518:	e3e0a000 	mvn	sl, #0                                        
   1e51c:	e3e0b000 	mvn	fp, #0                                        
    printf("rtems-rfs: file-lseek: handle:%p offset:%" PRIdoff_t "\n", file, offset);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  old_offset = iop->offset;                                           
  new_offset = rtems_filesystem_default_lseek_file (iop, offset, whence);
   1e520:	e1a08000 	mov	r8, r0                                        
   1e524:	e1a09001 	mov	r9, r1                                        
  if (new_offset != -1)                                               
   1e528:	e159000b 	cmp	r9, fp                                        
   1e52c:	0158000a 	cmpeq	r8, sl                                      
   1e530:	0a000006 	beq	1e550 <rtems_rfs_rtems_file_lseek+0x94>       
  {                                                                   
    rtems_rfs_pos pos = iop->offset;                                  
   1e534:	e9940006 	ldmib	r4, {r1, r2}                                
   1e538:	e28d3010 	add	r3, sp, #16                                   
   1e53c:	e9230006 	stmdb	r3!, {r1, r2}                               
    int           rc = rtems_rfs_file_seek (file, pos, &pos);         
   1e540:	e1a00005 	mov	r0, r5                                        
   1e544:	ebfff7b2 	bl	1c414 <rtems_rfs_file_seek>                    
                                                                      
    if (rc)                                                           
   1e548:	e2506000 	subs	r6, r0, #0                                   
   1e54c:	1a000021 	bne	1e5d8 <rtems_rfs_rtems_file_lseek+0x11c>      
      iop->offset = old_offset;                                       
      new_offset = -1;                                                
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
   1e550:	e595301c 	ldr	r3, [r5, #28]                                 
   1e554:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e558:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e55c:	ebffef91 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e560:	e5940000 	ldr	r0, [r4]                                      
   1e564:	ebffb5eb 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e568:	e2504000 	subs	r4, r0, #0                                   
   1e56c:	1a00000e 	bne	1e5ac <rtems_rfs_rtems_file_lseek+0xf0>       
                                                                      
  return new_offset;                                                  
}                                                                     
   1e570:	e1a00008 	mov	r0, r8                                        
   1e574:	e1a01009 	mov	r1, r9                                        
   1e578:	e28dd010 	add	sp, sp, #16                                   
   1e57c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e580:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e584:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e588:	ebffd0a8 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e58c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e590:	0affffd9 	beq	1e4fc <rtems_rfs_rtems_file_lseek+0x40>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1e594:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1e598:	ebffa29b 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e59c:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e5a0:	e59f004c 	ldr	r0, [pc, #76]	; 1e5f4 <rtems_rfs_rtems_file_lseek+0x138><== NOT EXECUTED
   1e5a4:	eb0007be 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e5a8:	eaffffd3 	b	1e4fc <rtems_rfs_rtems_file_lseek+0x40>         <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e5ac:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e5b0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e5b4:	ebffd09d 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e5b8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e5bc:	0affffeb 	beq	1e570 <rtems_rfs_rtems_file_lseek+0xb4>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e5c0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e5c4:	ebffa290 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e5c8:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e5cc:	e59f0024 	ldr	r0, [pc, #36]	; 1e5f8 <rtems_rfs_rtems_file_lseek+0x13c><== NOT EXECUTED
   1e5d0:	eb0007b3 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e5d4:	eaffffe5 	b	1e570 <rtems_rfs_rtems_file_lseek+0xb4>         <== NOT EXECUTED
    rtems_rfs_pos pos = iop->offset;                                  
    int           rc = rtems_rfs_file_seek (file, pos, &pos);         
                                                                      
    if (rc)                                                           
    {                                                                 
      rtems_rfs_rtems_error ("file_lseek: lseek", rc);                
   1e5d8:	eb0003ed 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e5dc:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
      iop->offset = old_offset;                                       
   1e5e0:	e89d00c0 	ldm	sp, {r6, r7}                                  <== NOT EXECUTED
      new_offset = -1;                                                
   1e5e4:	e1a0800a 	mov	r8, sl                                        <== NOT EXECUTED
    int           rc = rtems_rfs_file_seek (file, pos, &pos);         
                                                                      
    if (rc)                                                           
    {                                                                 
      rtems_rfs_rtems_error ("file_lseek: lseek", rc);                
      iop->offset = old_offset;                                       
   1e5e8:	e98400c0 	stmib	r4, {r6, r7}                                <== NOT EXECUTED
      new_offset = -1;                                                
   1e5ec:	e1a0900b 	mov	r9, fp                                        <== NOT EXECUTED
   1e5f0:	eaffffd6 	b	1e550 <rtems_rfs_rtems_file_lseek+0x94>         <== NOT EXECUTED
                                                                      

0001e6d0 <rtems_rfs_rtems_file_open>: rtems_rfs_rtems_file_open (rtems_libio_t* iop, const char* pathname, int oflag, mode_t mode) { rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1e6d0:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
static int                                                            
rtems_rfs_rtems_file_open (rtems_libio_t* iop,                        
                           const char*    pathname,                   
                           int            oflag,                      
                           mode_t         mode)                       
{                                                                     
   1e6d4:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (&iop->pathinfo);
   1e6d8:	e5934008 	ldr	r4, [r3, #8]                                  
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e6dc:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e6e0:	e3a01000 	mov	r1, #0                                        
static int                                                            
rtems_rfs_rtems_file_open (rtems_libio_t* iop,                        
                           const char*    pathname,                   
                           int            oflag,                      
                           mode_t         mode)                       
{                                                                     
   1e6e4:	e24dd004 	sub	sp, sp, #4                                    
   1e6e8:	e1a05000 	mov	r5, r0                                        
   1e6ec:	e1a02001 	mov	r2, r1                                        
   1e6f0:	e5930000 	ldr	r0, [r3]                                      
   1e6f4:	ebffb53e 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e6f8:	e2506000 	subs	r6, r0, #0                                   
   1e6fc:	1a00001e 	bne	1e77c <rtems_rfs_rtems_file_open+0xac>        
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  ino = rtems_rfs_rtems_get_iop_ino (iop);                            
                                                                      
  rc = rtems_rfs_file_open (fs, ino, flags, &file);                   
   1e700:	e1a00004 	mov	r0, r4                                        
   1e704:	e5951018 	ldr	r1, [r5, #24]                                 
   1e708:	e3a02000 	mov	r2, #0                                        
   1e70c:	e1a0300d 	mov	r3, sp                                        
   1e710:	ebfff49a 	bl	1b980 <rtems_rfs_file_open>                    
  if (rc > 0)                                                         
   1e714:	e2506000 	subs	r6, r0, #0                                   
   1e718:	da000028 	ble	1e7c0 <rtems_rfs_rtems_file_open+0xf0>        
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e71c:	e5945080 	ldr	r5, [r4, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1e720:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e724:	ebffef1f 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e728:	e5950000 	ldr	r0, [r5]                                      <== NOT EXECUTED
   1e72c:	ebffb579 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e730:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1e734:	1a000005 	bne	1e750 <rtems_rfs_rtems_file_open+0x80>        <== NOT EXECUTED
  {                                                                   
    rtems_rfs_rtems_unlock (fs);                                      
    return rtems_rfs_rtems_error ("file-open: open", rc);             
   1e738:	eb000395 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e73c:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   1e740:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_set_iop_file_handle (iop, file);                    
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
}                                                                     
   1e744:	e1a00004 	mov	r0, r4                                        
   1e748:	e28dd004 	add	sp, sp, #4                                    
   1e74c:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e750:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e754:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e758:	ebffd034 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e75c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e760:	0afffff4 	beq	1e738 <rtems_rfs_rtems_file_open+0x68>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e764:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e768:	ebffa227 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e76c:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e770:	e59f00a0 	ldr	r0, [pc, #160]	; 1e818 <rtems_rfs_rtems_file_open+0x148><== NOT EXECUTED
   1e774:	eb00074a 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e778:	eaffffee 	b	1e738 <rtems_rfs_rtems_file_open+0x68>          <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e77c:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e780:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e784:	ebffd029 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e788:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e78c:	0affffdb 	beq	1e700 <rtems_rfs_rtems_file_open+0x30>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1e790:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1e794:	ebffa21c 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e798:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e79c:	e59f0078 	ldr	r0, [pc, #120]	; 1e81c <rtems_rfs_rtems_file_open+0x14c><== NOT EXECUTED
   1e7a0:	eb00073f 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
                                                                      
  ino = rtems_rfs_rtems_get_iop_ino (iop);                            
                                                                      
  rc = rtems_rfs_file_open (fs, ino, flags, &file);                   
   1e7a4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e7a8:	e5951018 	ldr	r1, [r5, #24]                                 <== NOT EXECUTED
   1e7ac:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   1e7b0:	e1a0300d 	mov	r3, sp                                        <== NOT EXECUTED
   1e7b4:	ebfff471 	bl	1b980 <rtems_rfs_file_open>                    <== NOT EXECUTED
  if (rc > 0)                                                         
   1e7b8:	e2506000 	subs	r6, r0, #0                                   <== NOT EXECUTED
   1e7bc:	caffffd6 	bgt	1e71c <rtems_rfs_rtems_file_open+0x4c>        <== NOT EXECUTED
  }                                                                   
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_OPEN))        
    printf("rtems-rfs: file-open: handle:%p\n", file);                
                                                                      
  rtems_rfs_rtems_set_iop_file_handle (iop, file);                    
   1e7c0:	e59d3000 	ldr	r3, [sp]                                      
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e7c4:	e5946080 	ldr	r6, [r4, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e7c8:	e1a00004 	mov	r0, r4                                        
   1e7cc:	e585301c 	str	r3, [r5, #28]                                 
   1e7d0:	ebffeef4 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e7d4:	e5960000 	ldr	r0, [r6]                                      
   1e7d8:	ebffb54e 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e7dc:	e2504000 	subs	r4, r0, #0                                   
   1e7e0:	0affffd7 	beq	1e744 <rtems_rfs_rtems_file_open+0x74>        
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e7e4:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e7e8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e7ec:	ebffd00f 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e7f0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
  return 0;                                                           
   1e7f4:	01a04000 	moveq	r4, r0                                      <== NOT EXECUTED
   1e7f8:	0affffd1 	beq	1e744 <rtems_rfs_rtems_file_open+0x74>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e7fc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e800:	ebffa201 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e804:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e808:	e59f0008 	ldr	r0, [pc, #8]	; 1e818 <rtems_rfs_rtems_file_open+0x148><== NOT EXECUTED
   1e80c:	eb000724 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e810:	e3a04000 	mov	r4, #0                                        <== NOT EXECUTED
   1e814:	eaffffca 	b	1e744 <rtems_rfs_rtems_file_open+0x74>          <== NOT EXECUTED
                                                                      

0001e1e8 <rtems_rfs_rtems_file_read>: */ static ssize_t rtems_rfs_rtems_file_read (rtems_libio_t* iop, void* buffer, size_t count) {
   1e1e8:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
   1e1ec:	e590401c 	ldr	r4, [r0, #28]                                 
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))        
    printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
   1e1f0:	e594301c 	ldr	r3, [r4, #28]                                 
 * Lock the RFS file system.                                          
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_lock (rtems_rfs_file_system* fs)                     
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e1f4:	e5933098 	ldr	r3, [r3, #152]	; 0x98                         
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e1f8:	e5933080 	ldr	r3, [r3, #128]	; 0x80                         
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_file_read (rtems_libio_t* iop,                        
                           void*          buffer,                     
                           size_t         count)                      
{                                                                     
   1e1fc:	e1a07001 	mov	r7, r1                                        
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e200:	e3a01000 	mov	r1, #0                                        
   1e204:	e24dd00c 	sub	sp, sp, #12                                   
   1e208:	e1a0a000 	mov	sl, r0                                        
   1e20c:	e1a05002 	mov	r5, r2                                        
   1e210:	e5930000 	ldr	r0, [r3]                                      
   1e214:	e1a02001 	mov	r2, r1                                        
   1e218:	ebffb675 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e21c:	e2506000 	subs	r6, r0, #0                                   
   1e220:	1a00005b 	bne	1e394 <rtems_rfs_rtems_file_read+0x1ac>       
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
   1e224:	e594101c 	ldr	r1, [r4, #28]                                 
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_READ))        
    printf("rtems-rfs: file-read: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
   1e228:	e99a000c 	ldmib	sl, {r2, r3}                                
   1e22c:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1e230:	e2811084 	add	r1, r1, #132	; 0x84                           
   1e234:	e88d000c 	stm	sp, {r2, r3}                                  
   1e238:	ebffeb2e 	bl	18ef8 <rtems_rfs_block_get_size>               
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
   1e23c:	e89d000c 	ldm	sp, {r2, r3}                                  
   1e240:	e1530001 	cmp	r3, r1                                        
   1e244:	01520000 	cmpeq	r2, r0                                      
   1e248:	23a02000 	movcs	r2, #0                                      
   1e24c:	23a03000 	movcs	r3, #0                                      
                           size_t         count)                      
{                                                                     
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
  rtems_rfs_pos          pos;                                         
  uint8_t*               data = buffer;                               
  ssize_t                read = 0;                                    
   1e250:	23a08000 	movcs	r8, #0                                      
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
   1e254:	2a00003f 	bcs	1e358 <rtems_rfs_rtems_file_read+0x170>       
  {                                                                   
    while (count)                                                     
   1e258:	e3550000 	cmp	r5, #0                                        
   1e25c:	03a02000 	moveq	r2, #0                                      
   1e260:	03a03000 	moveq	r3, #0                                      
   1e264:	01a08005 	moveq	r8, r5                                      
   1e268:	0a00003a 	beq	1e358 <rtems_rfs_rtems_file_read+0x170>       
   1e26c:	e3a08000 	mov	r8, #0                                        
   1e270:	ea000002 	b	1e280 <rtems_rfs_rtems_file_read+0x98>          
   1e274:	e3550000 	cmp	r5, #0                                        
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
                                                                      
      data  += size;                                                  
      count -= size;                                                  
      read  += size;                                                  
   1e278:	e0868008 	add	r8, r6, r8                                    
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
  {                                                                   
    while (count)                                                     
   1e27c:	0a000031 	beq	1e348 <rtems_rfs_rtems_file_read+0x160>       
    {                                                                 
      size_t size;                                                    
                                                                      
      rc = rtems_rfs_file_io_start (file, &size, true);               
   1e280:	e28d1008 	add	r1, sp, #8                                    
   1e284:	e3a02001 	mov	r2, #1                                        
   1e288:	e1a00004 	mov	r0, r4                                        
   1e28c:	ebfff742 	bl	1bf9c <rtems_rfs_file_io_start>                
      if (rc > 0)                                                     
   1e290:	e2506000 	subs	r6, r0, #0                                   
   1e294:	ca000049 	bgt	1e3c0 <rtems_rfs_rtems_file_read+0x1d8>       
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-start", rc);
        break;                                                        
      }                                                               
                                                                      
      if (size == 0)                                                  
   1e298:	e59d6008 	ldr	r6, [sp, #8]                                  
   1e29c:	e3560000 	cmp	r6, #0                                        
   1e2a0:	0a000028 	beq	1e348 <rtems_rfs_rtems_file_read+0x160>       
        break;                                                        
                                                                      
      if (size > count)                                               
        size = count;                                                 
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
   1e2a4:	e594200c 	ldr	r2, [r4, #12]                                 
      }                                                               
                                                                      
      if (size == 0)                                                  
        break;                                                        
                                                                      
      if (size > count)                                               
   1e2a8:	e1560005 	cmp	r6, r5                                        
        size = count;                                                 
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
   1e2ac:	e5943014 	ldr	r3, [r4, #20]                                 
   1e2b0:	e592101c 	ldr	r1, [r2, #28]                                 
                                                                      
      if (size == 0)                                                  
        break;                                                        
                                                                      
      if (size > count)                                               
        size = count;                                                 
   1e2b4:	81a06005 	movhi	r6, r5                                      
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
   1e2b8:	e0811003 	add	r1, r1, r3                                    
   1e2bc:	e1a00007 	mov	r0, r7                                        
   1e2c0:	e1a02006 	mov	r2, r6                                        
                                                                      
      if (size == 0)                                                  
        break;                                                        
                                                                      
      if (size > count)                                               
        size = count;                                                 
   1e2c4:	858d5008 	strhi	r5, [sp, #8]                                
      }                                                               
                                                                      
      if (size == 0)                                                  
        break;                                                        
                                                                      
      if (size > count)                                               
   1e2c8:	90665005 	rsbls	r5, r6, r5                                  
        size = count;                                                 
   1e2cc:	83a05000 	movhi	r5, #0                                      
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
   1e2d0:	eb00077f 	bl	200d4 <memcpy>                                 
                                                                      
      data  += size;                                                  
      count -= size;                                                  
      read  += size;                                                  
                                                                      
      rc = rtems_rfs_file_io_end (file, size, true);                  
   1e2d4:	e1a00004 	mov	r0, r4                                        
   1e2d8:	e1a01006 	mov	r1, r6                                        
   1e2dc:	e3a02001 	mov	r2, #1                                        
   1e2e0:	ebfff7b3 	bl	1c1b4 <rtems_rfs_file_io_end>                  
      if (rc > 0)                                                     
   1e2e4:	e2509000 	subs	r9, r0, #0                                   
      if (size > count)                                               
        size = count;                                                 
                                                                      
      memcpy (data, rtems_rfs_file_data (file), size);                
                                                                      
      data  += size;                                                  
   1e2e8:	e0877006 	add	r7, r7, r6                                    
      count -= size;                                                  
      read  += size;                                                  
                                                                      
      rc = rtems_rfs_file_io_end (file, size, true);                  
      if (rc > 0)                                                     
   1e2ec:	daffffe0 	ble	1e274 <rtems_rfs_rtems_file_read+0x8c>        
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-end", rc); 
   1e2f0:	eb0004a7 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e2f4:	e5809000 	str	r9, [r0]                                      <== NOT EXECUTED
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
  {                                                                   
    while (count)                                                     
   1e2f8:	e3e08000 	mvn	r8, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  if (read >= 0)                                                      
    iop->offset = pos + read;                                         
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
   1e2fc:	e594301c 	ldr	r3, [r4, #28]                                 <== NOT EXECUTED
   1e300:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e304:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1e308:	ebfff026 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e30c:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1e310:	ebffb680 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e314:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1e318:	0a00001a 	beq	1e388 <rtems_rfs_rtems_file_read+0x1a0>       <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e31c:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e320:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e324:	ebffd141 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e328:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e32c:	0a000015 	beq	1e388 <rtems_rfs_rtems_file_read+0x1a0>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e330:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e334:	ebffa334 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e338:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e33c:	e59f008c 	ldr	r0, [pc, #140]	; 1e3d0 <rtems_rfs_rtems_file_read+0x1e8><== NOT EXECUTED
   1e340:	eb000857 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e344:	ea00000f 	b	1e388 <rtems_rfs_rtems_file_read+0x1a0>         <== NOT EXECUTED
        break;                                                        
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (read >= 0)                                                      
   1e348:	e3580000 	cmp	r8, #0                                        
   1e34c:	ba000005 	blt	1e368 <rtems_rfs_rtems_file_read+0x180>       
   1e350:	e1a02008 	mov	r2, r8                                        
   1e354:	e1a03fc8 	asr	r3, r8, #31                                   
    iop->offset = pos + read;                                         
   1e358:	e89d0003 	ldm	sp, {r0, r1}                                  
   1e35c:	e0922000 	adds	r2, r2, r0                                   
   1e360:	e0a33001 	adc	r3, r3, r1                                    
   1e364:	e98a000c 	stmib	sl, {r2, r3}                                
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
   1e368:	e594301c 	ldr	r3, [r4, #28]                                 
   1e36c:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e370:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e374:	ebfff00b 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e378:	e5940000 	ldr	r0, [r4]                                      
   1e37c:	ebffb665 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e380:	e2504000 	subs	r4, r0, #0                                   
   1e384:	1affffe4 	bne	1e31c <rtems_rfs_rtems_file_read+0x134>       
                                                                      
  return read;                                                        
}                                                                     
   1e388:	e1a00008 	mov	r0, r8                                        
   1e38c:	e28dd00c 	add	sp, sp, #12                                   
   1e390:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e394:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e398:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e39c:	ebffd123 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e3a0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e3a4:	0affff9e 	beq	1e224 <rtems_rfs_rtems_file_read+0x3c>        <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1e3a8:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   1e3ac:	ebffa316 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e3b0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e3b4:	e59f0018 	ldr	r0, [pc, #24]	; 1e3d4 <rtems_rfs_rtems_file_read+0x1ec><== NOT EXECUTED
   1e3b8:	eb000839 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e3bc:	eaffff98 	b	1e224 <rtems_rfs_rtems_file_read+0x3c>          <== NOT EXECUTED
      size_t size;                                                    
                                                                      
      rc = rtems_rfs_file_io_start (file, &size, true);               
      if (rc > 0)                                                     
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-start", rc);
   1e3c0:	eb000473 	bl	1f594 <__errno>                                <== NOT EXECUTED
                                                                      
  pos = iop->offset;                                                  
                                                                      
  if (pos < rtems_rfs_file_size (file))                               
  {                                                                   
    while (count)                                                     
   1e3c4:	e3e08000 	mvn	r8, #0                                        <== NOT EXECUTED
      size_t size;                                                    
                                                                      
      rc = rtems_rfs_file_io_start (file, &size, true);               
      if (rc > 0)                                                     
      {                                                               
        read = rtems_rfs_rtems_error ("file-read: read: io-start", rc);
   1e3c8:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   1e3cc:	eaffffca 	b	1e2fc <rtems_rfs_rtems_file_read+0x114>         <== NOT EXECUTED
                                                                      

0001e820 <rtems_rfs_rtems_file_write>: */ static ssize_t rtems_rfs_rtems_file_write (rtems_libio_t* iop, const void* buffer, size_t count) {
   1e820:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
  rtems_rfs_file_handle* file = rtems_rfs_rtems_get_iop_file_handle (iop);
   1e824:	e590401c 	ldr	r4, [r0, #28]                                 
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))       
    printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
   1e828:	e594301c 	ldr	r3, [r4, #28]                                 
 * Lock the RFS file system.                                          
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_lock (rtems_rfs_file_system* fs)                     
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e82c:	e5933098 	ldr	r3, [r3, #152]	; 0x98                         
  .fstat_h     = rtems_rfs_rtems_fstat,                               
  .ftruncate_h = rtems_rfs_rtems_file_ftruncate,                      
  .fsync_h     = rtems_rfs_rtems_fdatasync,                           
  .fdatasync_h = rtems_rfs_rtems_fdatasync,                           
  .fcntl_h     = rtems_filesystem_default_fcntl                       
};                                                                    
   1e830:	e5933080 	ldr	r3, [r3, #128]	; 0x80                         
 */                                                                   
static ssize_t                                                        
rtems_rfs_rtems_file_write (rtems_libio_t* iop,                       
                            const void*    buffer,                    
                            size_t         count)                     
{                                                                     
   1e834:	e1a06001 	mov	r6, r1                                        
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1e838:	e3a01000 	mov	r1, #0                                        
   1e83c:	e24dd00c 	sub	sp, sp, #12                                   
   1e840:	e1a07000 	mov	r7, r0                                        
   1e844:	e1a05002 	mov	r5, r2                                        
   1e848:	e5930000 	ldr	r0, [r3]                                      
   1e84c:	e1a02001 	mov	r2, r1                                        
   1e850:	ebffb4e7 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e854:	e2508000 	subs	r8, r0, #0                                   
   1e858:	1a000072 	bne	1ea28 <rtems_rfs_rtems_file_write+0x208>      
    printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
  file_size = rtems_rfs_file_size (file);                             
   1e85c:	e594101c 	ldr	r1, [r4, #28]                                 
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_FILE_WRITE))       
    printf("rtems-rfs: file-write: handle:%p count:%zd\n", file, count);
                                                                      
  rtems_rfs_rtems_lock (rtems_rfs_file_fs (file));                    
                                                                      
  pos = iop->offset;                                                  
   1e860:	e997000c 	ldmib	r7, {r2, r3}                                
   1e864:	e5910098 	ldr	r0, [r1, #152]	; 0x98                         
   1e868:	e2811084 	add	r1, r1, #132	; 0x84                           
   1e86c:	e88d000c 	stm	sp, {r2, r3}                                  
   1e870:	ebffe9a0 	bl	18ef8 <rtems_rfs_block_get_size>               
  file_size = rtems_rfs_file_size (file);                             
  if (pos > file_size)                                                
   1e874:	e89d000c 	ldm	sp, {r2, r3}                                  
   1e878:	e1a08000 	mov	r8, r0                                        
   1e87c:	e1a09001 	mov	r9, r1                                        
   1e880:	e1590003 	cmp	r9, r3                                        
   1e884:	01580002 	cmpeq	r8, r2                                      
   1e888:	3a000071 	bcc	1ea54 <rtems_rfs_rtems_file_write+0x234>      
      return rtems_rfs_rtems_error ("file-write: write extend", rc);  
    }                                                                 
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
   1e88c:	e1530009 	cmp	r3, r9                                        
   1e890:	01520008 	cmpeq	r2, r8                                      
   1e894:	3a00004c 	bcc	1e9cc <rtems_rfs_rtems_file_write+0x1ac>      
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
   1e898:	e3550000 	cmp	r5, #0                                        
   1e89c:	03a02000 	moveq	r2, #0                                      
   1e8a0:	03a03000 	moveq	r3, #0                                      
   1e8a4:	01a06005 	moveq	r6, r5                                      
   1e8a8:	0a000038 	beq	1e990 <rtems_rfs_rtems_file_write+0x170>      
   1e8ac:	e1a0a006 	mov	sl, r6                                        
   1e8b0:	e3a06000 	mov	r6, #0                                        
   1e8b4:	ea000002 	b	1e8c4 <rtems_rfs_rtems_file_write+0xa4>         
   1e8b8:	e0555008 	subs	r5, r5, r8                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
                                                                      
    data  += size;                                                    
    count -= size;                                                    
    write  += size;                                                   
   1e8bc:	e0866008 	add	r6, r6, r8                                    
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
   1e8c0:	0a00002e 	beq	1e980 <rtems_rfs_rtems_file_write+0x160>      
  {                                                                   
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
   1e8c4:	e28d1008 	add	r1, sp, #8                                    
   1e8c8:	e3a02000 	mov	r2, #0                                        
   1e8cc:	e1a00004 	mov	r0, r4                                        
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
  {                                                                   
    size_t size = count;                                              
   1e8d0:	e58d5008 	str	r5, [sp, #8]                                  
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
   1e8d4:	ebfff5b0 	bl	1bf9c <rtems_rfs_file_io_start>                
    if (rc)                                                           
   1e8d8:	e2508000 	subs	r8, r0, #0                                   
    }                                                                 
                                                                      
    if (size > count)                                                 
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
   1e8dc:	e1a0100a 	mov	r1, sl                                        
  while (count)                                                       
  {                                                                   
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
    if (rc)                                                           
   1e8e0:	1a000067 	bne	1ea84 <rtems_rfs_rtems_file_write+0x264>      
    }                                                                 
                                                                      
    if (size > count)                                                 
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
   1e8e4:	e594000c 	ldr	r0, [r4, #12]                                 
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
      break;                                                          
    }                                                                 
                                                                      
    if (size > count)                                                 
   1e8e8:	e59d2008 	ldr	r2, [sp, #8]                                  
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
   1e8ec:	e5943014 	ldr	r3, [r4, #20]                                 
   1e8f0:	e590001c 	ldr	r0, [r0, #28]                                 
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
      break;                                                          
    }                                                                 
                                                                      
    if (size > count)                                                 
   1e8f4:	e1520005 	cmp	r2, r5                                        
      size = count;                                                   
   1e8f8:	81a02005 	movhi	r2, r5                                      
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
   1e8fc:	e0800003 	add	r0, r0, r3                                    
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
      break;                                                          
    }                                                                 
                                                                      
    if (size > count)                                                 
      size = count;                                                   
   1e900:	858d5008 	strhi	r5, [sp, #8]                                
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
   1e904:	eb0005f2 	bl	200d4 <memcpy>                                 
                                                                      
    data  += size;                                                    
   1e908:	e59d8008 	ldr	r8, [sp, #8]                                  
    count -= size;                                                    
    write  += size;                                                   
                                                                      
    rc = rtems_rfs_file_io_end (file, size, false);                   
   1e90c:	e1a00004 	mov	r0, r4                                        
   1e910:	e1a01008 	mov	r1, r8                                        
   1e914:	e3a02000 	mov	r2, #0                                        
   1e918:	ebfff625 	bl	1c1b4 <rtems_rfs_file_io_end>                  
    if (rc)                                                           
   1e91c:	e2509000 	subs	r9, r0, #0                                   
    if (size > count)                                                 
      size = count;                                                   
                                                                      
    memcpy (rtems_rfs_file_data (file), data, size);                  
                                                                      
    data  += size;                                                    
   1e920:	e08aa008 	add	sl, sl, r8                                    
    count -= size;                                                    
    write  += size;                                                   
                                                                      
    rc = rtems_rfs_file_io_end (file, size, false);                   
    if (rc)                                                           
   1e924:	0affffe3 	beq	1e8b8 <rtems_rfs_rtems_file_write+0x98>       
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write close", rc);  
   1e928:	eb000319 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1e92c:	e5809000 	str	r9, [r0]                                      <== NOT EXECUTED
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
   1e930:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  if (write >= 0)                                                     
    iop->offset = pos + write;                                        
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
   1e934:	e594301c 	ldr	r3, [r4, #28]                                 
   1e938:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e93c:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e940:	ebffee98 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e944:	e5940000 	ldr	r0, [r4]                                      
   1e948:	ebffb4f2 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e94c:	e2504000 	subs	r4, r0, #0                                   
   1e950:	0a00001a 	beq	1e9c0 <rtems_rfs_rtems_file_write+0x1a0>      
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1e954:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1e958:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1e95c:	ebffcfb3 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1e960:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1e964:	0a000015 	beq	1e9c0 <rtems_rfs_rtems_file_write+0x1a0>      <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1e968:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1e96c:	ebffa1a6 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1e970:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1e974:	e59f0144 	ldr	r0, [pc, #324]	; 1eac0 <rtems_rfs_rtems_file_write+0x2a0><== NOT EXECUTED
   1e978:	eb0006c9 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1e97c:	ea00000f 	b	1e9c0 <rtems_rfs_rtems_file_write+0x1a0>        <== NOT EXECUTED
      write = rtems_rfs_rtems_error ("file-write: write close", rc);  
      break;                                                          
    }                                                                 
  }                                                                   
                                                                      
  if (write >= 0)                                                     
   1e980:	e3560000 	cmp	r6, #0                                        
   1e984:	ba000005 	blt	1e9a0 <rtems_rfs_rtems_file_write+0x180>      
   1e988:	e1a02006 	mov	r2, r6                                        
   1e98c:	e1a03fc6 	asr	r3, r6, #31                                   
    iop->offset = pos + write;                                        
   1e990:	e89d0003 	ldm	sp, {r0, r1}                                  
   1e994:	e0900002 	adds	r0, r0, r2                                   
   1e998:	e0a11003 	adc	r1, r1, r3                                    
   1e99c:	e9870003 	stmib	r7, {r0, r1}                                
                                                                      
  rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));                  
   1e9a0:	e594301c 	ldr	r3, [r4, #28]                                 
   1e9a4:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1e9a8:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   1e9ac:	ebffee7d 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1e9b0:	e5940000 	ldr	r0, [r4]                                      
   1e9b4:	ebffb4d7 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1e9b8:	e2504000 	subs	r4, r0, #0                                   
   1e9bc:	1affffe4 	bne	1e954 <rtems_rfs_rtems_file_write+0x134>      
                                                                      
  return write;                                                       
}                                                                     
   1e9c0:	e1a00006 	mov	r0, r6                                        
   1e9c4:	e28dd00c 	add	sp, sp, #12                                   
   1e9c8:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
      return rtems_rfs_rtems_error ("file-write: write extend", rc);  
    }                                                                 
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
   1e9cc:	e597300c 	ldr	r3, [r7, #12]                                 
   1e9d0:	e3130c02 	tst	r3, #512	; 0x200                              
   1e9d4:	0affffaf 	beq	1e898 <rtems_rfs_rtems_file_write+0x78>       
  {                                                                   
    pos = file_size;                                                  
    rc = rtems_rfs_file_seek (file, pos, &pos);                       
   1e9d8:	e1a01008 	mov	r1, r8                                        
   1e9dc:	e1a00004 	mov	r0, r4                                        
   1e9e0:	e1a02009 	mov	r2, r9                                        
   1e9e4:	e1a0300d 	mov	r3, sp                                        
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
  }                                                                   
  else if (pos < file_size && (iop->flags & LIBIO_FLAGS_APPEND) != 0) 
  {                                                                   
    pos = file_size;                                                  
   1e9e8:	e88d0300 	stm	sp, {r8, r9}                                  
    rc = rtems_rfs_file_seek (file, pos, &pos);                       
   1e9ec:	ebfff688 	bl	1c414 <rtems_rfs_file_seek>                    
    if (rc)                                                           
   1e9f0:	e2508000 	subs	r8, r0, #0                                   
   1e9f4:	0affffa7 	beq	1e898 <rtems_rfs_rtems_file_write+0x78>       
    {                                                                 
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
   1e9f8:	e594301c 	ldr	r3, [r4, #28]                                 <== NOT EXECUTED
   1e9fc:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         <== NOT EXECUTED
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   1ea00:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         <== NOT EXECUTED
  rtems_rfs_buffers_release (fs);                                     
   1ea04:	ebffee67 	bl	1a3a8 <rtems_rfs_buffers_release>              <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   1ea08:	e5940000 	ldr	r0, [r4]                                      <== NOT EXECUTED
   1ea0c:	ebffb4c1 	bl	bd18 <rtems_semaphore_release>                 <== NOT EXECUTED
  if (sc != RTEMS_SUCCESSFUL)                                         
   1ea10:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
   1ea14:	1a00001e 	bne	1ea94 <rtems_rfs_rtems_file_write+0x274>      <== NOT EXECUTED
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
   1ea18:	eb0002dd 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1ea1c:	e3e06000 	mvn	r6, #0                                        <== NOT EXECUTED
   1ea20:	e5808000 	str	r8, [r0]                                      <== NOT EXECUTED
   1ea24:	eaffffe5 	b	1e9c0 <rtems_rfs_rtems_file_write+0x1a0>        <== NOT EXECUTED
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1ea28:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1ea2c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ea30:	ebffcf7e 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1ea34:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1ea38:	0affff87 	beq	1e85c <rtems_rfs_rtems_file_write+0x3c>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1ea3c:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1ea40:	ebffa171 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1ea44:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1ea48:	e59f0074 	ldr	r0, [pc, #116]	; 1eac4 <rtems_rfs_rtems_file_write+0x2a4><== NOT EXECUTED
   1ea4c:	eb000694 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1ea50:	eaffff81 	b	1e85c <rtems_rfs_rtems_file_write+0x3c>         <== NOT EXECUTED
    /*                                                                
     * If the iop position is past the physical end of the file we need to set
     * the file size to the new length before writing.  The           
     * rtems_rfs_file_io_end() will grow the file subsequently.       
     */                                                               
    rc = rtems_rfs_file_set_size (file, pos);                         
   1ea54:	e1a01002 	mov	r1, r2                                        
   1ea58:	e1a00004 	mov	r0, r4                                        
   1ea5c:	e1a02003 	mov	r2, r3                                        
   1ea60:	ebfff6a9 	bl	1c50c <rtems_rfs_file_set_size>                
    if (rc)                                                           
   1ea64:	e2508000 	subs	r8, r0, #0                                   
    {                                                                 
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
   1ea68:	e594301c 	ldr	r3, [r4, #28]                                 
     * If the iop position is past the physical end of the file we need to set
     * the file size to the new length before writing.  The           
     * rtems_rfs_file_io_end() will grow the file subsequently.       
     */                                                               
    rc = rtems_rfs_file_set_size (file, pos);                         
    if (rc)                                                           
   1ea6c:	1affffe2 	bne	1e9fc <rtems_rfs_rtems_file_write+0x1dc>      
    {                                                                 
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write extend", rc);  
    }                                                                 
                                                                      
    rtems_rfs_file_set_bpos (file, pos);                              
   1ea70:	e5930098 	ldr	r0, [r3, #152]	; 0x98                         
   1ea74:	e89d0006 	ldm	sp, {r1, r2}                                  
   1ea78:	e2843010 	add	r3, r4, #16                                   
   1ea7c:	ebffe8ed 	bl	18e38 <rtems_rfs_block_get_bpos>               
   1ea80:	eaffff84 	b	1e898 <rtems_rfs_rtems_file_write+0x78>         
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
    if (rc)                                                           
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
   1ea84:	eb0002c2 	bl	1f594 <__errno>                                
      rtems_rfs_rtems_unlock (rtems_rfs_file_fs (file));              
      return rtems_rfs_rtems_error ("file-write: write append seek", rc);
    }                                                                 
  }                                                                   
                                                                      
  while (count)                                                       
   1ea88:	e3e06000 	mvn	r6, #0                                        
    size_t size = count;                                              
                                                                      
    rc = rtems_rfs_file_io_start (file, &size, false);                
    if (rc)                                                           
    {                                                                 
      write = rtems_rfs_rtems_error ("file-write: write open", rc);   
   1ea8c:	e5808000 	str	r8, [r0]                                      
   1ea90:	eaffffa7 	b	1e934 <rtems_rfs_rtems_file_write+0x114>        
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   1ea94:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1ea98:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1ea9c:	ebffcf63 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1eaa0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1eaa4:	0affffdb 	beq	1ea18 <rtems_rfs_rtems_file_write+0x1f8>      <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1eaa8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1eaac:	ebffa156 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   1eab0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   1eab4:	e59f0004 	ldr	r0, [pc, #4]	; 1eac0 <rtems_rfs_rtems_file_write+0x2a0><== NOT EXECUTED
   1eab8:	eb000679 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1eabc:	eaffffd5 	b	1ea18 <rtems_rfs_rtems_file_write+0x1f8>        <== NOT EXECUTED
                                                                      

000124a8 <rtems_rfs_rtems_fstat>: } int rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc, struct stat* buf) {
   124a8:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
   124ac:	e5902014 	ldr	r2, [r0, #20]                                 
   124b0:	e5925008 	ldr	r5, [r2, #8]                                  
}                                                                     
                                                                      
int                                                                   
rtems_rfs_rtems_fstat (const rtems_filesystem_location_info_t* pathloc,
                       struct stat*                            buf)   
{                                                                     
   124b4:	e1a03000 	mov	r3, r0                                        
   124b8:	e24dd028 	sub	sp, sp, #40	; 0x28                            
   124bc:	e1a04001 	mov	r4, r1                                        
  int                    rc;                                          
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_STAT))             
    printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);     
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   124c0:	e1a00005 	mov	r0, r5                                        
   124c4:	e5931008 	ldr	r1, [r3, #8]                                  
   124c8:	e1a0200d 	mov	r2, sp                                        
   124cc:	e3a03001 	mov	r3, #1                                        
   124d0:	ebfffa7c 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   124d4:	e2506000 	subs	r6, r0, #0                                   
   124d8:	1a00005d 	bne	12654 <rtems_rfs_rtems_fstat+0x1ac>           
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   124dc:	e59d300c 	ldr	r3, [sp, #12]                                 
   124e0:	e5d32003 	ldrb	r2, [r3, #3]                                 
   124e4:	e5d30002 	ldrb	r0, [r3, #2]                                 
    return rtems_rfs_rtems_error ("stat: opening inode", rc);         
  }                                                                   
                                                                      
  mode = rtems_rfs_inode_get_mode (&inode);                           
                                                                      
  if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))           
   124e8:	e1820400 	orr	r0, r2, r0, lsl #8                            
   124ec:	e2002a0f 	and	r2, r0, #61440	; 0xf000                       
   124f0:	e3520a02 	cmp	r2, #8192	; 0x2000                            
   124f4:	13520a06 	cmpne	r2, #24576	; 0x6000                         
   124f8:	0a00003d 	beq	125f4 <rtems_rfs_rtems_fstat+0x14c>           
    buf->st_rdev =                                                    
      rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
                                   rtems_rfs_inode_get_block (&inode, 1));
  }                                                                   
                                                                      
  buf->st_dev     = rtems_rfs_fs_device (fs);                         
   124fc:	e5953010 	ldr	r3, [r5, #16]                                 
   12500:	e1a02fc3 	asr	r2, r3, #31                                   
   12504:	e5843000 	str	r3, [r4]                                      
  buf->st_ino     = rtems_rfs_inode_ino (&inode);                     
   12508:	e59d3008 	ldr	r3, [sp, #8]                                  
    buf->st_rdev =                                                    
      rtems_filesystem_make_dev_t (rtems_rfs_inode_get_block (&inode, 0),
                                   rtems_rfs_inode_get_block (&inode, 1));
  }                                                                   
                                                                      
  buf->st_dev     = rtems_rfs_fs_device (fs);                         
   1250c:	e5842004 	str	r2, [r4, #4]                                  
  buf->st_ino     = rtems_rfs_inode_ino (&inode);                     
   12510:	e5843008 	str	r3, [r4, #8]                                  
  buf->st_mode    = rtems_rfs_rtems_mode (mode);                      
   12514:	eb0000c4 	bl	1282c <rtems_rfs_rtems_mode>                   
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
   12518:	e59d300c 	ldr	r3, [sp, #12]                                 
   1251c:	e584000c 	str	r0, [r4, #12]                                 
   12520:	e5d31000 	ldrb	r1, [r3]                                     
   12524:	e5d32001 	ldrb	r2, [r3, #1]                                 
   12528:	e1822401 	orr	r2, r2, r1, lsl #8                            
  if (links == 0xffff)                                                
    links = 0;                                                        
   1252c:	e59f1204 	ldr	r1, [pc, #516]	; 12738 <rtems_rfs_rtems_fstat+0x290>
   12530:	e1520001 	cmp	r2, r1                                        
   12534:	03a02000 	moveq	r2, #0                                      
  buf->st_nlink   = rtems_rfs_inode_get_links (&inode);               
   12538:	e1c421b0 	strh	r2, [r4, #16]                                
 * @return uint16_t The user id (uid).                                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_uid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->owner) & 0xffff;          
   1253c:	e5d31006 	ldrb	r1, [r3, #6]                                 
   12540:	e5d32007 	ldrb	r2, [r3, #7]                                 
   12544:	e1822401 	orr	r2, r2, r1, lsl #8                            
  buf->st_uid     = rtems_rfs_inode_get_uid (&inode);                 
   12548:	e1c421b2 	strh	r2, [r4, #18]                                
 * @return uint16_t The group id (gid).                               
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_gid (rtems_rfs_inode_handle* handle)              
{                                                                     
  return (rtems_rfs_read_u32 (&handle->node->owner) >> 16) & 0xffff;  
   1254c:	e5d31005 	ldrb	r1, [r3, #5]                                 
   12550:	e5d32004 	ldrb	r2, [r3, #4]                                 
   12554:	e1a03801 	lsl	r3, r1, #16                                   
   12558:	e1833c02 	orr	r3, r3, r2, lsl #24                           
   1255c:	e1a03823 	lsr	r3, r3, #16                                   
                                                                      
  /*                                                                  
   * Need to check is the ino is an open file. If so we take the values from
   * the open file rather than the inode.                             
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
   12560:	e59d1008 	ldr	r1, [sp, #8]                                  
   12564:	e1c431b4 	strh	r3, [r4, #20]                                
   12568:	e1a00005 	mov	r0, r5                                        
   1256c:	eb0028a4 	bl	1c804 <rtems_rfs_file_get_shared>              
                                                                      
  if (shared)                                                         
   12570:	e2501000 	subs	r1, r0, #0                                   
   12574:	0a00003a 	beq	12664 <rtems_rfs_rtems_fstat+0x1bc>           
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
   12578:	e594e00c 	ldr	lr, [r4, #12]                                 
                                                                      
  if (shared)                                                         
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
   1257c:	e2810090 	add	r0, r1, #144	; 0x90                           
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
                                                                      
  if (shared)                                                         
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
   12580:	e591c08c 	ldr	ip, [r1, #140]	; 0x8c                         
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
   12584:	e8900005 	ldm	r0, {r0, r2}                                  
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
   12588:	e5913084 	ldr	r3, [r1, #132]	; 0x84                         
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
   1258c:	e20eea0f 	and	lr, lr, #61440	; 0xf000                       
   12590:	e35e0a0a 	cmp	lr, #40960	; 0xa000                           
   */                                                                 
  shared = rtems_rfs_file_get_shared (fs, rtems_rfs_inode_ino (&inode));
                                                                      
  if (shared)                                                         
  {                                                                   
    buf->st_atime   = rtems_rfs_file_shared_get_atime (shared);       
   12594:	e584c028 	str	ip, [r4, #40]	; 0x28                          
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
   12598:	e5840030 	str	r0, [r4, #48]	; 0x30                          
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
   1259c:	e5842038 	str	r2, [r4, #56]	; 0x38                          
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
   125a0:	e5843044 	str	r3, [r4, #68]	; 0x44                          
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
   125a4:	0a000025 	beq	12640 <rtems_rfs_rtems_fstat+0x198>           
 */                                                                   
static inline rtems_rfs_pos                                           
rtems_rfs_file_shared_get_size (rtems_rfs_file_system* fs,            
                                rtems_rfs_file_shared* shared)        
{                                                                     
  return rtems_rfs_block_get_size (fs, &shared->size);                
   125a8:	e1a00005 	mov	r0, r5                                        
   125ac:	e2811084 	add	r1, r1, #132	; 0x84                           
   125b0:	eb001a50 	bl	18ef8 <rtems_rfs_block_get_size>               
      buf->st_size = rtems_rfs_file_shared_get_block_offset (shared); 
    else                                                              
      buf->st_size = rtems_rfs_file_shared_get_size (fs, shared);     
   125b4:	e5840020 	str	r0, [r4, #32]                                 
   125b8:	e5841024 	str	r1, [r4, #36]	; 0x24                          
      buf->st_size = rtems_rfs_inode_get_block_offset (&inode);       
    else                                                              
      buf->st_size = rtems_rfs_inode_get_size (fs, &inode);           
  }                                                                   
                                                                      
  buf->st_blksize = rtems_rfs_fs_block_size (fs);                     
   125bc:	e5953008 	ldr	r3, [r5, #8]                                  
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   125c0:	e1a00005 	mov	r0, r5                                        
      buf->st_size = rtems_rfs_inode_get_block_offset (&inode);       
    else                                                              
      buf->st_size = rtems_rfs_inode_get_size (fs, &inode);           
  }                                                                   
                                                                      
  buf->st_blksize = rtems_rfs_fs_block_size (fs);                     
   125c4:	e5843040 	str	r3, [r4, #64]	; 0x40                          
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   125c8:	e1a0100d 	mov	r1, sp                                        
   125cc:	ebfffab7 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   125d0:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    return rtems_rfs_rtems_error ("stat: closing inode", rc);         
  }                                                                   
                                                                      
  return 0;                                                           
   125d4:	d3a03000 	movle	r3, #0                                      
  }                                                                   
                                                                      
  buf->st_blksize = rtems_rfs_fs_block_size (fs);                     
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
   125d8:	da000002 	ble	125e8 <rtems_rfs_rtems_fstat+0x140>           
  {                                                                   
    return rtems_rfs_rtems_error ("stat: closing inode", rc);         
   125dc:	eb0033ec 	bl	1f594 <__errno>                                <== NOT EXECUTED
   125e0:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   125e4:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   125e8:	e1a00003 	mov	r0, r3                                        
   125ec:	e28dd028 	add	sp, sp, #40	; 0x28                            
   125f0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
 * @return uint32_t The block number.                                 
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block (rtems_rfs_inode_handle* handle, int block) 
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->data.blocks[block]);      
   125f4:	e5d38021 	ldrb	r8, [r3, #33]	; 0x21                         <== NOT EXECUTED
   125f8:	e5d3201d 	ldrb	r2, [r3, #29]                                <== NOT EXECUTED
   125fc:	e5d3701c 	ldrb	r7, [r3, #28]                                <== NOT EXECUTED
   12600:	e5d3a020 	ldrb	sl, [r3, #32]                                <== NOT EXECUTED
   12604:	e5d36023 	ldrb	r6, [r3, #35]	; 0x23                         <== NOT EXECUTED
   12608:	e5d3e01f 	ldrb	lr, [r3, #31]                                <== NOT EXECUTED
   1260c:	e1a08808 	lsl	r8, r8, #16                                   <== NOT EXECUTED
   12610:	e1a02802 	lsl	r2, r2, #16                                   <== NOT EXECUTED
   12614:	e5d3c022 	ldrb	ip, [r3, #34]	; 0x22                         <== NOT EXECUTED
   12618:	e5d3101e 	ldrb	r1, [r3, #30]                                <== NOT EXECUTED
   1261c:	e1822c07 	orr	r2, r2, r7, lsl #24                           <== NOT EXECUTED
   12620:	e1883c0a 	orr	r3, r8, sl, lsl #24                           <== NOT EXECUTED
   12624:	e1833006 	orr	r3, r3, r6                                    <== NOT EXECUTED
   12628:	e182200e 	orr	r2, r2, lr                                    <== NOT EXECUTED
   1262c:	e183340c 	orr	r3, r3, ip, lsl #8                            <== NOT EXECUTED
   12630:	e1822401 	orr	r2, r2, r1, lsl #8                            <== NOT EXECUTED
                                                                      
  mode = rtems_rfs_inode_get_mode (&inode);                           
                                                                      
  if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK (mode))           
  {                                                                   
    buf->st_rdev =                                                    
   12634:	e5842018 	str	r2, [r4, #24]                                 <== NOT EXECUTED
   12638:	e584301c 	str	r3, [r4, #28]                                 <== NOT EXECUTED
   1263c:	eaffffae 	b	124fc <rtems_rfs_rtems_fstat+0x54>              <== NOT EXECUTED
    buf->st_mtime   = rtems_rfs_file_shared_get_mtime (shared);       
    buf->st_ctime   = rtems_rfs_file_shared_get_ctime (shared);       
    buf->st_blocks  = rtems_rfs_file_shared_get_block_count (shared); 
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
      buf->st_size = rtems_rfs_file_shared_get_block_offset (shared); 
   12640:	e1d138b8 	ldrh	r3, [r1, #136]	; 0x88                        <== NOT EXECUTED
   12644:	e5843020 	str	r3, [r4, #32]                                 <== NOT EXECUTED
   12648:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   1264c:	e5843024 	str	r3, [r4, #36]	; 0x24                          <== NOT EXECUTED
   12650:	eaffffd9 	b	125bc <rtems_rfs_rtems_fstat+0x114>             <== NOT EXECUTED
    printf ("rtems-rfs-rtems: stat: in: ino:%" PRId32 "\n", ino);     
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("stat: opening inode", rc);         
   12654:	eb0033ce 	bl	1f594 <__errno>                                <== NOT EXECUTED
   12658:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   1265c:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   12660:	eaffffe0 	b	125e8 <rtems_rfs_rtems_fstat+0x140>             <== NOT EXECUTED
 * @return rtems_rfs_time The atime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_atime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->atime);                   
   12664:	e59d300c 	ldr	r3, [sp, #12]                                 
   12668:	e5d32011 	ldrb	r2, [r3, #17]                                
   1266c:	e5d3e010 	ldrb	lr, [r3, #16]                                
   12670:	e5d3c013 	ldrb	ip, [r3, #19]                                
   12674:	e1a02802 	lsl	r2, r2, #16                                   
   12678:	e5d30012 	ldrb	r0, [r3, #18]                                
   1267c:	e1822c0e 	orr	r2, r2, lr, lsl #24                           
   12680:	e182200c 	orr	r2, r2, ip                                    
   12684:	e1822400 	orr	r2, r2, r0, lsl #8                            
    else                                                              
      buf->st_size = rtems_rfs_file_shared_get_size (fs, shared);     
  }                                                                   
  else                                                                
  {                                                                   
    buf->st_atime   = rtems_rfs_inode_get_atime (&inode);             
   12688:	e5842028 	str	r2, [r4, #40]	; 0x28                          
 * @return rtems_rfs_time The mtime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_mtime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->mtime);                   
   1268c:	e5d32015 	ldrb	r2, [r3, #21]                                
   12690:	e5d3e014 	ldrb	lr, [r3, #20]                                
   12694:	e5d3c017 	ldrb	ip, [r3, #23]                                
   12698:	e1a02802 	lsl	r2, r2, #16                                   
   1269c:	e5d30016 	ldrb	r0, [r3, #22]                                
   126a0:	e1822c0e 	orr	r2, r2, lr, lsl #24                           
   126a4:	e182200c 	orr	r2, r2, ip                                    
   126a8:	e1822400 	orr	r2, r2, r0, lsl #8                            
    buf->st_mtime   = rtems_rfs_inode_get_mtime (&inode);             
   126ac:	e5842030 	str	r2, [r4, #48]	; 0x30                          
 * @return rtems_rfs_time The ctime.                                  
 */                                                                   
static inline rtems_rfs_time                                          
rtems_rfs_inode_get_ctime (rtems_rfs_inode_handle* handle)            
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->ctime);                   
   126b0:	e5d32019 	ldrb	r2, [r3, #25]                                
   126b4:	e5d3e018 	ldrb	lr, [r3, #24]                                
   126b8:	e5d3c01b 	ldrb	ip, [r3, #27]                                
   126bc:	e1a02802 	lsl	r2, r2, #16                                   
   126c0:	e5d3001a 	ldrb	r0, [r3, #26]                                
   126c4:	e1822c0e 	orr	r2, r2, lr, lsl #24                           
   126c8:	e182200c 	orr	r2, r2, ip                                    
   126cc:	e1822400 	orr	r2, r2, r0, lsl #8                            
    buf->st_ctime   = rtems_rfs_inode_get_ctime (&inode);             
   126d0:	e5842038 	str	r2, [r4, #56]	; 0x38                          
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
   126d4:	e5d3200d 	ldrb	r2, [r3, #13]                                
   126d8:	e5d3600c 	ldrb	r6, [r3, #12]                                
   126dc:	e5d3e00f 	ldrb	lr, [r3, #15]                                
   126e0:	e1a02802 	lsl	r2, r2, #16                                   
    buf->st_blocks  = rtems_rfs_inode_get_block_count (&inode);       
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
   126e4:	e594000c 	ldr	r0, [r4, #12]                                 
   126e8:	e5d3c00e 	ldrb	ip, [r3, #14]                                
   126ec:	e1822c06 	orr	r2, r2, r6, lsl #24                           
   126f0:	e182200e 	orr	r2, r2, lr                                    
   126f4:	e2000a0f 	and	r0, r0, #61440	; 0xf000                       
   126f8:	e182240c 	orr	r2, r2, ip, lsl #8                            
   126fc:	e3500a0a 	cmp	r0, #40960	; 0xa000                           
  else                                                                
  {                                                                   
    buf->st_atime   = rtems_rfs_inode_get_atime (&inode);             
    buf->st_mtime   = rtems_rfs_inode_get_mtime (&inode);             
    buf->st_ctime   = rtems_rfs_inode_get_ctime (&inode);             
    buf->st_blocks  = rtems_rfs_inode_get_block_count (&inode);       
   12700:	e5842044 	str	r2, [r4, #68]	; 0x44                          
                                                                      
    if (S_ISLNK (buf->st_mode))                                       
   12704:	1a000005 	bne	12720 <rtems_rfs_rtems_fstat+0x278>           
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
   12708:	e5d3200a 	ldrb	r2, [r3, #10]                                
   1270c:	e5d3300b 	ldrb	r3, [r3, #11]                                
      buf->st_size = rtems_rfs_inode_get_block_offset (&inode);       
   12710:	e1833402 	orr	r3, r3, r2, lsl #8                            
   12714:	e5843020 	str	r3, [r4, #32]                                 
   12718:	e5841024 	str	r1, [r4, #36]	; 0x24                          
   1271c:	eaffffa6 	b	125bc <rtems_rfs_rtems_fstat+0x114>             
    else                                                              
      buf->st_size = rtems_rfs_inode_get_size (fs, &inode);           
   12720:	e1a00005 	mov	r0, r5                                        
   12724:	e1a0100d 	mov	r1, sp                                        
   12728:	ebfffc1d 	bl	117a4 <rtems_rfs_inode_get_size>               
   1272c:	e5840020 	str	r0, [r4, #32]                                 
   12730:	e5841024 	str	r1, [r4, #36]	; 0x24                          
   12734:	eaffffa0 	b	125bc <rtems_rfs_rtems_fstat+0x114>             
                                                                      

000121a8 <rtems_rfs_rtems_initialise>: */ int rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry, const void* data) {
   121a8:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  int                      rc;                                        
                                                                      
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
   121ac:	e2514000 	subs	r4, r1, #0                                   
 */                                                                   
                                                                      
int                                                                   
rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry,
                            const void*                           data)
{                                                                     
   121b0:	e24dd008 	sub	sp, sp, #8                                    
  int                      rc;                                        
                                                                      
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
   121b4:	e3a07005 	mov	r7, #5                                        
 */                                                                   
                                                                      
int                                                                   
rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry,
                            const void*                           data)
{                                                                     
   121b8:	e1a05000 	mov	r5, r0                                        
  int                      rc;                                        
                                                                      
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
   121bc:	0a00005f 	beq	12340 <rtems_rfs_rtems_initialise+0x198>      
   121c0:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
  {                                                                   
    printf ("options=%s\n", options);                                 
   121c4:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   121c8:	e59f0214 	ldr	r0, [pc, #532]	; 123e4 <rtems_rfs_rtems_initialise+0x23c><== NOT EXECUTED
   121cc:	eb0038b4 	bl	204a4 <printf>                                 <== NOT EXECUTED
    if (strncmp (options, "hold-bitmaps",                             
   121d0:	e59f1210 	ldr	r1, [pc, #528]	; 123e8 <rtems_rfs_rtems_initialise+0x240><== NOT EXECUTED
   121d4:	e3a0200c 	mov	r2, #12                                       <== NOT EXECUTED
   121d8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   121dc:	eb003d9c 	bl	21854 <strncmp>                                <== NOT EXECUTED
   121e0:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
   121e4:	e59f1200 	ldr	r1, [pc, #512]	; 123ec <rtems_rfs_rtems_initialise+0x244><== NOT EXECUTED
   121e8:	e3a0200e 	mov	r2, #14                                       <== NOT EXECUTED
   121ec:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
  while (options)                                                     
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
   121f0:	03866001 	orreq	r6, r6, #1                                  <== NOT EXECUTED
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
   121f4:	0a00000d 	beq	12230 <rtems_rfs_rtems_initialise+0x88>       <== NOT EXECUTED
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
   121f8:	eb003d95 	bl	21854 <strncmp>                                <== NOT EXECUTED
   121fc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
    else if (strncmp (options, "max-held-bufs",                       
   12200:	e59f11e8 	ldr	r1, [pc, #488]	; 123f0 <rtems_rfs_rtems_initialise+0x248><== NOT EXECUTED
   12204:	e3a0200d 	mov	r2, #13                                       <== NOT EXECUTED
   12208:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
   1220c:	03866002 	orreq	r6, r6, #2                                  <== NOT EXECUTED
  {                                                                   
    printf ("options=%s\n", options);                                 
    if (strncmp (options, "hold-bitmaps",                             
                 sizeof ("hold-bitmaps") - 1) == 0)                   
      flags |= RTEMS_RFS_FS_BITMAPS_HOLD;                             
    else if (strncmp (options, "no-local-cache",                      
   12210:	0a000006 	beq	12230 <rtems_rfs_rtems_initialise+0x88>       <== NOT EXECUTED
                      sizeof ("no-local-cache") - 1) == 0)            
      flags |= RTEMS_RFS_FS_NO_LOCAL_CACHE;                           
    else if (strncmp (options, "max-held-bufs",                       
   12214:	eb003d8e 	bl	21854 <strncmp>                                <== NOT EXECUTED
   12218:	e2501000 	subs	r1, r0, #0                                   <== NOT EXECUTED
   1221c:	1a000042 	bne	1232c <rtems_rfs_rtems_initialise+0x184>      <== NOT EXECUTED
                      sizeof ("max-held-bufs") - 1) == 0)             
    {                                                                 
      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
   12220:	e284000e 	add	r0, r4, #14                                   <== NOT EXECUTED
   12224:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   12228:	eb003e4c 	bl	21b60 <strtoul>                                <== NOT EXECUTED
   1222c:	e1a07000 	mov	r7, r0                                        <== NOT EXECUTED
    }                                                                 
    else                                                              
      return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
                                                                      
    options = strchr (options, ',');                                  
   12230:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12234:	e3a0102c 	mov	r1, #44	; 0x2c                                <== NOT EXECUTED
   12238:	eb003a79 	bl	20c24 <strchr>                                 <== NOT EXECUTED
    if (options)                                                      
   1223c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   12240:	0a000002 	beq	12250 <rtems_rfs_rtems_initialise+0xa8>       <== NOT EXECUTED
    {                                                                 
      ++options;                                                      
      if (*options == '\0')                                           
   12244:	e5d03001 	ldrb	r3, [r0, #1]                                 <== NOT EXECUTED
   12248:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
   1224c:	1a000010 	bne	12294 <rtems_rfs_rtems_initialise+0xec>       <== NOT EXECUTED
        options = NULL;                                               
    }                                                                 
  }                                                                   
                                                                      
  rtems = malloc (sizeof (rtems_rfs_rtems_private));                  
   12250:	e3a00004 	mov	r0, #4                                        
   12254:	ebffd576 	bl	7834 <malloc>                                  
  if (!rtems)                                                         
   12258:	e2504000 	subs	r4, r0, #0                                   
   1225c:	0a00005b 	beq	123d0 <rtems_rfs_rtems_initialise+0x228>      
    return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);  
                                                                      
  memset (rtems, 0, sizeof (rtems_rfs_rtems_private));                
   12260:	e3a08000 	mov	r8, #0                                        
   12264:	e5848000 	str	r8, [r4]                                      
                                                                      
  rc = rtems_rfs_mutex_create (&rtems->access);                       
   12268:	eb002e21 	bl	1daf4 <rtems_rfs_mutex_create>                 
  if (rc > 0)                                                         
   1226c:	e250a000 	subs	sl, r0, #0                                   
   12270:	da00000a 	ble	122a0 <rtems_rfs_rtems_initialise+0xf8>       
  {                                                                   
    free (rtems);                                                     
   12274:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12278:	ebffd3ee 	bl	7238 <free>                                    <== NOT EXECUTED
    return rtems_rfs_rtems_error ("initialise: cannot create mutex", rc);
   1227c:	eb0034c4 	bl	1f594 <__errno>                                <== NOT EXECUTED
   12280:	e580a000 	str	sl, [r0]                                      <== NOT EXECUTED
   12284:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
  mt_entry->mt_fs_root->location.handlers    = &rtems_rfs_rtems_dir_handlers;
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  return 0;                                                           
}                                                                     
   12288:	e1a00004 	mov	r0, r4                                        
   1228c:	e28dd008 	add	sp, sp, #8                                    
   12290:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  int                      rc;                                        
                                                                      
  /*                                                                  
   * Parse the options the user specifiies.                           
   */                                                                 
  while (options)                                                     
   12294:	e2904001 	adds	r4, r0, #1                                   <== NOT EXECUTED
   12298:	1affffc9 	bne	121c4 <rtems_rfs_rtems_initialise+0x1c>       <== NOT EXECUTED
   1229c:	eaffffeb 	b	12250 <rtems_rfs_rtems_initialise+0xa8>         <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   122a0:	e1a01008 	mov	r1, r8                                        
   122a4:	e1a02008 	mov	r2, r8                                        
   122a8:	e5940000 	ldr	r0, [r4]                                      
   122ac:	ebffe650 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   122b0:	e2508000 	subs	r8, r0, #0                                   
   122b4:	1a00000e 	bne	122f4 <rtems_rfs_rtems_initialise+0x14c>      
    rtems_rfs_mutex_destroy (&rtems->access);                         
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: cannot lock access  mutex", rc);
  }                                                                   
                                                                      
  rc = rtems_rfs_fs_open (mt_entry->dev, rtems, flags, max_held_buffers, &fs);
   122b8:	e5950038 	ldr	r0, [r5, #56]	; 0x38                          
   122bc:	e1a02006 	mov	r2, r6                                        
   122c0:	e28dc004 	add	ip, sp, #4                                    
   122c4:	e1a01004 	mov	r1, r4                                        
   122c8:	e1a03007 	mov	r3, r7                                        
   122cc:	e58dc000 	str	ip, [sp]                                      
   122d0:	eb002968 	bl	1c878 <rtems_rfs_fs_open>                      
  if (rc)                                                             
   122d4:	e2506000 	subs	r6, r0, #0                                   
   122d8:	0a00001a 	beq	12348 <rtems_rfs_rtems_initialise+0x1a0>      
  {                                                                   
    free (rtems);                                                     
   122dc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   122e0:	ebffd3d4 	bl	7238 <free>                                    <== NOT EXECUTED
    return rtems_rfs_rtems_error ("initialise: open", rc);            
   122e4:	eb0034aa 	bl	1f594 <__errno>                                <== NOT EXECUTED
   122e8:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   122ec:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   122f0:	eaffffe4 	b	12288 <rtems_rfs_rtems_initialise+0xe0>         <== NOT EXECUTED
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   122f4:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   122f8:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   122fc:	eb00014b 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   12300:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   12304:	1a00002b 	bne	123b8 <rtems_rfs_rtems_initialise+0x210>      <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_mutex_lock (&rtems->access);                         
  if (rc > 0)                                                         
  {                                                                   
    rtems_rfs_mutex_destroy (&rtems->access);                         
   12308:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1230c:	eb002e14 	bl	1db64 <rtems_rfs_mutex_destroy>                <== NOT EXECUTED
    free (rtems);                                                     
   12310:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12314:	ebffd3c7 	bl	7238 <free>                                    <== NOT EXECUTED
    return rtems_rfs_rtems_error ("initialise: cannot lock access  mutex", rc);
   12318:	eb00349d 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1231c:	e3a03005 	mov	r3, #5                                        <== NOT EXECUTED
   12320:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12324:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   12328:	eaffffd6 	b	12288 <rtems_rfs_rtems_initialise+0xe0>         <== NOT EXECUTED
                      sizeof ("max-held-bufs") - 1) == 0)             
    {                                                                 
      max_held_buffers = strtoul (options + sizeof ("max-held-bufs"), 0, 0);
    }                                                                 
    else                                                              
      return rtems_rfs_rtems_error ("initialise: invalid option", EINVAL);
   1232c:	eb003498 	bl	1f594 <__errno>                                <== NOT EXECUTED
   12330:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   12334:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   12338:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   1233c:	eaffffd1 	b	12288 <rtems_rfs_rtems_initialise+0xe0>         <== NOT EXECUTED
rtems_rfs_rtems_initialise (rtems_filesystem_mount_table_entry_t* mt_entry,
                            const void*                           data)
{                                                                     
  rtems_rfs_rtems_private* rtems;                                     
  rtems_rfs_file_system*   fs;                                        
  uint32_t                 flags = 0;                                 
   12340:	e1a06004 	mov	r6, r4                                        
   12344:	eaffffc1 	b	12250 <rtems_rfs_rtems_initialise+0xa8>         
  {                                                                   
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
   12348:	e59d0004 	ldr	r0, [sp, #4]                                  
  mt_entry->ops                              = &rtems_rfs_ops;        
   1234c:	e59f20a0 	ldr	r2, [pc, #160]	; 123f4 <rtems_rfs_rtems_initialise+0x24c>
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
   12350:	e5953024 	ldr	r3, [r5, #36]	; 0x24                          
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   12354:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
  mt_entry->ops                              = &rtems_rfs_ops;        
   12358:	e585200c 	str	r2, [r5, #12]                                 
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
   1235c:	e3a02001 	mov	r2, #1                                        
  {                                                                   
    free (rtems);                                                     
    return rtems_rfs_rtems_error ("initialise: open", rc);            
  }                                                                   
                                                                      
  mt_entry->fs_info                          = fs;                    
   12360:	e5850008 	str	r0, [r5, #8]                                  
  mt_entry->ops                              = &rtems_rfs_ops;        
  mt_entry->mt_fs_root->location.node_access = (void*) RTEMS_RFS_ROOT_INO;
   12364:	e5832008 	str	r2, [r3, #8]                                  
  mt_entry->mt_fs_root->location.handlers    = &rtems_rfs_rtems_dir_handlers;
   12368:	e59f2088 	ldr	r2, [pc, #136]	; 123f8 <rtems_rfs_rtems_initialise+0x250>
   1236c:	e5832010 	str	r2, [r3, #16]                                 
  rtems_rfs_buffers_release (fs);                                     
   12370:	eb00200c 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   12374:	e5940000 	ldr	r0, [r4]                                      
   12378:	ebffe666 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   1237c:	e2504000 	subs	r4, r0, #0                                   
   12380:	0affffc0 	beq	12288 <rtems_rfs_rtems_initialise+0xe0>       
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   12384:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   12388:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1238c:	eb000127 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   12390:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
                                                                      
  return 0;                                                           
   12394:	01a04000 	moveq	r4, r0                                      <== NOT EXECUTED
   12398:	0affffba 	beq	12288 <rtems_rfs_rtems_initialise+0xe0>       <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1239c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   123a0:	ebffd319 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   123a4:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   123a8:	e59f004c 	ldr	r0, [pc, #76]	; 123fc <rtems_rfs_rtems_initialise+0x254><== NOT EXECUTED
   123ac:	eb00383c 	bl	204a4 <printf>                                 <== NOT EXECUTED
   123b0:	e1a04006 	mov	r4, r6                                        <== NOT EXECUTED
   123b4:	eaffffb3 	b	12288 <rtems_rfs_rtems_initialise+0xe0>         <== NOT EXECUTED
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
  if (sc != RTEMS_SUCCESSFUL)                                         
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   123b8:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   123bc:	ebffd312 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   123c0:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   123c4:	e59f0034 	ldr	r0, [pc, #52]	; 12400 <rtems_rfs_rtems_initialise+0x258><== NOT EXECUTED
   123c8:	eb003835 	bl	204a4 <printf>                                 <== NOT EXECUTED
   123cc:	eaffffcd 	b	12308 <rtems_rfs_rtems_initialise+0x160>        <== NOT EXECUTED
    }                                                                 
  }                                                                   
                                                                      
  rtems = malloc (sizeof (rtems_rfs_rtems_private));                  
  if (!rtems)                                                         
    return rtems_rfs_rtems_error ("initialise: local data", ENOMEM);  
   123d0:	eb00346f 	bl	1f594 <__errno>                                <== NOT EXECUTED
   123d4:	e3a0300c 	mov	r3, #12                                       <== NOT EXECUTED
   123d8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   123dc:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   123e0:	eaffffa8 	b	12288 <rtems_rfs_rtems_initialise+0xe0>         <== NOT EXECUTED
                                                                      

000118e8 <rtems_rfs_rtems_link>: static int rtems_rfs_rtems_link (const rtems_filesystem_location_info_t *parentloc, const rtems_filesystem_location_info_t *targetloc, const char *name, size_t namelen) {
   118e8:	e92d4010 	push	{r4, lr}                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (targetloc);
   118ec:	e591c014 	ldr	ip, [r1, #20]                                 
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))             
    printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
            parent, target);                                          
                                                                      
  rc = rtems_rfs_link (fs, name, namelen, parent, target, false);     
   118f0:	e590e008 	ldr	lr, [r0, #8]                                  
   118f4:	e59c0008 	ldr	r0, [ip, #8]                                  
   118f8:	e591c008 	ldr	ip, [r1, #8]                                  
static int                                                            
rtems_rfs_rtems_link (const rtems_filesystem_location_info_t *parentloc,
                      const rtems_filesystem_location_info_t *targetloc,
                      const char *name,                               
                      size_t namelen)                                 
{                                                                     
   118fc:	e24dd008 	sub	sp, sp, #8                                    
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))             
    printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
            parent, target);                                          
                                                                      
  rc = rtems_rfs_link (fs, name, namelen, parent, target, false);     
   11900:	e1a01002 	mov	r1, r2                                        
   11904:	e58dc000 	str	ip, [sp]                                      
   11908:	e1a02003 	mov	r2, r3                                        
   1190c:	e3a0c000 	mov	ip, #0                                        
   11910:	e1a0300e 	mov	r3, lr                                        
   11914:	e58dc004 	str	ip, [sp, #4]                                  
   11918:	eb002ded 	bl	1d0d4 <rtems_rfs_link>                         
  if (rc)                                                             
   1191c:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    return rtems_rfs_rtems_error ("link: linking", rc);               
	}                                                                    
                                                                      
                                                                      
	return 0;                                                            
   11920:	01a03004 	moveq	r3, r4                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_LINK))             
    printf ("rtems-rfs-rtems: link: in: parent:%" PRId32 " target:%" PRId32 "\n",
            parent, target);                                          
                                                                      
  rc = rtems_rfs_link (fs, name, namelen, parent, target, false);     
  if (rc)                                                             
   11924:	0a000002 	beq	11934 <rtems_rfs_rtems_link+0x4c>             
  {                                                                   
    return rtems_rfs_rtems_error ("link: linking", rc);               
   11928:	eb003719 	bl	1f594 <__errno>                                <== NOT EXECUTED
   1192c:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11930:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
	}                                                                    
                                                                      
                                                                      
	return 0;                                                            
}                                                                     
   11934:	e1a00003 	mov	r0, r3                                        
   11938:	e28dd008 	add	sp, sp, #8                                    
   1193c:	e8bd8010 	pop	{r4, pc}                                      
                                                                      

00012404 <rtems_rfs_rtems_lock_by_mt_entry>: * Lock the RFS file system. */ static inline void rtems_rfs_rtems_lock (rtems_rfs_file_system* fs) { rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);
   12404:	e5903008 	ldr	r3, [r0, #8]                                  
  /* FIXME: Return value? */                                          
  rtems_rfs_fs_close(fs);                                             
                                                                      
  rtems_rfs_mutex_destroy (&rtems->access);                           
  free (rtems);                                                       
}                                                                     
   12408:	e5933080 	ldr	r3, [r3, #128]	; 0x80                         
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_lock (rtems_rfs_mutex* mutex)                         
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_obtain (*mutex, RTEMS_WAIT, 0);
   1240c:	e3a01000 	mov	r1, #0                                        
                                                                      
static void                                                           
rtems_rfs_rtems_lock_by_mt_entry (                                    
  const rtems_filesystem_mount_table_entry_t *mt_entry                
)                                                                     
{                                                                     
   12410:	e92d4010 	push	{r4, lr}                                     
   12414:	e5930000 	ldr	r0, [r3]                                      
   12418:	e1a02001 	mov	r2, r1                                        
   1241c:	ebffe5f4 	bl	bbf4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
   12420:	e2504000 	subs	r4, r0, #0                                   
   12424:	08bd8010 	popeq	{r4, pc}                                    
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   12428:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1242c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   12430:	eb0000fe 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   12434:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   12438:	08bd8010 	popeq	{r4, pc}                                    <== NOT EXECUTED
      printf ("rtems-rfs: mutex: obtain failed: %s\n",                
   1243c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12440:	ebffd2f1 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   12444:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   12448:	e59f0004 	ldr	r0, [pc, #4]	; 12454 <rtems_rfs_rtems_lock_by_mt_entry+0x50><== NOT EXECUTED
  rtems_rfs_file_system* fs = mt_entry->fs_info;                      
                                                                      
  rtems_rfs_rtems_lock (fs);                                          
}                                                                     
   1244c:	e8bd4010 	pop	{r4, lr}                                      <== NOT EXECUTED
   12450:	ea003813 	b	204a4 <printf>                                  <== NOT EXECUTED
                                                                      

00011da0 <rtems_rfs_rtems_mknod>: rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc, const char *name, size_t namelen, mode_t mode, dev_t dev) {
   11da0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   11da4:	e1a06003 	mov	r6, r3                                        
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (parentloc);
   11da8:	e5903014 	ldr	r3, [r0, #20]                                 
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
                       const char                             *name,  
                       size_t                                  namelen,
                       mode_t                                  mode,  
                       dev_t                                   dev)   
{                                                                     
   11dac:	e24dd040 	sub	sp, sp, #64	; 0x40                            
   11db0:	e1a0c000 	mov	ip, r0                                        
  uid = 0;                                                            
  gid = 0;                                                            
#endif                                                                
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, namelen,             
                               rtems_rfs_rtems_imode (mode),          
   11db4:	e1a00006 	mov	r0, r6                                        
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
                       const char                             *name,  
                       size_t                                  namelen,
                       mode_t                                  mode,  
                       dev_t                                   dev)   
{                                                                     
   11db8:	e1a07002 	mov	r7, r2                                        
   11dbc:	e1a08001 	mov	r8, r1                                        
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (parentloc);
   11dc0:	e5934008 	ldr	r4, [r3, #8]                                  
  rtems_rfs_ino           parent = rtems_rfs_rtems_get_pathloc_ino (parentloc);
   11dc4:	e59cb008 	ldr	fp, [ip, #8]                                  
rtems_rfs_rtems_mknod (const rtems_filesystem_location_info_t *parentloc,
                       const char                             *name,  
                       size_t                                  namelen,
                       mode_t                                  mode,  
                       dev_t                                   dev)   
{                                                                     
   11dc8:	e59da064 	ldr	sl, [sp, #100]	; 0x64                         
   11dcc:	e59d9068 	ldr	r9, [sp, #104]	; 0x68                         
  uid = 0;                                                            
  gid = 0;                                                            
#endif                                                                
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, namelen,             
                               rtems_rfs_rtems_imode (mode),          
   11dd0:	eb000292 	bl	12820 <rtems_rfs_rtems_imode>                  
#else                                                                 
  uid = 0;                                                            
  gid = 0;                                                            
#endif                                                                
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, namelen,             
   11dd4:	e3a05001 	mov	r5, #1                                        
   11dd8:	e3a0c000 	mov	ip, #0                                        
   11ddc:	e58d0000 	str	r0, [sp]                                      
   11de0:	e1a03007 	mov	r3, r7                                        
   11de4:	e98d1020 	stmib	sp, {r5, ip}                                
   11de8:	e58dc00c 	str	ip, [sp, #12]                                 
   11dec:	e1a00004 	mov	r0, r4                                        
   11df0:	e28dc03c 	add	ip, sp, #60	; 0x3c                            
   11df4:	e1a0100b 	mov	r1, fp                                        
   11df8:	e1a02008 	mov	r2, r8                                        
   11dfc:	e58dc010 	str	ip, [sp, #16]                                 
   11e00:	ebfffd92 	bl	11450 <rtems_rfs_inode_create>                 
                               rtems_rfs_rtems_imode (mode),          
                               1, uid, gid, &ino);                    
  if (rc > 0)                                                         
   11e04:	e2507000 	subs	r7, r0, #0                                   
   11e08:	da000005 	ble	11e24 <rtems_rfs_rtems_mknod+0x84>            
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: inode open", rc);           
   11e0c:	eb0035e0 	bl	1f594 <__errno>                                
   11e10:	e5807000 	str	r7, [r0]                                      
   11e14:	e3e03000 	mvn	r3, #0                                        
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11e18:	e1a00003 	mov	r0, r3                                        
   11e1c:	e28dd040 	add	sp, sp, #64	; 0x40                            
   11e20:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: inode create", rc);         
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   11e24:	e1a00004 	mov	r0, r4                                        
   11e28:	e59d103c 	ldr	r1, [sp, #60]	; 0x3c                          
   11e2c:	e28d2014 	add	r2, sp, #20                                   
   11e30:	e1a03005 	mov	r3, r5                                        
   11e34:	ebfffc23 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   11e38:	e2507000 	subs	r7, r0, #0                                   
   11e3c:	cafffff2 	bgt	11e0c <rtems_rfs_rtems_mknod+0x6c>            
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: inode open", rc);           
  }                                                                   
                                                                      
  if (S_ISDIR(mode) || S_ISREG(mode))                                 
   11e40:	e2066a0f 	and	r6, r6, #61440	; 0xf000                       
   11e44:	e3560901 	cmp	r6, #16384	; 0x4000                           
   11e48:	13560902 	cmpne	r6, #32768	; 0x8000                         
   11e4c:	0a000012 	beq	11e9c <rtems_rfs_rtems_mknod+0xfc>            
  {                                                                   
  }                                                                   
  else if (S_ISCHR (mode) || S_ISBLK (mode))                          
   11e50:	e3560a02 	cmp	r6, #8192	; 0x2000                            <== NOT EXECUTED
   11e54:	13560a06 	cmpne	r6, #24576	; 0x6000                         <== NOT EXECUTED
   11e58:	1a000019 	bne	11ec4 <rtems_rfs_rtems_mknod+0x124>           <== NOT EXECUTED
 * @param bno The block number.                                       
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);       
   11e5c:	e59d3020 	ldr	r3, [sp, #32]                                 <== NOT EXECUTED
   11e60:	e1a06c2a 	lsr	r6, sl, #24                                   <== NOT EXECUTED
   11e64:	e1a0e82a 	lsr	lr, sl, #16                                   <== NOT EXECUTED
   11e68:	e1a0c42a 	lsr	ip, sl, #8                                    <== NOT EXECUTED
   11e6c:	e1a00c29 	lsr	r0, r9, #24                                   <== NOT EXECUTED
   11e70:	e1a01829 	lsr	r1, r9, #16                                   <== NOT EXECUTED
   11e74:	e1a02429 	lsr	r2, r9, #8                                    <== NOT EXECUTED
   11e78:	e5c3601c 	strb	r6, [r3, #28]                                <== NOT EXECUTED
   11e7c:	e5c3e01d 	strb	lr, [r3, #29]                                <== NOT EXECUTED
   11e80:	e5c3c01e 	strb	ip, [r3, #30]                                <== NOT EXECUTED
   11e84:	e5c3a01f 	strb	sl, [r3, #31]                                <== NOT EXECUTED
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   11e88:	e5cd5024 	strb	r5, [sp, #36]	; 0x24                         <== NOT EXECUTED
 * @param bno The block number.                                       
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block (rtems_rfs_inode_handle* handle, int block, uint32_t bno)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->data.blocks[block], bno);       
   11e8c:	e5c30020 	strb	r0, [r3, #32]                                <== NOT EXECUTED
   11e90:	e5c31021 	strb	r1, [r3, #33]	; 0x21                         <== NOT EXECUTED
   11e94:	e5c32022 	strb	r2, [r3, #34]	; 0x22                         <== NOT EXECUTED
   11e98:	e5c39023 	strb	r9, [r3, #35]	; 0x23                         <== NOT EXECUTED
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
    return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);         
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11e9c:	e1a00004 	mov	r0, r4                                        
   11ea0:	e28d1014 	add	r1, sp, #20                                   
   11ea4:	ebfffc81 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   11ea8:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
   11eac:	d3a03000 	movle	r3, #0                                      
    rtems_rfs_inode_close (fs, &inode);                               
    return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);         
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc > 0)                                                         
   11eb0:	daffffd8 	ble	11e18 <rtems_rfs_rtems_mknod+0x78>            
  {                                                                   
    return rtems_rfs_rtems_error ("mknod: closing inode", rc);        
   11eb4:	eb0035b6 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11eb8:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   11ebc:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11ec0:	eaffffd4 	b	11e18 <rtems_rfs_rtems_mknod+0x78>              <== NOT EXECUTED
    rtems_rfs_inode_set_block (&inode, 0, major);                     
    rtems_rfs_inode_set_block (&inode, 1, minor);                     
  }                                                                   
  else                                                                
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
   11ec4:	e28d1014 	add	r1, sp, #20                                   <== NOT EXECUTED
   11ec8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   11ecc:	ebfffc77 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return rtems_rfs_rtems_error ("mknod: bad mode", EINVAL);         
   11ed0:	eb0035af 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11ed4:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   11ed8:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   11edc:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   11ee0:	eaffffcc 	b	11e18 <rtems_rfs_rtems_mknod+0x78>              <== NOT EXECUTED
                                                                      

00011d28 <rtems_rfs_rtems_node_type>: * @return rtems_filesystem_node_types_t */ static rtems_filesystem_node_types_t rtems_rfs_rtems_node_type (const rtems_filesystem_location_info_t* pathloc) {
   11d28:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_rfs_file_system*        fs = rtems_rfs_rtems_pathloc_dev (pathloc);
   11d2c:	e5902014 	ldr	r2, [r0, #20]                                 
   11d30:	e5924008 	ldr	r4, [r2, #8]                                  
 * @return rtems_filesystem_node_types_t                              
 */                                                                   
                                                                      
static rtems_filesystem_node_types_t                                  
rtems_rfs_rtems_node_type (const rtems_filesystem_location_info_t* pathloc)
{                                                                     
   11d34:	e1a03000 	mov	r3, r0                                        
   11d38:	e24dd028 	sub	sp, sp, #40	; 0x28                            
  rtems_rfs_ino                 ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_filesystem_node_types_t type;                                 
  rtems_rfs_inode_handle        inode;                                
  int                           rc;                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   11d3c:	e5931008 	ldr	r1, [r3, #8]                                  
   11d40:	e1a00004 	mov	r0, r4                                        
   11d44:	e1a0200d 	mov	r2, sp                                        
   11d48:	e3a03001 	mov	r3, #1                                        
   11d4c:	ebfffc5d 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   11d50:	e2506000 	subs	r6, r0, #0                                   
   11d54:	da000005 	ble	11d70 <rtems_rfs_rtems_node_type+0x48>        
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: opening inode", rc);    
   11d58:	eb00360d 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11d5c:	e5806000 	str	r6, [r0]                                      <== NOT EXECUTED
   11d60:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: closing inode", rc);    
  }                                                                   
                                                                      
  return type;                                                        
}                                                                     
   11d64:	e1a00005 	mov	r0, r5                                        
   11d68:	e28dd028 	add	sp, sp, #40	; 0x28                            
   11d6c:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: opening inode", rc);    
  }                                                                   
                                                                      
  type = rtems_rfs_rtems_node_type_by_inode (&inode);                 
   11d70:	e1a0000d 	mov	r0, sp                                        
   11d74:	ebfffe9d 	bl	117f0 <rtems_rfs_rtems_node_type_by_inode>     
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11d78:	e1a0100d 	mov	r1, sp                                        
  if (rc > 0)                                                         
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: opening inode", rc);    
  }                                                                   
                                                                      
  type = rtems_rfs_rtems_node_type_by_inode (&inode);                 
   11d7c:	e1a05000 	mov	r5, r0                                        
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11d80:	e1a00004 	mov	r0, r4                                        
   11d84:	ebfffcc9 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   11d88:	e2504000 	subs	r4, r0, #0                                   
   11d8c:	dafffff4 	ble	11d64 <rtems_rfs_rtems_node_type+0x3c>        
  {                                                                   
    return rtems_rfs_rtems_error ("node_type: closing inode", rc);    
   11d90:	eb0035ff 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11d94:	e3e05000 	mvn	r5, #0                                        <== NOT EXECUTED
   11d98:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11d9c:	eafffff0 	b	11d64 <rtems_rfs_rtems_node_type+0x3c>          <== NOT EXECUTED
                                                                      

00011a2c <rtems_rfs_rtems_readlink>: static ssize_t rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc, char* buf, size_t bufsize) {
   11a2c:	e92d4010 	push	{r4, lr}                                     
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (pathloc); 
   11a30:	e5903014 	ldr	r3, [r0, #20]                                 
  int                     rc;                                         
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))         
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
   11a34:	e590e008 	ldr	lr, [r0, #8]                                  
                                                                      
static ssize_t                                                        
rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc,
                          char*                                   buf,
                          size_t                                  bufsize)
{                                                                     
   11a38:	e24dd008 	sub	sp, sp, #8                                    
   11a3c:	e1a0c001 	mov	ip, r1                                        
  int                     rc;                                         
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))         
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
   11a40:	e5930008 	ldr	r0, [r3, #8]                                  
   11a44:	e1a0100e 	mov	r1, lr                                        
                                                                      
static ssize_t                                                        
rtems_rfs_rtems_readlink (const rtems_filesystem_location_info_t* pathloc,
                          char*                                   buf,
                          size_t                                  bufsize)
{                                                                     
   11a48:	e1a03002 	mov	r3, r2                                        
  int                     rc;                                         
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))         
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
   11a4c:	e1a0200c 	mov	r2, ip                                        
   11a50:	e28dc004 	add	ip, sp, #4                                    
   11a54:	e58dc000 	str	ip, [sp]                                      
   11a58:	eb002fac 	bl	1d910 <rtems_rfs_symlink_read>                 
  if (rc)                                                             
   11a5c:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    return rtems_rfs_rtems_error ("readlink: reading link", rc);      
  }                                                                   
                                                                      
  return (ssize_t) length;                                            
   11a60:	059d3004 	ldreq	r3, [sp, #4]                                
                                                                      
  if (rtems_rfs_rtems_trace (RTEMS_RFS_RTEMS_DEBUG_READLINK))         
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
  if (rc)                                                             
   11a64:	1a000002 	bne	11a74 <rtems_rfs_rtems_readlink+0x48>         
  {                                                                   
    return rtems_rfs_rtems_error ("readlink: reading link", rc);      
  }                                                                   
                                                                      
  return (ssize_t) length;                                            
}                                                                     
   11a68:	e1a00003 	mov	r0, r3                                        
   11a6c:	e28dd008 	add	sp, sp, #8                                    
   11a70:	e8bd8010 	pop	{r4, pc}                                      
    printf ("rtems-rfs-rtems: readlink: in: ino:%" PRId32 "\n", ino); 
                                                                      
  rc = rtems_rfs_symlink_read (fs, ino, buf, bufsize, &length);       
  if (rc)                                                             
  {                                                                   
    return rtems_rfs_rtems_error ("readlink: reading link", rc);      
   11a74:	eb0036c6 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11a78:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   11a7c:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11a80:	eafffff8 	b	11a68 <rtems_rfs_rtems_readlink+0x3c>           <== NOT EXECUTED
                                                                      

00011940 <rtems_rfs_rtems_rename>: rtems_rfs_rtems_rename(const rtems_filesystem_location_info_t* old_parent_loc, const rtems_filesystem_location_info_t* old_loc, const rtems_filesystem_location_info_t* new_parent_loc, const char* new_name, size_t new_name_len) {
   11940:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     <== NOT EXECUTED
   11944:	e1a0c001 	mov	ip, r1                                        <== NOT EXECUTED
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (old_loc); 
   11948:	e5911014 	ldr	r1, [r1, #20]                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Link to the inode before unlinking so the inode is not erased when
   * unlinked.                                                        
   */                                                                 
  rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
   1194c:	e592e008 	ldr	lr, [r2, #8]                                  <== NOT EXECUTED
                       const rtems_filesystem_location_info_t* old_loc,
                       const rtems_filesystem_location_info_t* new_parent_loc,
                       const char*                             new_name,
                       size_t                                  new_name_len)
{                                                                     
  rtems_rfs_file_system*  fs = rtems_rfs_rtems_pathloc_dev (old_loc); 
   11950:	e5915008 	ldr	r5, [r1, #8]                                  <== NOT EXECUTED
rtems_rfs_rtems_rename(const rtems_filesystem_location_info_t* old_parent_loc,
                       const rtems_filesystem_location_info_t* old_loc,
                       const rtems_filesystem_location_info_t* new_parent_loc,
                       const char*                             new_name,
                       size_t                                  new_name_len)
{                                                                     
   11954:	e24dd008 	sub	sp, sp, #8                                    <== NOT EXECUTED
  int                     rc;                                         
                                                                      
  old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);      
  new_parent = rtems_rfs_rtems_get_pathloc_ino (new_parent_loc);      
                                                                      
  ino  = rtems_rfs_rtems_get_pathloc_ino (old_loc);                   
   11958:	e59c4008 	ldr	r4, [ip, #8]                                  <== NOT EXECUTED
  rtems_rfs_ino           new_parent;                                 
  rtems_rfs_ino           ino;                                        
  uint32_t                doff;                                       
  int                     rc;                                         
                                                                      
  old_parent = rtems_rfs_rtems_get_pathloc_ino (old_parent_loc);      
   1195c:	e5907008 	ldr	r7, [r0, #8]                                  <== NOT EXECUTED
  new_parent = rtems_rfs_rtems_get_pathloc_ino (new_parent_loc);      
                                                                      
  ino  = rtems_rfs_rtems_get_pathloc_ino (old_loc);                   
  doff = rtems_rfs_rtems_get_pathloc_doff (old_loc);                  
   11960:	e59c600c 	ldr	r6, [ip, #12]                                 <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Link to the inode before unlinking so the inode is not erased when
   * unlinked.                                                        
   */                                                                 
  rc = rtems_rfs_link (fs, new_name, new_name_len, new_parent, ino, true);
   11964:	e1a01003 	mov	r1, r3                                        <== NOT EXECUTED
   11968:	e3a0c001 	mov	ip, #1                                        <== NOT EXECUTED
   1196c:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   11970:	e59d2020 	ldr	r2, [sp, #32]                                 <== NOT EXECUTED
   11974:	e1a0300e 	mov	r3, lr                                        <== NOT EXECUTED
   11978:	e58d4000 	str	r4, [sp]                                      <== NOT EXECUTED
   1197c:	e58dc004 	str	ip, [sp, #4]                                  <== NOT EXECUTED
   11980:	eb002dd3 	bl	1d0d4 <rtems_rfs_link>                         <== NOT EXECUTED
  if (rc)                                                             
   11984:	e2508000 	subs	r8, r0, #0                                   <== NOT EXECUTED
   11988:	0a000005 	beq	119a4 <bsp_section_bss_size+0x10>             <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: linking", rc);             
   1198c:	eb003700 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11990:	e5808000 	str	r8, [r0]                                      <== NOT EXECUTED
   11994:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: unlinking", rc);           
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11998:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
   1199c:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
   119a0:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Unlink all inodes even directories with the dir option as false because a
   * directory may not be empty.                                      
   */                                                                 
  rc = rtems_rfs_unlink (fs, old_parent, ino, doff,                   
   119a4:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   119a8:	e1a03006 	mov	r3, r6                                        <== NOT EXECUTED
   119ac:	e3a0c002 	mov	ip, #2                                        <== NOT EXECUTED
   119b0:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   119b4:	e1a01007 	mov	r1, r7                                        <== NOT EXECUTED
   119b8:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   119bc:	eb002e35 	bl	1d298 <rtems_rfs_unlink>                       <== NOT EXECUTED
                         rtems_rfs_unlink_dir_allowed);               
  if (rc)                                                             
   119c0:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: unlinking", rc);           
  }                                                                   
                                                                      
  return 0;                                                           
   119c4:	01a03004 	moveq	r3, r4                                      <== NOT EXECUTED
   * Unlink all inodes even directories with the dir option as false because a
   * directory may not be empty.                                      
   */                                                                 
  rc = rtems_rfs_unlink (fs, old_parent, ino, doff,                   
                         rtems_rfs_unlink_dir_allowed);               
  if (rc)                                                             
   119c8:	0afffff2 	beq	11998 <bsp_section_bss_size+0x4>              <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("rename: unlinking", rc);           
   119cc:	eb0036f0 	bl	1f594 <__errno>                                <== NOT EXECUTED
   119d0:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   119d4:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   119d8:	eaffffee 	b	11998 <bsp_section_bss_size+0x4>                <== NOT EXECUTED
                                                                      

0001276c <rtems_rfs_rtems_set_handlers>: */ bool rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc, rtems_rfs_inode_handle* inode) {
   1276c:	e92d4010 	push	{r4, lr}                                     
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   12770:	e591300c 	ldr	r3, [r1, #12]                                 
   12774:	e5d31002 	ldrb	r1, [r3, #2]                                 
   12778:	e5d33003 	ldrb	r3, [r3, #3]                                 
   1277c:	e1831401 	orr	r1, r3, r1, lsl #8                            
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
   12780:	e2013a0f 	and	r3, r1, #61440	; 0xf000                       
 */                                                                   
                                                                      
bool                                                                  
rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc,  
                              rtems_rfs_inode_handle*           inode)
{                                                                     
   12784:	e1a02000 	mov	r2, r0                                        
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
   12788:	e3530901 	cmp	r3, #16384	; 0x4000                           
bool                                                                  
rtems_rfs_rtems_set_handlers (rtems_filesystem_location_info_t* loc,  
                              rtems_rfs_inode_handle*           inode)
{                                                                     
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
   1278c:	e3a00000 	mov	r0, #0                                        
   12790:	e5820010 	str	r0, [r2, #16]                                 
  if (RTEMS_RFS_S_ISDIR (mode))                                       
   12794:	0a000010 	beq	127dc <rtems_rfs_rtems_set_handlers+0x70>     
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
   12798:	e3530a02 	cmp	r3, #8192	; 0x2000                            
   1279c:	13530a06 	cmpne	r3, #24576	; 0x6000                         
   127a0:	13a04000 	movne	r4, #0                                      
   127a4:	03a04001 	moveq	r4, #1                                      
   127a8:	0a000007 	beq	127cc <rtems_rfs_rtems_set_handlers+0x60>     
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
   127ac:	e3530a0a 	cmp	r3, #40960	; 0xa000                           
   127b0:	0a000011 	beq	127fc <rtems_rfs_rtems_set_handlers+0x90>     
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
  else if (RTEMS_RFS_S_ISREG (mode))                                  
   127b4:	e3530902 	cmp	r3, #32768	; 0x8000                           
   127b8:	0a00000b 	beq	127ec <rtems_rfs_rtems_set_handlers+0x80>     
    loc->handlers = rtems_rfs_rtems_handlers (file);                  
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
   127bc:	e59f0048 	ldr	r0, [pc, #72]	; 1280c <rtems_rfs_rtems_set_handlers+0xa0><== NOT EXECUTED
   127c0:	eb003737 	bl	204a4 <printf>                                 <== NOT EXECUTED
    return false;                                                     
   127c4:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
  }                                                                   
  return true;                                                        
}                                                                     
   127c8:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
   127cc:	e59f303c 	ldr	r3, [pc, #60]	; 12810 <rtems_rfs_rtems_set_handlers+0xa4><== NOT EXECUTED
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
   127d0:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
   127d4:	e5823010 	str	r3, [r2, #16]                                 <== NOT EXECUTED
   127d8:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                              rtems_rfs_inode_handle*           inode)
{                                                                     
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
   127dc:	e59f3030 	ldr	r3, [pc, #48]	; 12814 <rtems_rfs_rtems_set_handlers+0xa8>
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
   127e0:	e3a00001 	mov	r0, #1                                        
                              rtems_rfs_inode_handle*           inode)
{                                                                     
  uint16_t mode = rtems_rfs_inode_get_mode (inode);                   
  loc->handlers = NULL;                                               
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
   127e4:	e5823010 	str	r3, [r2, #16]                                 
   127e8:	e8bd8010 	pop	{r4, pc}                                      
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
  else if (RTEMS_RFS_S_ISREG (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (file);                  
   127ec:	e59f3024 	ldr	r3, [pc, #36]	; 12818 <rtems_rfs_rtems_set_handlers+0xac>
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
   127f0:	e3a00001 	mov	r0, #1                                        
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
  else if (RTEMS_RFS_S_ISREG (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (file);                  
   127f4:	e5823010 	str	r3, [r2, #16]                                 
   127f8:	e8bd8010 	pop	{r4, pc}                                      
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
   127fc:	e59f3018 	ldr	r3, [pc, #24]	; 1281c <rtems_rfs_rtems_set_handlers+0xb0>
  else                                                                
  {                                                                   
    printf ("rtems-rfs: mode type unknown: %04x\n", mode);            
    return false;                                                     
  }                                                                   
  return true;                                                        
   12800:	e3a00001 	mov	r0, #1                                        
  if (RTEMS_RFS_S_ISDIR (mode))                                       
    loc->handlers = rtems_rfs_rtems_handlers (dir);                   
  else if (RTEMS_RFS_S_ISCHR (mode) || RTEMS_RFS_S_ISBLK(mode))       
    loc->handlers = rtems_rfs_rtems_handlers (device);                
  else if (RTEMS_RFS_S_ISLNK (mode))                                  
    loc->handlers = rtems_rfs_rtems_handlers (link);                  
   12804:	e5823010 	str	r3, [r2, #16]                                 
   12808:	e8bd8010 	pop	{r4, pc}                                      
                                                                      

00011848 <rtems_rfs_rtems_statvfs>: * @return int */ static int rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc, struct statvfs* sb) {
   11848:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
   1184c:	e5903014 	ldr	r3, [r0, #20]                                 <== NOT EXECUTED
   11850:	e5935008 	ldr	r5, [r3, #8]                                  <== NOT EXECUTED
 * @return int                                                        
 */                                                                   
static int                                                            
rtems_rfs_rtems_statvfs (const rtems_filesystem_location_info_t* pathloc,
                         struct statvfs*                         sb)  
{                                                                     
   11854:	e24dd008 	sub	sp, sp, #8                                    <== NOT EXECUTED
   11858:	e1a04001 	mov	r4, r1                                        <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
   1185c:	e28d2004 	add	r2, sp, #4                                    <== NOT EXECUTED
   11860:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
   11864:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   11868:	ebfffd3a 	bl	10d58 <rtems_rfs_group_usage>                  <== NOT EXECUTED
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
   1186c:	e5953010 	ldr	r3, [r5, #16]                                 <== NOT EXECUTED
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
   11870:	e5951004 	ldr	r1, [r5, #4]                                  <== NOT EXECUTED
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
   11874:	e283701c 	add	r7, r3, #28                                   <== NOT EXECUTED
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
   11878:	e59d3000 	ldr	r3, [sp]                                      <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
   1187c:	e5952014 	ldr	r2, [r5, #20]                                 <== NOT EXECUTED
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
   11880:	e0631001 	rsb	r1, r3, r1                                    <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
   11884:	e59d3004 	ldr	r3, [sp, #4]                                  <== NOT EXECUTED
   11888:	e0633002 	rsb	r3, r3, r2                                    <== NOT EXECUTED
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
   1188c:	e595a008 	ldr	sl, [r5, #8]                                  <== NOT EXECUTED
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
   11890:	e8970180 	ldm	r7, {r7, r8}                                  <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
  sb->f_flag    = rtems_rfs_fs_flags (fs);                            
   11894:	e5956000 	ldr	r6, [r5]                                      <== NOT EXECUTED
  sb->f_namemax = rtems_rfs_fs_max_name (fs);                         
   11898:	e595c01c 	ldr	ip, [r5, #28]                                 <== NOT EXECUTED
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
  sb->f_bavail  = sb->f_bfree;                                        
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
   1189c:	e5843024 	str	r3, [r4, #36]	; 0x24                          <== NOT EXECUTED
  sb->f_favail  = sb->f_ffree;                                        
   118a0:	e5843028 	str	r3, [r4, #40]	; 0x28                          <== NOT EXECUTED
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
   118a4:	e59f3038 	ldr	r3, [pc, #56]	; 118e4 <rtems_rfs_rtems_statvfs+0x9c><== NOT EXECUTED
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
   118a8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
  size_t                 blocks;                                      
  size_t                 inodes;                                      
                                                                      
  rtems_rfs_group_usage (fs, &blocks, &inodes);                       
                                                                      
  sb->f_bsize   = rtems_rfs_fs_block_size (fs);                       
   118ac:	e584a000 	str	sl, [r4]                                      <== NOT EXECUTED
  sb->f_frsize  = rtems_rfs_fs_media_block_size (fs);                 
   118b0:	e5848004 	str	r8, [r4, #4]                                  <== NOT EXECUTED
  sb->f_blocks  = rtems_rfs_fs_media_blocks (fs);                     
   118b4:	e5847008 	str	r7, [r4, #8]                                  <== NOT EXECUTED
   118b8:	e584000c 	str	r0, [r4, #12]                                 <== NOT EXECUTED
  sb->f_bfree   = rtems_rfs_fs_blocks (fs) - blocks;                  
   118bc:	e5841010 	str	r1, [r4, #16]                                 <== NOT EXECUTED
   118c0:	e5840014 	str	r0, [r4, #20]                                 <== NOT EXECUTED
  sb->f_bavail  = sb->f_bfree;                                        
   118c4:	e5841018 	str	r1, [r4, #24]                                 <== NOT EXECUTED
   118c8:	e584001c 	str	r0, [r4, #28]                                 <== NOT EXECUTED
  sb->f_files   = rtems_rfs_fs_inodes (fs);                           
   118cc:	e5842020 	str	r2, [r4, #32]                                 <== NOT EXECUTED
  sb->f_ffree   = rtems_rfs_fs_inodes (fs) - inodes;                  
  sb->f_favail  = sb->f_ffree;                                        
  sb->f_fsid    = RTEMS_RFS_SB_MAGIC;                                 
   118d0:	e584302c 	str	r3, [r4, #44]	; 0x2c                          <== NOT EXECUTED
  sb->f_flag    = rtems_rfs_fs_flags (fs);                            
   118d4:	e5846030 	str	r6, [r4, #48]	; 0x30                          <== NOT EXECUTED
  sb->f_namemax = rtems_rfs_fs_max_name (fs);                         
   118d8:	e584c034 	str	ip, [r4, #52]	; 0x34                          <== NOT EXECUTED
                                                                      
  return 0;                                                           
}                                                                     
   118dc:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
   118e0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
                                                                      

00011a84 <rtems_rfs_rtems_symlink>: static int rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc, const char* node_name, size_t node_name_len, const char* target) {
   11a84:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
   11a88:	e1a07003 	mov	r7, r3                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
   11a8c:	e5903014 	ldr	r3, [r0, #20]                                 
static int                                                            
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
                         const char*                             node_name,
                         size_t                                  node_name_len,
                         const char*                             target)
{                                                                     
   11a90:	e24dd010 	sub	sp, sp, #16                                   
   11a94:	e1a0c000 	mov	ip, r0                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
                          target, strlen (target),                    
   11a98:	e1a00007 	mov	r0, r7                                        
                         const char*                             node_name,
                         size_t                                  node_name_len,
                         const char*                             target)
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
   11a9c:	e59c4008 	ldr	r4, [ip, #8]                                  
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
                         const char*                             node_name,
                         size_t                                  node_name_len,
                         const char*                             target)
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
   11aa0:	e5938008 	ldr	r8, [r3, #8]                                  
static int                                                            
rtems_rfs_rtems_symlink (const rtems_filesystem_location_info_t* parent_loc,
                         const char*                             node_name,
                         size_t                                  node_name_len,
                         const char*                             target)
{                                                                     
   11aa4:	e1a09001 	mov	r9, r1                                        
   11aa8:	e1a0a002 	mov	sl, r2                                        
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
                          target, strlen (target),                    
   11aac:	eb003f50 	bl	217f4 <strlen>                                 
   11ab0:	e1a06000 	mov	r6, r0                                        
                          geteuid(), getegid(), parent);              
   11ab4:	eb001170 	bl	1607c <geteuid>                                
   11ab8:	e1a05000 	mov	r5, r0                                        
   11abc:	eb001169 	bl	16068 <getegid>                                
{                                                                     
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (parent_loc);
  rtems_rfs_ino          parent = rtems_rfs_rtems_get_pathloc_ino (parent_loc);
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
   11ac0:	e1a03007 	mov	r3, r7                                        
   11ac4:	e58d0008 	str	r0, [sp, #8]                                  
   11ac8:	e1a01009 	mov	r1, r9                                        
   11acc:	e1a0200a 	mov	r2, sl                                        
   11ad0:	e1a00008 	mov	r0, r8                                        
   11ad4:	e58d400c 	str	r4, [sp, #12]                                 
   11ad8:	e58d6000 	str	r6, [sp]                                      
   11adc:	e58d5004 	str	r5, [sp, #4]                                  
   11ae0:	eb002ee2 	bl	1d670 <rtems_rfs_symlink>                      
                          target, strlen (target),                    
                          geteuid(), getegid(), parent);              
  if (rc)                                                             
   11ae4:	e2504000 	subs	r4, r0, #0                                   
  {                                                                   
    return rtems_rfs_rtems_error ("symlink: linking", rc);            
  }                                                                   
                                                                      
  return 0;                                                           
   11ae8:	01a03004 	moveq	r3, r4                                      
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_symlink (fs, node_name, node_name_len,               
                          target, strlen (target),                    
                          geteuid(), getegid(), parent);              
  if (rc)                                                             
   11aec:	0a000002 	beq	11afc <rtems_rfs_rtems_symlink+0x78>          
  {                                                                   
    return rtems_rfs_rtems_error ("symlink: linking", rc);            
   11af0:	eb0036a7 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11af4:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11af8:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11afc:	e1a00003 	mov	r0, r3                                        
   11b00:	e28dd010 	add	sp, sp, #16                                   
   11b04:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
                                                                      

00012458 <rtems_rfs_rtems_unlock_by_mt_entry>: static void rtems_rfs_rtems_unlock_by_mt_entry ( const rtems_filesystem_mount_table_entry_t *mt_entry ) { rtems_rfs_file_system* fs = mt_entry->fs_info;
   12458:	e5900008 	ldr	r0, [r0, #8]                                  
                                                                      
static void                                                           
rtems_rfs_rtems_unlock_by_mt_entry (                                  
  const rtems_filesystem_mount_table_entry_t *mt_entry                
)                                                                     
{                                                                     
   1245c:	e92d4010 	push	{r4, lr}                                     
 * Unlock the RFS file system.                                        
 */                                                                   
static inline void                                                    
 rtems_rfs_rtems_unlock (rtems_rfs_file_system* fs)                   
{                                                                     
  rtems_rfs_rtems_private* rtems = rtems_rfs_fs_user (fs);            
   12460:	e5904080 	ldr	r4, [r0, #128]	; 0x80                         
  rtems_rfs_buffers_release (fs);                                     
   12464:	eb001fcf 	bl	1a3a8 <rtems_rfs_buffers_release>              
 */                                                                   
static inline int                                                     
rtems_rfs_mutex_unlock (rtems_rfs_mutex* mutex)                       
{                                                                     
#if __rtems__                                                         
  rtems_status_code sc = rtems_semaphore_release (*mutex);            
   12468:	e5940000 	ldr	r0, [r4]                                      
   1246c:	ebffe629 	bl	bd18 <rtems_semaphore_release>                 
  if (sc != RTEMS_SUCCESSFUL)                                         
   12470:	e2504000 	subs	r4, r0, #0                                   
   12474:	08bd8010 	popeq	{r4, pc}                                    
  {                                                                   
#if RTEMS_RFS_TRACE                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_MUTEX))                      
   12478:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   1247c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   12480:	eb0000ea 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   12484:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   12488:	08bd8010 	popeq	{r4, pc}                                    <== NOT EXECUTED
      printf ("rtems-rfs: mutex: release failed: %s\n",               
   1248c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   12490:	ebffd2dd 	bl	700c <rtems_status_text>                       <== NOT EXECUTED
   12494:	e1a01000 	mov	r1, r0                                        <== NOT EXECUTED
   12498:	e59f0004 	ldr	r0, [pc, #4]	; 124a4 <rtems_rfs_rtems_unlock_by_mt_entry+0x4c><== NOT EXECUTED
  rtems_rfs_file_system* fs = mt_entry->fs_info;                      
                                                                      
  rtems_rfs_rtems_unlock (fs);                                        
}                                                                     
   1249c:	e8bd4010 	pop	{r4, lr}                                      <== NOT EXECUTED
   124a0:	ea0037ff 	b	204a4 <printf>                                  <== NOT EXECUTED
                                                                      

00011b08 <rtems_rfs_rtems_utime>: static int rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc, time_t atime, time_t mtime) {
   11b08:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         <== NOT EXECUTED
   11b0c:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
   11b10:	e5900014 	ldr	r0, [r0, #20]                                 <== NOT EXECUTED
   11b14:	e5906008 	ldr	r6, [r0, #8]                                  <== NOT EXECUTED
                                                                      
static int                                                            
rtems_rfs_rtems_utime(const rtems_filesystem_location_info_t* pathloc,
                      time_t                                  atime,  
                      time_t                                  mtime)  
{                                                                     
   11b18:	e24dd028 	sub	sp, sp, #40	; 0x28                            <== NOT EXECUTED
   11b1c:	e1a05001 	mov	r5, r1                                        <== NOT EXECUTED
   11b20:	e1a04002 	mov	r4, r2                                        <== NOT EXECUTED
  rtems_rfs_file_system* fs = rtems_rfs_rtems_pathloc_dev (pathloc);  
  rtems_rfs_ino          ino = rtems_rfs_rtems_get_pathloc_ino (pathloc);
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   11b24:	e5931008 	ldr	r1, [r3, #8]                                  <== NOT EXECUTED
   11b28:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   11b2c:	e1a0200d 	mov	r2, sp                                        <== NOT EXECUTED
   11b30:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   11b34:	ebfffce3 	bl	10ec8 <rtems_rfs_inode_open>                   <== NOT EXECUTED
  if (rc)                                                             
   11b38:	e2507000 	subs	r7, r0, #0                                   <== NOT EXECUTED
   11b3c:	0a000005 	beq	11b58 <rtems_rfs_rtems_utime+0x50>            <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: read inode", rc);           
   11b40:	eb003693 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11b44:	e5807000 	str	r7, [r0]                                      <== NOT EXECUTED
   11b48:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   11b4c:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
   11b50:	e28dd028 	add	sp, sp, #40	; 0x28                            <== NOT EXECUTED
   11b54:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
   11b58:	e59d300c 	ldr	r3, [sp, #12]                                 <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   11b5c:	e1a00c24 	lsr	r0, r4, #24                                   <== NOT EXECUTED
   11b60:	e1a01824 	lsr	r1, r4, #16                                   <== NOT EXECUTED
   11b64:	e1a02424 	lsr	r2, r4, #8                                    <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
   11b68:	e1a0e825 	lsr	lr, r5, #16                                   <== NOT EXECUTED
   11b6c:	e1a0c425 	lsr	ip, r5, #8                                    <== NOT EXECUTED
   11b70:	e1a07c25 	lsr	r7, r5, #24                                   <== NOT EXECUTED
   11b74:	e5c37010 	strb	r7, [r3, #16]                                <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   11b78:	e5c30014 	strb	r0, [r3, #20]                                <== NOT EXECUTED
   11b7c:	e5c31015 	strb	r1, [r3, #21]                                <== NOT EXECUTED
   11b80:	e5c34017 	strb	r4, [r3, #23]                                <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
   11b84:	e5c3e011 	strb	lr, [r3, #17]                                <== NOT EXECUTED
   11b88:	e5c3c012 	strb	ip, [r3, #18]                                <== NOT EXECUTED
   11b8c:	e5c35013 	strb	r5, [r3, #19]                                <== NOT EXECUTED
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_mtime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          mtime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->mtime, mtime);                  
   11b90:	e5c32016 	strb	r2, [r3, #22]                                <== NOT EXECUTED
  }                                                                   
                                                                      
  rtems_rfs_inode_set_atime (&inode, atime);                          
  rtems_rfs_inode_set_mtime (&inode, mtime);                          
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   11b94:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
static inline void                                                    
rtems_rfs_inode_set_atime (rtems_rfs_inode_handle* handle,            
                           rtems_rfs_time          atime)             
{                                                                     
  rtems_rfs_write_u32 (&handle->node->atime, atime);                  
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   11b98:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
   11b9c:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
   11ba0:	e5cd3010 	strb	r3, [sp, #16]                                <== NOT EXECUTED
   11ba4:	ebfffd41 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
  if (rc)                                                             
   11ba8:	e2504000 	subs	r4, r0, #0                                   <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: closing inode", rc);        
  }                                                                   
                                                                      
  return 0;                                                           
   11bac:	01a03004 	moveq	r3, r4                                      <== NOT EXECUTED
                                                                      
  rtems_rfs_inode_set_atime (&inode, atime);                          
  rtems_rfs_inode_set_mtime (&inode, mtime);                          
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
  if (rc)                                                             
   11bb0:	0affffe5 	beq	11b4c <rtems_rfs_rtems_utime+0x44>            <== NOT EXECUTED
  {                                                                   
    return rtems_rfs_rtems_error ("utime: closing inode", rc);        
   11bb4:	eb003676 	bl	1f594 <__errno>                                <== NOT EXECUTED
   11bb8:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   11bbc:	e5804000 	str	r4, [r0]                                      <== NOT EXECUTED
   11bc0:	eaffffe1 	b	11b4c <rtems_rfs_rtems_utime+0x44>              <== NOT EXECUTED
                                                                      

0000f844 <rtems_rfs_rup_quotient>: * "quotient = dividend / divisor" */ int rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor) { if (dividend == 0)
    f844:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
 * Return a rounded up integer quotient given a dividend and divisor. That is:
 * "quotient = dividend / divisor"                                    
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
    f848:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 <== NOT EXECUTED
  if (dividend == 0)                                                  
    f84c:	0a000003 	beq	f860 <rtems_rfs_rup_quotient+0x1c>            <== NOT EXECUTED
    return 1;                                                         
  return ((dividend - 1) / divisor) + 1;                              
    f850:	e2400001 	sub	r0, r0, #1                                    <== NOT EXECUTED
    f854:	ebffc893 	bl	1aa8 <__aeabi_uidiv>                           <== NOT EXECUTED
    f858:	e2800001 	add	r0, r0, #1                                    <== NOT EXECUTED
    f85c:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
 */                                                                   
int                                                                   
rtems_rfs_rup_quotient (uint32_t dividend, uint32_t divisor)          
{                                                                     
  if (dividend == 0)                                                  
    return 1;                                                         
    f860:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
  return ((dividend - 1) / divisor) + 1;                              
}                                                                     
    f864:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

00019c0c <rtems_rfs_scan_chain>: */ static rtems_rfs_buffer* rtems_rfs_scan_chain (rtems_chain_control* chain, uint32_t* count, rtems_rfs_buffer_block block) {
   19c0c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
   19c10:	e1a05000 	mov	r5, r0                                        
   19c14:	e1a07001 	mov	r7, r1                                        
  rtems_rfs_buffer* buffer;                                           
  rtems_chain_node* node;                                             
                                                                      
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
   19c18:	e3a00080 	mov	r0, #128	; 0x80                               
   19c1c:	e3a01000 	mov	r1, #0                                        
 */                                                                   
static rtems_rfs_buffer*                                              
rtems_rfs_scan_chain (rtems_chain_control*   chain,                   
                      uint32_t*              count,                   
                      rtems_rfs_buffer_block block)                   
{                                                                     
   19c20:	e1a06002 	mov	r6, r2                                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Last(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Tail( the_chain )->previous;                          
   19c24:	e5954008 	ldr	r4, [r5, #8]                                  
  rtems_rfs_buffer* buffer;                                           
  rtems_chain_node* node;                                             
                                                                      
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
   19c28:	ebffe300 	bl	12830 <rtems_rfs_trace>                        
   19c2c:	e3500000 	cmp	r0, #0                                        
   19c30:	0a000004 	beq	19c48 <rtems_rfs_scan_chain+0x3c>             
   19c34:	ea000028 	b	19cdc <rtems_rfs_scan_chain+0xd0>               <== NOT EXECUTED
    buffer = (rtems_rfs_buffer*) node;                                
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))              
      printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));            
                                                                      
    if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
   19c38:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          
   19c3c:	e1530006 	cmp	r3, r6                                        
   19c40:	0a00000d 	beq	19c7c <rtems_rfs_scan_chain+0x70>             
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Previous(                     
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  return the_node->previous;                                          
   19c44:	e5944004 	ldr	r4, [r4, #4]                                  
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
                                                                      
  while (!rtems_chain_is_head (chain, node))                          
   19c48:	e1540005 	cmp	r4, r5                                        
  {                                                                   
    buffer = (rtems_rfs_buffer*) node;                                
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))              
   19c4c:	e3a00080 	mov	r0, #128	; 0x80                               
   19c50:	e3a01000 	mov	r1, #0                                        
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
                                                                      
  while (!rtems_chain_is_head (chain, node))                          
   19c54:	0a000019 	beq	19cc0 <rtems_rfs_scan_chain+0xb4>             
  {                                                                   
    buffer = (rtems_rfs_buffer*) node;                                
                                                                      
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))              
   19c58:	ebffe2f4 	bl	12830 <rtems_rfs_trace>                        
   19c5c:	e3500000 	cmp	r0, #0                                        
   19c60:	0afffff4 	beq	19c38 <rtems_rfs_scan_chain+0x2c>             
      printf ("%" PRIuPTR " ", ((intptr_t) buffer->user));            
   19c64:	e5941034 	ldr	r1, [r4, #52]	; 0x34                          <== NOT EXECUTED
   19c68:	e59f0080 	ldr	r0, [pc, #128]	; 19cf0 <rtems_rfs_scan_chain+0xe4><== NOT EXECUTED
   19c6c:	eb001a0c 	bl	204a4 <printf>                                 <== NOT EXECUTED
                                                                      
    if (((rtems_rfs_buffer_block) ((intptr_t)(buffer->user))) == block)
   19c70:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          <== NOT EXECUTED
   19c74:	e1530006 	cmp	r3, r6                                        <== NOT EXECUTED
   19c78:	1afffff1 	bne	19c44 <rtems_rfs_scan_chain+0x38>             <== NOT EXECUTED
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))            
   19c7c:	e3a00080 	mov	r0, #128	; 0x80                               
   19c80:	e3a01000 	mov	r1, #0                                        
   19c84:	ebffe2e9 	bl	12830 <rtems_rfs_trace>                        
   19c88:	e3500000 	cmp	r0, #0                                        
        printf (": found block=%" PRIuPTR "\n",                       
   19c8c:	159f0060 	ldrne	r0, [pc, #96]	; 19cf4 <rtems_rfs_scan_chain+0xe8>
   19c90:	15941034 	ldrne	r1, [r4, #52]	; 0x34                        
   19c94:	1b001a02 	blne	204a4 <printf>                               
                ((intptr_t)(buffer->user)));                          
                                                                      
      (*count)--;                                                     
   19c98:	e5973000 	ldr	r3, [r7]                                      
   19c9c:	e2433001 	sub	r3, r3, #1                                    
   19ca0:	e5873000 	str	r3, [r7]                                      
 */                                                                   
RTEMS_INLINE_ROUTINE void rtems_chain_extract(                        
  rtems_chain_node *the_node                                          
)                                                                     
{                                                                     
  _Chain_Extract( the_node );                                         
   19ca4:	e1a00004 	mov	r0, r4                                        
   19ca8:	ebfff46f 	bl	16e6c <_Chain_Extract>                         
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Set_off_chain(                       
  Chain_Node *node                                                    
)                                                                     
{                                                                     
  node->next = node->previous = NULL;                                 
   19cac:	e3a03000 	mov	r3, #0                                        
   19cb0:	e5843004 	str	r3, [r4, #4]                                  
   19cb4:	e5843000 	str	r3, [r4]                                      
      rtems_chain_extract (node);                                     
      rtems_chain_set_off_chain (node);                               
      return buffer;                                                  
   19cb8:	e1a00004 	mov	r0, r4                                        
   19cbc:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
    }                                                                 
    node = rtems_chain_previous (node);                               
  }                                                                   
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
   19cc0:	ebffe2da 	bl	12830 <rtems_rfs_trace>                        
   19cc4:	e3500000 	cmp	r0, #0                                        
   19cc8:	08bd80f0 	popeq	{r4, r5, r6, r7, pc}                        
    printf (": not found\n");                                         
   19ccc:	e59f0024 	ldr	r0, [pc, #36]	; 19cf8 <rtems_rfs_scan_chain+0xec><== NOT EXECUTED
   19cd0:	eb001a8b 	bl	20704 <puts>                                   <== NOT EXECUTED
                                                                      
  return NULL;                                                        
   19cd4:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
   19cd8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
  rtems_chain_node* node;                                             
                                                                      
  node = rtems_chain_last (chain);                                    
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_BUFFER_CHAINS))                
    printf ("rtems-rfs: buffer-scan: count=%" PRIu32 ", block=%" PRIu32 ": ", *count, block);
   19cdc:	e5971000 	ldr	r1, [r7]                                      <== NOT EXECUTED
   19ce0:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   19ce4:	e59f0010 	ldr	r0, [pc, #16]	; 19cfc <rtems_rfs_scan_chain+0xf0><== NOT EXECUTED
   19ce8:	eb0019ed 	bl	204a4 <printf>                                 <== NOT EXECUTED
   19cec:	eaffffd5 	b	19c48 <rtems_rfs_scan_chain+0x3c>               <== NOT EXECUTED
                                                                      

0001d670 <rtems_rfs_symlink>: const char* link, int link_length, uid_t uid, gid_t gid, rtems_rfs_ino parent) {
   1d670:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
   1d674:	e1a07000 	mov	r7, r0                                        
   1d678:	e24dd0a4 	sub	sp, sp, #164	; 0xa4                           
   1d67c:	e1a05001 	mov	r5, r1                                        
  rtems_rfs_inode_handle inode;                                       
  rtems_rfs_ino          ino;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
   1d680:	e3a00000 	mov	r0, #0                                        
   1d684:	e3a01002 	mov	r1, #2                                        
                   const char*            link,                       
                   int                    link_length,                
                   uid_t                  uid,                        
                   gid_t                  gid,                        
                   rtems_rfs_ino          parent)                     
{                                                                     
   1d688:	e1a0a002 	mov	sl, r2                                        
   1d68c:	e1a06003 	mov	r6, r3                                        
   1d690:	e59d40c8 	ldr	r4, [sp, #200]	; 0xc8                         
   1d694:	e59db0d4 	ldr	fp, [sp, #212]	; 0xd4                         
   1d698:	e1dd8cbc 	ldrh	r8, [sp, #204]	; 0xcc                        
   1d69c:	e1dd9db0 	ldrh	r9, [sp, #208]	; 0xd0                        
  rtems_rfs_inode_handle inode;                                       
  rtems_rfs_ino          ino;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
   1d6a0:	ebffd462 	bl	12830 <rtems_rfs_trace>                        
   1d6a4:	e3500000 	cmp	r0, #0                                        
   1d6a8:	1a000006 	bne	1d6c8 <rtems_rfs_symlink+0x58>                
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
      printf ("%c", link[c]);                                         
  }                                                                   
                                                                      
  if (link_length >= rtems_rfs_fs_block_size (fs))                    
   1d6ac:	e5973008 	ldr	r3, [r7, #8]                                  
   1d6b0:	e1540003 	cmp	r4, r3                                        
    return ENAMETOOLONG;                                              
   1d6b4:	23a0805b 	movcs	r8, #91	; 0x5b                              
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
      printf ("%c", link[c]);                                         
  }                                                                   
                                                                      
  if (link_length >= rtems_rfs_fs_block_size (fs))                    
   1d6b8:	3a00001d 	bcc	1d734 <rtems_rfs_symlink+0xc4>                
  rtems_rfs_inode_set_block_offset (&inode, link_length);             
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
                                                                      
  return rc;                                                          
}                                                                     
   1d6bc:	e1a00008 	mov	r0, r8                                        
   1d6c0:	e28dd0a4 	add	sp, sp, #164	; 0xa4                           
   1d6c4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
   1d6c8:	e59f0234 	ldr	r0, [pc, #564]	; 1d904 <rtems_rfs_symlink+0x294><== NOT EXECUTED
   1d6cc:	e1a0100b 	mov	r1, fp                                        <== NOT EXECUTED
   1d6d0:	eb000b73 	bl	204a4 <printf>                                 <== NOT EXECUTED
    for (c = 0; c < length; c++)                                      
   1d6d4:	e35a0000 	cmp	sl, #0                                        <== NOT EXECUTED
   1d6d8:	da000007 	ble	1d6fc <rtems_rfs_symlink+0x8c>                <== NOT EXECUTED
   1d6dc:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1d6e0:	e7d50003 	ldrb	r0, [r5, r3]                                 <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
   1d6e4:	e2833001 	add	r3, r3, #1                                    <== NOT EXECUTED
      printf ("%c", name[c]);                                         
   1d6e8:	e58d3014 	str	r3, [sp, #20]                                 <== NOT EXECUTED
   1d6ec:	eb000bd6 	bl	2064c <putchar>                                <== NOT EXECUTED
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK))                      
  {                                                                   
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
   1d6f0:	e59d3014 	ldr	r3, [sp, #20]                                 <== NOT EXECUTED
   1d6f4:	e153000a 	cmp	r3, sl                                        <== NOT EXECUTED
   1d6f8:	1afffff8 	bne	1d6e0 <rtems_rfs_symlink+0x70>                <== NOT EXECUTED
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
   1d6fc:	e59f0204 	ldr	r0, [pc, #516]	; 1d908 <rtems_rfs_symlink+0x298><== NOT EXECUTED
   1d700:	eb000b67 	bl	204a4 <printf>                                 <== NOT EXECUTED
    for (c = 0; c < link_length; c++)                                 
   1d704:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
   1d708:	daffffe7 	ble	1d6ac <rtems_rfs_symlink+0x3c>                <== NOT EXECUTED
   1d70c:	e3a0a000 	mov	sl, #0                                        <== NOT EXECUTED
      printf ("%c", link[c]);                                         
   1d710:	e7d6000a 	ldrb	r0, [r6, sl]                                 <== NOT EXECUTED
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
   1d714:	e28aa001 	add	sl, sl, #1                                    <== NOT EXECUTED
      printf ("%c", link[c]);                                         
   1d718:	eb000bcb 	bl	2064c <putchar>                                <== NOT EXECUTED
    int c;                                                            
    printf ("rtems-rfs: symlink: parent:%" PRIu32 " name:", parent);  
    for (c = 0; c < length; c++)                                      
      printf ("%c", name[c]);                                         
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
   1d71c:	e15a0004 	cmp	sl, r4                                        <== NOT EXECUTED
   1d720:	1afffffa 	bne	1d710 <rtems_rfs_symlink+0xa0>                <== NOT EXECUTED
      printf ("%c", link[c]);                                         
  }                                                                   
                                                                      
  if (link_length >= rtems_rfs_fs_block_size (fs))                    
   1d724:	e5973008 	ldr	r3, [r7, #8]                                  <== NOT EXECUTED
   1d728:	e1540003 	cmp	r4, r3                                        <== NOT EXECUTED
    return ENAMETOOLONG;                                              
   1d72c:	23a0805b 	movcs	r8, #91	; 0x5b                              <== NOT EXECUTED
    printf (" link:");                                                
    for (c = 0; c < link_length; c++)                                 
      printf ("%c", link[c]);                                         
  }                                                                   
                                                                      
  if (link_length >= rtems_rfs_fs_block_size (fs))                    
   1d730:	2affffe1 	bcs	1d6bc <rtems_rfs_symlink+0x4c>                <== NOT EXECUTED
    return ENAMETOOLONG;                                              
                                                                      
  rc = rtems_rfs_inode_create (fs, parent, name, strlen (name),       
   1d734:	e1a00005 	mov	r0, r5                                        
   1d738:	eb00102d 	bl	217f4 <strlen>                                 
   1d73c:	e59fc1c8 	ldr	ip, [pc, #456]	; 1d90c <rtems_rfs_symlink+0x29c>
   1d740:	e1a03000 	mov	r3, r0                                        
   1d744:	e58dc000 	str	ip, [sp]                                      
   1d748:	e3a0a001 	mov	sl, #1                                        
   1d74c:	e28dc09c 	add	ip, sp, #156	; 0x9c                           
   1d750:	e1a00007 	mov	r0, r7                                        
   1d754:	e1a0100b 	mov	r1, fp                                        
   1d758:	e1a02005 	mov	r2, r5                                        
   1d75c:	e58d8008 	str	r8, [sp, #8]                                  
   1d760:	e58da004 	str	sl, [sp, #4]                                  
   1d764:	e58d900c 	str	r9, [sp, #12]                                 
   1d768:	e58dc010 	str	ip, [sp, #16]                                 
   1d76c:	ebffcf37 	bl	11450 <rtems_rfs_inode_create>                 
                               RTEMS_RFS_S_SYMLINK,                   
                               1, uid, gid, &ino);                    
  if (rc > 0)                                                         
   1d770:	e2508000 	subs	r8, r0, #0                                   
   1d774:	caffffd0 	bgt	1d6bc <rtems_rfs_symlink+0x4c>                
    return rc;                                                        
                                                                      
  rc = rtems_rfs_inode_open (fs, ino, &inode, true);                  
   1d778:	e1a00007 	mov	r0, r7                                        
   1d77c:	e59d109c 	ldr	r1, [sp, #156]	; 0x9c                         
   1d780:	e28d2068 	add	r2, sp, #104	; 0x68                           
   1d784:	e1a0300a 	mov	r3, sl                                        
   1d788:	ebffcdce 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc > 0)                                                         
   1d78c:	e2508000 	subs	r8, r0, #0                                   
   1d790:	caffffc9 	bgt	1d6bc <rtems_rfs_symlink+0x4c>                
  /*                                                                  
   * If the link length is less than the length of data union in the inode
   * place the link into the data area else allocate a block and write the link
   * to that.                                                         
   */                                                                 
  if (link_length < RTEMS_RFS_INODE_DATA_NAME_SIZE)                   
   1d794:	e3540013 	cmp	r4, #19                                       
   1d798:	8a000020 	bhi	1d820 <rtems_rfs_symlink+0x1b0>               
  {                                                                   
    memset (inode.node->data.name, 0, RTEMS_RFS_INODE_DATA_NAME_SIZE);
   1d79c:	e59d0074 	ldr	r0, [sp, #116]	; 0x74                         
   1d7a0:	e3a01000 	mov	r1, #0                                        
   1d7a4:	e3a02014 	mov	r2, #20                                       
   1d7a8:	e280001c 	add	r0, r0, #28                                   
   1d7ac:	eb000acb 	bl	202e0 <memset>                                 
    memcpy (inode.node->data.name, link, link_length);                
   1d7b0:	e59d0074 	ldr	r0, [sp, #116]	; 0x74                         
   1d7b4:	e1a02004 	mov	r2, r4                                        
   1d7b8:	e1a01006 	mov	r1, r6                                        
   1d7bc:	e280001c 	add	r0, r0, #28                                   
   1d7c0:	eb000a43 	bl	200d4 <memcpy>                                 
 * @param block_count The block count.                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_count (rtems_rfs_inode_handle* handle, uint32_t block_count)
{                                                                     
  rtems_rfs_write_u32 (&handle->node->block_count, block_count);      
   1d7c4:	e59d2074 	ldr	r2, [sp, #116]	; 0x74                         
   1d7c8:	e3a03000 	mov	r3, #0                                        
   1d7cc:	e5c2300c 	strb	r3, [r2, #12]                                
   1d7d0:	e59d2074 	ldr	r2, [sp, #116]	; 0x74                         
   1d7d4:	e5c2300d 	strb	r3, [r2, #13]                                
   1d7d8:	e59d2074 	ldr	r2, [sp, #116]	; 0x74                         
   1d7dc:	e5c2300e 	strb	r3, [r2, #14]                                
   1d7e0:	e59d2074 	ldr	r2, [sp, #116]	; 0x74                         
   1d7e4:	e5c2300f 	strb	r3, [r2, #15]                                
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_block_offset (rtems_rfs_inode_handle* handle,     
                                  uint16_t                block_offset)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->block_offset, block_offset);    
   1d7e8:	e59d3074 	ldr	r3, [sp, #116]	; 0x74                         
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rtems_rfs_inode_set_block_offset (&inode, link_length);             
   1d7ec:	e1a04804 	lsl	r4, r4, #16                                   
   1d7f0:	e1a02c24 	lsr	r2, r4, #24                                   
   1d7f4:	e5c3200a 	strb	r2, [r3, #10]                                
   1d7f8:	e59d3074 	ldr	r3, [sp, #116]	; 0x74                         
   1d7fc:	e1a04824 	lsr	r4, r4, #16                                   
   1d800:	e5c3400b 	strb	r4, [r3, #11]                                
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   1d804:	e1a00007 	mov	r0, r7                                        
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1d808:	e3a03001 	mov	r3, #1                                        
   1d80c:	e28d1068 	add	r1, sp, #104	; 0x68                           
   1d810:	e5cd3078 	strb	r3, [sp, #120]	; 0x78                        
   1d814:	ebffce25 	bl	110b0 <rtems_rfs_inode_close>                  
   1d818:	e1a08000 	mov	r8, r0                                        
                                                                      
  return rc;                                                          
   1d81c:	eaffffa6 	b	1d6bc <rtems_rfs_symlink+0x4c>                  
    rtems_rfs_block_map     map;                                      
    rtems_rfs_block_no      block;                                    
    rtems_rfs_buffer_handle buffer;                                   
    uint8_t*                data;                                     
                                                                      
    rc = rtems_rfs_block_map_open (fs, &inode, &map);                 
   1d820:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d824:	e28d1068 	add	r1, sp, #104	; 0x68                           <== NOT EXECUTED
   1d828:	e28d2018 	add	r2, sp, #24                                   <== NOT EXECUTED
   1d82c:	ebffedc1 	bl	18f38 <rtems_rfs_block_map_open>               <== NOT EXECUTED
    if (rc > 0)                                                       
   1d830:	e2508000 	subs	r8, r0, #0                                   <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
   1d834:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
    rtems_rfs_block_no      block;                                    
    rtems_rfs_buffer_handle buffer;                                   
    uint8_t*                data;                                     
                                                                      
    rc = rtems_rfs_block_map_open (fs, &inode, &map);                 
    if (rc > 0)                                                       
   1d838:	da000002 	ble	1d848 <rtems_rfs_symlink+0x1d8>               <== NOT EXECUTED
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &map);                        
    if (rc > 0)                                                       
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
   1d83c:	e28d1068 	add	r1, sp, #104	; 0x68                           <== NOT EXECUTED
   1d840:	ebffce1a 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
      return rc;                                                      
   1d844:	eaffff9c 	b	1d6bc <rtems_rfs_symlink+0x4c>                  <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_grow (fs, &map, 1, &block);              
   1d848:	e28d1018 	add	r1, sp, #24                                   <== NOT EXECUTED
   1d84c:	e1a0200a 	mov	r2, sl                                        <== NOT EXECUTED
   1d850:	e28d30a0 	add	r3, sp, #160	; 0xa0                           <== NOT EXECUTED
   1d854:	ebffef0a 	bl	19484 <rtems_rfs_block_map_grow>               <== NOT EXECUTED
    if (rc > 0)                                                       
   1d858:	e2508000 	subs	r8, r0, #0                                   <== NOT EXECUTED
   1d85c:	da000006 	ble	1d87c <rtems_rfs_symlink+0x20c>               <== NOT EXECUTED
    }                                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
    if (rc > 0)                                                       
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
   1d860:	e28d1018 	add	r1, sp, #24                                   <== NOT EXECUTED
   1d864:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d868:	ebffee0c 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
   1d86c:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d870:	e28d1068 	add	r1, sp, #104	; 0x68                           <== NOT EXECUTED
   1d874:	ebffce0d 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
      return rc;                                                      
   1d878:	eaffff8f 	b	1d6bc <rtems_rfs_symlink+0x4c>                  <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1d87c:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
   1d880:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d884:	e28d1090 	add	r1, sp, #144	; 0x90                           <== NOT EXECUTED
   1d888:	e59d20a0 	ldr	r2, [sp, #160]	; 0xa0                         <== NOT EXECUTED
   1d88c:	e1a03005 	mov	r3, r5                                        <== NOT EXECUTED
   1d890:	e5cd5090 	strb	r5, [sp, #144]	; 0x90                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1d894:	e58d5094 	str	r5, [sp, #148]	; 0x94                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1d898:	e58d5098 	str	r5, [sp, #152]	; 0x98                         <== NOT EXECUTED
   1d89c:	ebfff190 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
    if (rc > 0)                                                       
   1d8a0:	e2508000 	subs	r8, r0, #0                                   <== NOT EXECUTED
   1d8a4:	caffffed 	bgt	1d860 <rtems_rfs_symlink+0x1f0>               <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    data = rtems_rfs_buffer_data (&buffer);                           
   1d8a8:	e59d3098 	ldr	r3, [sp, #152]	; 0x98                         <== NOT EXECUTED
   1d8ac:	e593801c 	ldr	r8, [r3, #28]                                 <== NOT EXECUTED
                                                                      
    memset (data, 0xff, rtems_rfs_fs_block_size (fs));                
   1d8b0:	e3a010ff 	mov	r1, #255	; 0xff                               <== NOT EXECUTED
   1d8b4:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1d8b8:	e5972008 	ldr	r2, [r7, #8]                                  <== NOT EXECUTED
   1d8bc:	eb000a87 	bl	202e0 <memset>                                 <== NOT EXECUTED
    memcpy (data, link, link_length);                                 
   1d8c0:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
   1d8c4:	e1a00008 	mov	r0, r8                                        <== NOT EXECUTED
   1d8c8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1d8cc:	eb000a00 	bl	200d4 <memcpy>                                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1d8d0:	e28d1090 	add	r1, sp, #144	; 0x90                           <== NOT EXECUTED
   1d8d4:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d8d8:	ebfff108 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &map);                        
   1d8dc:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d8e0:	e28d1018 	add	r1, sp, #24                                   <== NOT EXECUTED
  handle->dirty = false;                                              
   1d8e4:	e5cd5090 	strb	r5, [sp, #144]	; 0x90                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1d8e8:	e58d5094 	str	r5, [sp, #148]	; 0x94                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1d8ec:	e58d5098 	str	r5, [sp, #152]	; 0x98                         <== NOT EXECUTED
   1d8f0:	ebffedea 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
    if (rc > 0)                                                       
   1d8f4:	e2508000 	subs	r8, r0, #0                                   <== NOT EXECUTED
   1d8f8:	daffffba 	ble	1d7e8 <rtems_rfs_symlink+0x178>               <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
   1d8fc:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1d900:	eaffffcd 	b	1d83c <rtems_rfs_symlink+0x1cc>                 <== NOT EXECUTED
                                                                      

0001d910 <rtems_rfs_symlink_read>: rtems_rfs_symlink_read (rtems_rfs_file_system* fs, rtems_rfs_ino link, char* path, size_t size, size_t* length) {
   1d910:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
   1d914:	e1a04000 	mov	r4, r0                                        
   1d918:	e24dd08c 	sub	sp, sp, #140	; 0x8c                           
   1d91c:	e1a05001 	mov	r5, r1                                        
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))                 
   1d920:	e3a00000 	mov	r0, #0                                        
   1d924:	e3a01004 	mov	r1, #4                                        
rtems_rfs_symlink_read (rtems_rfs_file_system* fs,                    
                        rtems_rfs_ino          link,                  
                        char*                  path,                  
                        size_t                 size,                  
                        size_t*                length)                
{                                                                     
   1d928:	e1a07002 	mov	r7, r2                                        
   1d92c:	e1a06003 	mov	r6, r3                                        
   1d930:	e59d80a8 	ldr	r8, [sp, #168]	; 0xa8                         
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))                 
   1d934:	ebffd3bd 	bl	12830 <rtems_rfs_trace>                        
   1d938:	e3500000 	cmp	r0, #0                                        
   1d93c:	1a000013 	bne	1d990 <rtems_rfs_symlink_read+0x80>           
    printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);     
                                                                      
  rc = rtems_rfs_inode_open (fs, link, &inode, true);                 
   1d940:	e1a00004 	mov	r0, r4                                        
   1d944:	e1a01005 	mov	r1, r5                                        
   1d948:	e28d2054 	add	r2, sp, #84	; 0x54                            
   1d94c:	e3a03001 	mov	r3, #1                                        
   1d950:	ebffcd5c 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1d954:	e250a000 	subs	sl, r0, #0                                   
   1d958:	1a000009 	bne	1d984 <rtems_rfs_symlink_read+0x74>           
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   1d95c:	e59d1060 	ldr	r1, [sp, #96]	; 0x60                          
   1d960:	e5d13002 	ldrb	r3, [r1, #2]                                 
    return rc;                                                        
                                                                      
  if (!RTEMS_RFS_S_ISLNK (rtems_rfs_inode_get_mode (&inode)))         
   1d964:	e1a03403 	lsl	r3, r3, #8                                    
   1d968:	e2033a0f 	and	r3, r3, #61440	; 0xf000                       
   1d96c:	e3530a0a 	cmp	r3, #40960	; 0xa000                           
   1d970:	0a00000a 	beq	1d9a0 <rtems_rfs_symlink_read+0x90>           
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
   1d974:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1d978:	e28d1054 	add	r1, sp, #84	; 0x54                            <== NOT EXECUTED
   1d97c:	ebffcdcb 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return EINVAL;                                                    
   1d980:	e3a0a016 	mov	sl, #22                                       <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
                                                                      
  return rc;                                                          
}                                                                     
   1d984:	e1a0000a 	mov	r0, sl                                        
   1d988:	e28dd08c 	add	sp, sp, #140	; 0x8c                           
   1d98c:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
{                                                                     
  rtems_rfs_inode_handle inode;                                       
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_SYMLINK_READ))                 
    printf ("rtems-rfs: symlink-read: link:%" PRIu32 "\n", link);     
   1d990:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1d994:	e59f0154 	ldr	r0, [pc, #340]	; 1daf0 <rtems_rfs_symlink_read+0x1e0><== NOT EXECUTED
   1d998:	eb000ac1 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d99c:	eaffffe7 	b	1d940 <rtems_rfs_symlink_read+0x30>             <== NOT EXECUTED
 * @return uint32_t The block offset.                                 
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_block_offset (rtems_rfs_inode_handle* handle)     
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->block_offset);            
   1d9a0:	e5d1300b 	ldrb	r3, [r1, #11]                                
   1d9a4:	e5d1200a 	ldrb	r2, [r1, #10]                                
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
    return EINVAL;                                                    
  }                                                                   
                                                                      
  *length = rtems_rfs_inode_get_block_offset (&inode);                
   1d9a8:	e1832402 	orr	r2, r3, r2, lsl #8                            
    return rc;                                                        
                                                                      
  if (!RTEMS_RFS_S_ISLNK (rtems_rfs_inode_get_mode (&inode)))         
  {                                                                   
    rtems_rfs_inode_close (fs, &inode);                               
    return EINVAL;                                                    
   1d9ac:	e1520006 	cmp	r2, r6                                        
   1d9b0:	21a02006 	movcs	r2, r6                                      
   1d9b4:	e5882000 	str	r2, [r8]                                      
 * @return uint32_t The block count.                                  
 */                                                                   
static inline uint32_t                                                
rtems_rfs_inode_get_block_count (rtems_rfs_inode_handle* handle)      
{                                                                     
  return rtems_rfs_read_u32 (&handle->node->block_count);             
   1d9b8:	e5d1300d 	ldrb	r3, [r1, #13]                                
   1d9bc:	e5d1000c 	ldrb	r0, [r1, #12]                                
   1d9c0:	e1a03803 	lsl	r3, r3, #16                                   
   1d9c4:	e5d1c00f 	ldrb	ip, [r1, #15]                                
   1d9c8:	e1833c00 	orr	r3, r3, r0, lsl #24                           
   1d9cc:	e5d1000e 	ldrb	r0, [r1, #14]                                
   1d9d0:	e183300c 	orr	r3, r3, ip                                    
  if (size < *length)                                                 
  {                                                                   
    *length = size;                                                   
  }                                                                   
                                                                      
  if (rtems_rfs_inode_get_block_count (&inode) == 0)                  
   1d9d4:	e1930400 	orrs	r0, r3, r0, lsl #8                           
   1d9d8:	1a000007 	bne	1d9fc <rtems_rfs_symlink_read+0xec>           
  {                                                                   
    memcpy (path, inode.node->data.name, *length);                    
   1d9dc:	e1a00007 	mov	r0, r7                                        
   1d9e0:	e281101c 	add	r1, r1, #28                                   
   1d9e4:	eb0009ba 	bl	200d4 <memcpy>                                 
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &inode);                            
   1d9e8:	e1a00004 	mov	r0, r4                                        
   1d9ec:	e28d1054 	add	r1, sp, #84	; 0x54                            
   1d9f0:	ebffcdae 	bl	110b0 <rtems_rfs_inode_close>                  
   1d9f4:	e1a0a000 	mov	sl, r0                                        
                                                                      
  return rc;                                                          
   1d9f8:	eaffffe1 	b	1d984 <rtems_rfs_symlink_read+0x74>             
    rtems_rfs_block_map     map;                                      
    rtems_rfs_block_no      block;                                    
    rtems_rfs_buffer_handle buffer;                                   
    char*                   data;                                     
                                                                      
    rc = rtems_rfs_block_map_open (fs, &inode, &map);                 
   1d9fc:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1da00:	e28d1054 	add	r1, sp, #84	; 0x54                            <== NOT EXECUTED
   1da04:	e28d2004 	add	r2, sp, #4                                    <== NOT EXECUTED
   1da08:	ebffed4a 	bl	18f38 <rtems_rfs_block_map_open>               <== NOT EXECUTED
    if (rc > 0)                                                       
   1da0c:	e250a000 	subs	sl, r0, #0                                   <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
   1da10:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    rtems_rfs_block_no      block;                                    
    rtems_rfs_buffer_handle buffer;                                   
    char*                   data;                                     
                                                                      
    rc = rtems_rfs_block_map_open (fs, &inode, &map);                 
    if (rc > 0)                                                       
   1da14:	da000002 	ble	1da24 <rtems_rfs_symlink_read+0x114>          <== NOT EXECUTED
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
    if (rc > 0)                                                       
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
   1da18:	e28d1054 	add	r1, sp, #84	; 0x54                            <== NOT EXECUTED
   1da1c:	ebffcda3 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
      return rc;                                                      
   1da20:	eaffffd7 	b	1d984 <rtems_rfs_symlink_read+0x74>             <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_seek (fs, &map, 0, &block);              
   1da24:	e28dc088 	add	ip, sp, #136	; 0x88                           <== NOT EXECUTED
   1da28:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
   1da2c:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   1da30:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   1da34:	e58dc000 	str	ip, [sp]                                      <== NOT EXECUTED
   1da38:	ebffee65 	bl	193d4 <rtems_rfs_block_map_seek>               <== NOT EXECUTED
    if (rc > 0)                                                       
   1da3c:	e250a000 	subs	sl, r0, #0                                   <== NOT EXECUTED
   1da40:	da000006 	ble	1da60 <rtems_rfs_symlink_read+0x150>          <== NOT EXECUTED
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
   1da44:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
   1da48:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1da4c:	ebffed93 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
   1da50:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1da54:	e28d1054 	add	r1, sp, #84	; 0x54                            <== NOT EXECUTED
   1da58:	ebffcd94 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
      return rc;                                                      
   1da5c:	eaffffc8 	b	1d984 <rtems_rfs_symlink_read+0x74>             <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_open (rtems_rfs_file_system*   fs,            
                              rtems_rfs_buffer_handle* handle)        
{                                                                     
  handle->dirty = false;                                              
   1da60:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_buffer_handle_request (fs, &buffer, block, false); 
   1da64:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1da68:	e28d107c 	add	r1, sp, #124	; 0x7c                           <== NOT EXECUTED
   1da6c:	e59d2088 	ldr	r2, [sp, #136]	; 0x88                         <== NOT EXECUTED
   1da70:	e1a03005 	mov	r3, r5                                        <== NOT EXECUTED
   1da74:	e5cd507c 	strb	r5, [sp, #124]	; 0x7c                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1da78:	e58d5080 	str	r5, [sp, #128]	; 0x80                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1da7c:	e58d5084 	str	r5, [sp, #132]	; 0x84                         <== NOT EXECUTED
   1da80:	ebfff117 	bl	19ee4 <rtems_rfs_buffer_handle_request>        <== NOT EXECUTED
    if (rc > 0)                                                       
   1da84:	e250a000 	subs	sl, r0, #0                                   <== NOT EXECUTED
   1da88:	da000004 	ble	1daa0 <rtems_rfs_symlink_read+0x190>          <== NOT EXECUTED
    {                                                                 
      rtems_rfs_block_map_close (fs, &map);                           
   1da8c:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1da90:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
   1da94:	ebffed81 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &inode);                             
   1da98:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1da9c:	eaffffdd 	b	1da18 <rtems_rfs_symlink_read+0x108>            <== NOT EXECUTED
      return rc;                                                      
    }                                                                 
                                                                      
    data = rtems_rfs_buffer_data (&buffer);                           
    memcpy (path, data, *length);                                     
   1daa0:	e59d3084 	ldr	r3, [sp, #132]	; 0x84                         <== NOT EXECUTED
   1daa4:	e5982000 	ldr	r2, [r8]                                      <== NOT EXECUTED
   1daa8:	e593101c 	ldr	r1, [r3, #28]                                 <== NOT EXECUTED
   1daac:	e1a00007 	mov	r0, r7                                        <== NOT EXECUTED
   1dab0:	eb000987 	bl	200d4 <memcpy>                                 <== NOT EXECUTED
 */                                                                   
static inline int                                                     
rtems_rfs_buffer_handle_close (rtems_rfs_file_system*   fs,           
                               rtems_rfs_buffer_handle* handle)       
{                                                                     
  rtems_rfs_buffer_handle_release (fs, handle);                       
   1dab4:	e28d107c 	add	r1, sp, #124	; 0x7c                           <== NOT EXECUTED
   1dab8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dabc:	ebfff08f 	bl	19d00 <rtems_rfs_buffer_handle_release>        <== NOT EXECUTED
      rtems_rfs_block_map_close (fs, &map);                           
      rtems_rfs_inode_close (fs, &inode);                             
      return rc;                                                      
    }                                                                 
                                                                      
    rc = rtems_rfs_block_map_close (fs, &map);                        
   1dac0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dac4:	e28d1004 	add	r1, sp, #4                                    <== NOT EXECUTED
  handle->dirty = false;                                              
   1dac8:	e5cd507c 	strb	r5, [sp, #124]	; 0x7c                        <== NOT EXECUTED
  handle->bnum  = 0;                                                  
   1dacc:	e58d5080 	str	r5, [sp, #128]	; 0x80                         <== NOT EXECUTED
  handle->buffer = NULL;                                              
   1dad0:	e58d5084 	str	r5, [sp, #132]	; 0x84                         <== NOT EXECUTED
   1dad4:	ebffed71 	bl	190a0 <rtems_rfs_block_map_close>              <== NOT EXECUTED
    if (rc > 0)                                                       
   1dad8:	e250a000 	subs	sl, r0, #0                                   <== NOT EXECUTED
   1dadc:	daffffc1 	ble	1d9e8 <rtems_rfs_symlink_read+0xd8>           <== NOT EXECUTED
    {                                                                 
      rtems_rfs_inode_close (fs, &inode);                             
   1dae0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1dae4:	e28d1054 	add	r1, sp, #84	; 0x54                            <== NOT EXECUTED
   1dae8:	ebffcd70 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
      return rc;                                                      
   1daec:	eaffffa4 	b	1d984 <rtems_rfs_symlink_read+0x74>             <== NOT EXECUTED
                                                                      

00012878 <rtems_rfs_trace_clear_mask>: rtems_rfs_trace_mask rtems_rfs_trace_clear_mask (rtems_rfs_trace_mask mask) { rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
   12878:	e59fc018 	ldr	ip, [pc, #24]	; 12898 <rtems_rfs_trace_clear_mask+0x20><== NOT EXECUTED
   1287c:	e89c000c 	ldm	ip, {r2, r3}                                  <== NOT EXECUTED
  rtems_rfs_trace_flags &= ~mask;                                     
   12880:	e1c20000 	bic	r0, r2, r0                                    <== NOT EXECUTED
   12884:	e1c31001 	bic	r1, r3, r1                                    <== NOT EXECUTED
   12888:	e88c0003 	stm	ip, {r0, r1}                                  <== NOT EXECUTED
  return state;                                                       
}                                                                     
   1288c:	e1a00002 	mov	r0, r2                                        <== NOT EXECUTED
   12890:	e1a01003 	mov	r1, r3                                        <== NOT EXECUTED
   12894:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

00012854 <rtems_rfs_trace_set_mask>: rtems_rfs_trace_mask rtems_rfs_trace_set_mask (rtems_rfs_trace_mask mask) { rtems_rfs_trace_mask state = rtems_rfs_trace_flags;
   12854:	e59fc018 	ldr	ip, [pc, #24]	; 12874 <rtems_rfs_trace_set_mask+0x20><== NOT EXECUTED
   12858:	e89c000c 	ldm	ip, {r2, r3}                                  <== NOT EXECUTED
  rtems_rfs_trace_flags |= mask;                                      
   1285c:	e1800002 	orr	r0, r0, r2                                    <== NOT EXECUTED
   12860:	e1811003 	orr	r1, r1, r3                                    <== NOT EXECUTED
   12864:	e88c0003 	stm	ip, {r0, r1}                                  <== NOT EXECUTED
  return state;                                                       
}                                                                     
   12868:	e1a00002 	mov	r0, r2                                        <== NOT EXECUTED
   1286c:	e1a01003 	mov	r1, r3                                        <== NOT EXECUTED
   12870:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

0001289c <rtems_rfs_trace_shell_command>: int rtems_rfs_trace_shell_command (int argc, char *argv[]) {
   1289c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         <== NOT EXECUTED
   128a0:	e24dd0b8 	sub	sp, sp, #184	; 0xb8                           <== NOT EXECUTED
   128a4:	e1a09000 	mov	r9, r0                                        <== NOT EXECUTED
   128a8:	e58d1018 	str	r1, [sp, #24]                                 <== NOT EXECUTED
  const char* table[] =                                               
   128ac:	e28d001c 	add	r0, sp, #28                                   <== NOT EXECUTED
   128b0:	e59f127c 	ldr	r1, [pc, #636]	; 12b34 <rtems_rfs_trace_shell_command+0x298><== NOT EXECUTED
   128b4:	e3a0209c 	mov	r2, #156	; 0x9c                               <== NOT EXECUTED
   128b8:	eb003605 	bl	200d4 <memcpy>                                 <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   128bc:	e3590001 	cmp	r9, #1                                        <== NOT EXECUTED
   128c0:	da000049 	ble	129ec <rtems_rfs_trace_shell_command+0x150>   <== NOT EXECUTED
  {                                                                   
    if (argv[arg][0] == '-')                                          
   128c4:	e59d3018 	ldr	r3, [sp, #24]                                 <== NOT EXECUTED
   128c8:	e5936004 	ldr	r6, [r3, #4]                                  <== NOT EXECUTED
   128cc:	e5d63000 	ldrb	r3, [r6]                                     <== NOT EXECUTED
   128d0:	e353002d 	cmp	r3, #45	; 0x2d                                <== NOT EXECUTED
   128d4:	0a00007b 	beq	12ac8 <rtems_rfs_trace_shell_command+0x22c>   <== NOT EXECUTED
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
          return 0;                                                   
        default:                                                      
          printf ("error: unknown option\n");                         
          return 1;                                                   
   128d8:	e59fb258 	ldr	fp, [pc, #600]	; 12b38 <rtems_rfs_trace_shell_command+0x29c><== NOT EXECUTED
    "file-io",                                                        
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
  rtems_rfs_trace_mask clear_value = 0;                               
   128dc:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   128e0:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   128e4:	e58d2008 	str	r2, [sp, #8]                                  <== NOT EXECUTED
   128e8:	e58d300c 	str	r3, [sp, #12]                                 <== NOT EXECUTED
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
          return 0;                                                   
        default:                                                      
          printf ("error: unknown option\n");                         
          return 1;                                                   
   128ec:	e89b0018 	ldm	fp, {r3, r4}                                  <== NOT EXECUTED
   128f0:	e88d0018 	stm	sp, {r3, r4}                                  <== NOT EXECUTED
  rtems_rfs_trace_flags &= ~mask;                                     
  return state;                                                       
}                                                                     
                                                                      
int                                                                   
rtems_rfs_trace_shell_command (int argc, char *argv[])                
   128f4:	e59d4018 	ldr	r4, [sp, #24]                                 <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   128f8:	e3a08001 	mov	r8, #1                                        <== NOT EXECUTED
    "file-close",                                                     
    "file-io",                                                        
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
   128fc:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   12900:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
  rtems_rfs_trace_flags &= ~mask;                                     
  return state;                                                       
}                                                                     
                                                                      
int                                                                   
rtems_rfs_trace_shell_command (int argc, char *argv[])                
   12904:	e284a004 	add	sl, r4, #4                                    <== NOT EXECUTED
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
   12908:	e1a07008 	mov	r7, r8                                        <== NOT EXECUTED
    "file-close",                                                     
    "file-io",                                                        
    "file-set"                                                        
  };                                                                  
                                                                      
  rtems_rfs_trace_mask set_value = 0;                                 
   1290c:	e58d2010 	str	r2, [sp, #16]                                 <== NOT EXECUTED
   12910:	e58d3014 	str	r3, [sp, #20]                                 <== NOT EXECUTED
   12914:	ea000013 	b	12968 <rtems_rfs_trace_shell_command+0xcc>      <== NOT EXECUTED
    }                                                                 
    else                                                              
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
   12918:	e89d000c 	ldm	sp, {r2, r3}                                  <== NOT EXECUTED
   1291c:	e28d5010 	add	r5, sp, #16                                   <== NOT EXECUTED
   12920:	e8950030 	ldm	r5, {r4, r5}                                  <== NOT EXECUTED
   12924:	e1822004 	orr	r2, r2, r4                                    <== NOT EXECUTED
   12928:	e1833005 	orr	r3, r3, r5                                    <== NOT EXECUTED
   1292c:	e28d5008 	add	r5, sp, #8                                    <== NOT EXECUTED
   12930:	e8950030 	ldm	r5, {r4, r5}                                  <== NOT EXECUTED
   12934:	e1c24004 	bic	r4, r2, r4                                    <== NOT EXECUTED
   12938:	e1c35005 	bic	r5, r3, r5                                    <== NOT EXECUTED
   1293c:	e88d0030 	stm	sp, {r4, r5}                                  <== NOT EXECUTED
        set = false;                                                  
   12940:	e1a07000 	mov	r7, r0                                        <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   12944:	e2888001 	add	r8, r8, #1                                    <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
   12948:	e89d0030 	ldm	sp, {r4, r5}                                  <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   1294c:	e1580009 	cmp	r8, r9                                        <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
   12950:	e88b0030 	stm	fp, {r4, r5}                                  <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   12954:	0a000024 	beq	129ec <rtems_rfs_trace_shell_command+0x150>   <== NOT EXECUTED
  {                                                                   
    if (argv[arg][0] == '-')                                          
   12958:	e5ba6004 	ldr	r6, [sl, #4]!                                 <== NOT EXECUTED
   1295c:	e5d63000 	ldrb	r3, [r6]                                     <== NOT EXECUTED
   12960:	e353002d 	cmp	r3, #45	; 0x2d                                <== NOT EXECUTED
   12964:	0a000057 	beq	12ac8 <rtems_rfs_trace_shell_command+0x22c>   <== NOT EXECUTED
          return 1;                                                   
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
   12968:	e59f11cc 	ldr	r1, [pc, #460]	; 12b3c <rtems_rfs_trace_shell_command+0x2a0><== NOT EXECUTED
   1296c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   12970:	eb003920 	bl	20df8 <strcmp>                                 <== NOT EXECUTED
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
   12974:	e59f11c4 	ldr	r1, [pc, #452]	; 12b40 <rtems_rfs_trace_shell_command+0x2a4><== NOT EXECUTED
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
   12978:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      if (strcmp (argv[arg], "clear") == 0)                           
   1297c:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
   12980:	03a07001 	moveq	r7, #1                                      <== NOT EXECUTED
      if (strcmp (argv[arg], "clear") == 0)                           
   12984:	eb00391b 	bl	20df8 <strcmp>                                 <== NOT EXECUTED
   12988:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1298c:	0affffe1 	beq	12918 <rtems_rfs_trace_shell_command+0x7c>    <== NOT EXECUTED
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
   12990:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   12994:	e59f11a8 	ldr	r1, [pc, #424]	; 12b44 <rtems_rfs_trace_shell_command+0x2a8><== NOT EXECUTED
   12998:	eb003916 	bl	20df8 <strcmp>                                 <== NOT EXECUTED
   1299c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
      {                                                               
        if (set)                                                      
   129a0:	128d4018 	addne	r4, sp, #24                                 <== NOT EXECUTED
    {                                                                 
      if (strcmp (argv[arg], "set") == 0)                             
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
   129a4:	13a05000 	movne	r5, #0                                      <== NOT EXECUTED
   129a8:	1a000015 	bne	12a04 <rtems_rfs_trace_shell_command+0x168>   <== NOT EXECUTED
      {                                                               
        if (set)                                                      
   129ac:	e3570000 	cmp	r7, #0                                        <== NOT EXECUTED
   129b0:	0a00003c 	beq	12aa8 <rtems_rfs_trace_shell_command+0x20c>   <== NOT EXECUTED
   129b4:	e28d3008 	add	r3, sp, #8                                    <== NOT EXECUTED
   129b8:	e893000c 	ldm	r3, {r2, r3}                                  <== NOT EXECUTED
   129bc:	e1e03003 	mvn	r3, r3                                        <== NOT EXECUTED
   129c0:	e1e02002 	mvn	r2, r2                                        <== NOT EXECUTED
   129c4:	e88d000c 	stm	sp, {r2, r3}                                  <== NOT EXECUTED
          set_value = RTEMS_RFS_TRACE_ALL;                            
   129c8:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   129cc:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   129d0:	e58d3010 	str	r3, [sp, #16]                                 <== NOT EXECUTED
   129d4:	e58d4014 	str	r4, [sp, #20]                                 <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   129d8:	e2888001 	add	r8, r8, #1                                    <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
   129dc:	e89d0030 	ldm	sp, {r4, r5}                                  <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   129e0:	e1580009 	cmp	r8, r9                                        <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
   129e4:	e88b0030 	stm	fp, {r4, r5}                                  <== NOT EXECUTED
  rtems_rfs_trace_mask clear_value = 0;                               
  bool                 set = true;                                    
  int                  arg;                                           
  int                  t;                                             
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   129e8:	1affffda 	bne	12958 <rtems_rfs_trace_shell_command+0xbc>    <== NOT EXECUTED
      rtems_rfs_trace_flags |= set_value;                             
      rtems_rfs_trace_flags &= ~clear_value;                          
    }                                                                 
  }                                                                   
                                                                      
  return 0;                                                           
   129ec:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
}                                                                     
   129f0:	e28dd0b8 	add	sp, sp, #184	; 0xb8                           <== NOT EXECUTED
   129f4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
   129f8:	e2855001 	add	r5, r5, #1                                    <== NOT EXECUTED
   129fc:	e3550027 	cmp	r5, #39	; 0x27                                <== NOT EXECUTED
   12a00:	0a000024 	beq	12a98 <rtems_rfs_trace_shell_command+0x1fc>   <== NOT EXECUTED
        {                                                             
          if (strcmp (argv[arg], table[t]) == 0)                      
   12a04:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
   12a08:	e5b41004 	ldr	r1, [r4, #4]!                                 <== NOT EXECUTED
   12a0c:	eb0038f9 	bl	20df8 <strcmp>                                 <== NOT EXECUTED
   12a10:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   12a14:	1afffff7 	bne	129f8 <rtems_rfs_trace_shell_command+0x15c>   <== NOT EXECUTED
          {                                                           
            if (set)                                                  
   12a18:	e3570000 	cmp	r7, #0                                        <== NOT EXECUTED
              set_value = 1ULL << t;                                  
   12a1c:	e2653020 	rsb	r3, r5, #32                                   <== NOT EXECUTED
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
        {                                                             
          if (strcmp (argv[arg], table[t]) == 0)                      
          {                                                           
            if (set)                                                  
   12a20:	0a000013 	beq	12a74 <rtems_rfs_trace_shell_command+0x1d8>   <== NOT EXECUTED
              set_value = 1ULL << t;                                  
   12a24:	e3a04001 	mov	r4, #1                                        <== NOT EXECUTED
   12a28:	e1a03334 	lsr	r3, r4, r3                                    <== NOT EXECUTED
   12a2c:	e58d3014 	str	r3, [sp, #20]                                 <== NOT EXECUTED
   12a30:	e59d0014 	ldr	r0, [sp, #20]                                 <== NOT EXECUTED
   12a34:	e2553020 	subs	r3, r5, #32                                  <== NOT EXECUTED
   12a38:	51a00314 	lslpl	r0, r4, r3                                  <== NOT EXECUTED
   12a3c:	e1a05514 	lsl	r5, r4, r5                                    <== NOT EXECUTED
   12a40:	e58d0014 	str	r0, [sp, #20]                                 <== NOT EXECUTED
   12a44:	e58d5010 	str	r5, [sp, #16]                                 <== NOT EXECUTED
   12a48:	e28d3010 	add	r3, sp, #16                                   <== NOT EXECUTED
   12a4c:	e893000c 	ldm	r3, {r2, r3}                                  <== NOT EXECUTED
   12a50:	e89d0030 	ldm	sp, {r4, r5}                                  <== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
   12a54:	e1822004 	orr	r2, r2, r4                                    <== NOT EXECUTED
   12a58:	e1833005 	orr	r3, r3, r5                                    <== NOT EXECUTED
   12a5c:	e28d5008 	add	r5, sp, #8                                    <== NOT EXECUTED
   12a60:	e8950030 	ldm	r5, {r4, r5}                                  <== NOT EXECUTED
   12a64:	e1c24004 	bic	r4, r2, r4                                    <== NOT EXECUTED
   12a68:	e1c35005 	bic	r5, r3, r5                                    <== NOT EXECUTED
   12a6c:	e88d0030 	stm	sp, {r4, r5}                                  <== NOT EXECUTED
   12a70:	eaffffb3 	b	12944 <rtems_rfs_trace_shell_command+0xa8>      <== NOT EXECUTED
          if (strcmp (argv[arg], table[t]) == 0)                      
          {                                                           
            if (set)                                                  
              set_value = 1ULL << t;                                  
            else                                                      
              clear_value = 1ULL << t;                                
   12a74:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
   12a78:	e1a03331 	lsr	r3, r1, r3                                    <== NOT EXECUTED
   12a7c:	e58d300c 	str	r3, [sp, #12]                                 <== NOT EXECUTED
   12a80:	e59d200c 	ldr	r2, [sp, #12]                                 <== NOT EXECUTED
   12a84:	e2553020 	subs	r3, r5, #32                                  <== NOT EXECUTED
   12a88:	51a02311 	lslpl	r2, r1, r3                                  <== NOT EXECUTED
   12a8c:	e1a05511 	lsl	r5, r1, r5                                    <== NOT EXECUTED
   12a90:	e58d200c 	str	r2, [sp, #12]                                 <== NOT EXECUTED
   12a94:	e58d5008 	str	r5, [sp, #8]                                  <== NOT EXECUTED
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
      }                                                               
      else                                                            
      {                                                               
        for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++) 
   12a98:	e89d000c 	ldm	sp, {r2, r3}                                  <== NOT EXECUTED
   12a9c:	e28d5010 	add	r5, sp, #16                                   <== NOT EXECUTED
   12aa0:	e8950030 	ldm	r5, {r4, r5}                                  <== NOT EXECUTED
   12aa4:	eaffffea 	b	12a54 <rtems_rfs_trace_shell_command+0x1b8>     <== NOT EXECUTED
        set = true;                                                   
      if (strcmp (argv[arg], "clear") == 0)                           
        set = false;                                                  
      else if (strcmp (argv[arg], "all") == 0)                        
      {                                                               
        if (set)                                                      
   12aa8:	e3a03000 	mov	r3, #0                                        <== NOT EXECUTED
   12aac:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
   12ab0:	e88d000c 	stm	sp, {r2, r3}                                  <== NOT EXECUTED
          set_value = RTEMS_RFS_TRACE_ALL;                            
        else                                                          
          clear_value = RTEMS_RFS_TRACE_ALL;                          
   12ab4:	e3e04000 	mvn	r4, #0                                        <== NOT EXECUTED
   12ab8:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
   12abc:	e58d3008 	str	r3, [sp, #8]                                  <== NOT EXECUTED
   12ac0:	e58d400c 	str	r4, [sp, #12]                                 <== NOT EXECUTED
   12ac4:	eaffff9e 	b	12944 <rtems_rfs_trace_shell_command+0xa8>      <== NOT EXECUTED
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
  {                                                                   
    if (argv[arg][0] == '-')                                          
    {                                                                 
      switch (argv[arg][1])                                           
   12ac8:	e5d63001 	ldrb	r3, [r6, #1]                                 <== NOT EXECUTED
   12acc:	e3530068 	cmp	r3, #104	; 0x68                               <== NOT EXECUTED
   12ad0:	0a000005 	beq	12aec <rtems_rfs_trace_shell_command+0x250>   <== NOT EXECUTED
   12ad4:	e353006c 	cmp	r3, #108	; 0x6c                               <== NOT EXECUTED
   12ad8:	0a000009 	beq	12b04 <rtems_rfs_trace_shell_command+0x268>   <== NOT EXECUTED
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
          return 0;                                                   
        default:                                                      
          printf ("error: unknown option\n");                         
   12adc:	e59f0064 	ldr	r0, [pc, #100]	; 12b48 <rtems_rfs_trace_shell_command+0x2ac><== NOT EXECUTED
   12ae0:	eb003707 	bl	20704 <puts>                                   <== NOT EXECUTED
          return 1;                                                   
   12ae4:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   12ae8:	eaffffc0 	b	129f0 <rtems_rfs_trace_shell_command+0x154>     <== NOT EXECUTED
    if (argv[arg][0] == '-')                                          
    {                                                                 
      switch (argv[arg][1])                                           
      {                                                               
        case 'h':                                                     
          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);  
   12aec:	e59d4018 	ldr	r4, [sp, #24]                                 <== NOT EXECUTED
   12af0:	e59f0054 	ldr	r0, [pc, #84]	; 12b4c <rtems_rfs_trace_shell_command+0x2b0><== NOT EXECUTED
   12af4:	e5941000 	ldr	r1, [r4]                                      <== NOT EXECUTED
   12af8:	eb003669 	bl	204a4 <printf>                                 <== NOT EXECUTED
          return 0;                                                   
   12afc:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
   12b00:	eaffffba 	b	129f0 <rtems_rfs_trace_shell_command+0x154>     <== NOT EXECUTED
        case 'l':                                                     
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
   12b04:	e59d5018 	ldr	r5, [sp, #24]                                 <== NOT EXECUTED
   12b08:	e59f0040 	ldr	r0, [pc, #64]	; 12b50 <rtems_rfs_trace_shell_command+0x2b4><== NOT EXECUTED
   12b0c:	e5951000 	ldr	r1, [r5]                                      <== NOT EXECUTED
   12b10:	eb003663 	bl	204a4 <printf>                                 <== NOT EXECUTED
   12b14:	e28d4018 	add	r4, sp, #24                                   <== NOT EXECUTED
  rtems_rfs_trace_flags &= ~mask;                                     
  return state;                                                       
}                                                                     
                                                                      
int                                                                   
rtems_rfs_trace_shell_command (int argc, char *argv[])                
   12b18:	e28d50b4 	add	r5, sp, #180	; 0xb4                           <== NOT EXECUTED
          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);  
          return 0;                                                   
        case 'l':                                                     
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
            printf ("  %s\n", table[t]);                              
   12b1c:	e5b41004 	ldr	r1, [r4, #4]!                                 <== NOT EXECUTED
   12b20:	e59f002c 	ldr	r0, [pc, #44]	; 12b54 <rtems_rfs_trace_shell_command+0x2b8><== NOT EXECUTED
   12b24:	eb00365e 	bl	204a4 <printf>                                 <== NOT EXECUTED
        case 'h':                                                     
          printf ("usage: %s [-hl] [set/clear] [flags]\n", argv[0]);  
          return 0;                                                   
        case 'l':                                                     
          printf ("%s: valid flags to set or clear are:\n", argv[0]); 
          for (t = 0; t < (sizeof (table) / sizeof (const char*)); t++)
   12b28:	e1540005 	cmp	r4, r5                                        <== NOT EXECUTED
   12b2c:	1afffffa 	bne	12b1c <rtems_rfs_trace_shell_command+0x280>   <== NOT EXECUTED
   12b30:	eaffffad 	b	129ec <rtems_rfs_trace_shell_command+0x150>     <== NOT EXECUTED
                                                                      

0001d298 <rtems_rfs_unlink>: rtems_rfs_unlink (rtems_rfs_file_system* fs, rtems_rfs_ino parent, rtems_rfs_ino target, uint32_t doff, rtems_rfs_unlink_dir dir_mode) {
   1d298:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
   1d29c:	e1a04000 	mov	r4, r0                                        
   1d2a0:	e24dd050 	sub	sp, sp, #80	; 0x50                            
   1d2a4:	e1a06001 	mov	r6, r1                                        
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  bool                   dir;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
   1d2a8:	e3a00402 	mov	r0, #33554432	; 0x2000000                     
   1d2ac:	e3a01000 	mov	r1, #0                                        
rtems_rfs_unlink (rtems_rfs_file_system* fs,                          
                  rtems_rfs_ino          parent,                      
                  rtems_rfs_ino          target,                      
                  uint32_t               doff,                        
                  rtems_rfs_unlink_dir   dir_mode)                    
{                                                                     
   1d2b0:	e1a05002 	mov	r5, r2                                        
   1d2b4:	e1a08003 	mov	r8, r3                                        
   1d2b8:	e59d9070 	ldr	r9, [sp, #112]	; 0x70                         
  rtems_rfs_inode_handle target_inode;                                
  uint16_t               links;                                       
  bool                   dir;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
   1d2bc:	ebffd55b 	bl	12830 <rtems_rfs_trace>                        
   1d2c0:	e3500000 	cmp	r0, #0                                        
   1d2c4:	1a00003f 	bne	1d3c8 <rtems_rfs_unlink+0x130>                
    printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
                                                                      
  rc = rtems_rfs_inode_open (fs, target, &target_inode, true);        
   1d2c8:	e1a00004 	mov	r0, r4                                        
   1d2cc:	e1a01005 	mov	r1, r5                                        
   1d2d0:	e28d2028 	add	r2, sp, #40	; 0x28                            
   1d2d4:	e3a03001 	mov	r3, #1                                        
   1d2d8:	ebffcefa 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1d2dc:	e250a000 	subs	sl, r0, #0                                   
   1d2e0:	1a000013 	bne	1d334 <rtems_rfs_unlink+0x9c>                 
 * @return uint16_t The mode.                                         
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_mode (rtems_rfs_inode_handle* handle)             
{                                                                     
  return rtems_rfs_read_u16 (&handle->node->mode);                    
   1d2e4:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
   1d2e8:	e5d37002 	ldrb	r7, [r3, #2]                                 
                                                                      
  /*                                                                  
   * If a directory process the unlink mode.                          
   */                                                                 
                                                                      
  dir = RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)); 
   1d2ec:	e1a07407 	lsl	r7, r7, #8                                    
   1d2f0:	e2077a0f 	and	r7, r7, #61440	; 0xf000                       
   1d2f4:	e2473901 	sub	r3, r7, #16384	; 0x4000                       
   1d2f8:	e2737000 	rsbs	r7, r3, #0                                   
   1d2fc:	e0a77003 	adc	r7, r7, r3                                    
  if (dir)                                                            
   1d300:	e3570000 	cmp	r7, #0                                        
   1d304:	0a00000f 	beq	1d348 <rtems_rfs_unlink+0xb0>                 
  {                                                                   
    switch (dir_mode)                                                 
   1d308:	e3590000 	cmp	r9, #0                                        
   1d30c:	1a00000b 	bne	1d340 <rtems_rfs_unlink+0xa8>                 
    {                                                                 
      case rtems_rfs_unlink_dir_denied:                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                 
   1d310:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d314:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d318:	ebffd544 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d31c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d320:	1a00004d 	bne	1d45c <rtems_rfs_unlink+0x1c4>                <== NOT EXECUTED
          printf ("rtems-rfs: link is a directory\n");                
        rtems_rfs_inode_close (fs, &target_inode);                    
   1d324:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1d328:	e28d1028 	add	r1, sp, #40	; 0x28                            <== NOT EXECUTED
   1d32c:	ebffcf5f 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
        return EISDIR;                                                
   1d330:	e3a0a015 	mov	sl, #21                                       <== NOT EXECUTED
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))           
    printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",   
            rc, strerror (rc));                                       
                                                                      
  return rc;                                                          
}                                                                     
   1d334:	e1a0000a 	mov	r0, sl                                        
   1d338:	e28dd050 	add	sp, sp, #80	; 0x50                            
   1d33c:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
   */                                                                 
                                                                      
  dir = RTEMS_RFS_S_ISDIR (rtems_rfs_inode_get_mode (&target_inode)); 
  if (dir)                                                            
  {                                                                   
    switch (dir_mode)                                                 
   1d340:	e3590001 	cmp	r9, #1                                        
   1d344:	0a000033 	beq	1d418 <rtems_rfs_unlink+0x180>                
      default:                                                        
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
   1d348:	e1a00004 	mov	r0, r4                                        
   1d34c:	e1a01006 	mov	r1, r6                                        
   1d350:	e1a0200d 	mov	r2, sp                                        
   1d354:	e3a03001 	mov	r3, #1                                        
   1d358:	ebffceda 	bl	10ec8 <rtems_rfs_inode_open>                   
  if (rc)                                                             
   1d35c:	e250a000 	subs	sl, r0, #0                                   
   1d360:	1a00001d 	bne	1d3dc <rtems_rfs_unlink+0x144>                
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_dir_del_entry (fs, &parent_inode, target, doff);     
   1d364:	e1a00004 	mov	r0, r4                                        
   1d368:	e1a0100d 	mov	r1, sp                                        
   1d36c:	e1a02005 	mov	r2, r5                                        
   1d370:	e1a03008 	mov	r3, r8                                        
   1d374:	ebfff6f6 	bl	1af54 <rtems_rfs_dir_del_entry>                
  if (rc > 0)                                                         
   1d378:	e250a000 	subs	sl, r0, #0                                   
   1d37c:	da000039 	ble	1d468 <rtems_rfs_unlink+0x1d0>                
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
   1d380:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d384:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d388:	ebffd528 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d38c:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d390:	0a000005 	beq	1d3ac <rtems_rfs_unlink+0x114>                <== NOT EXECUTED
      printf ("rtems-rfs: unlink: dir-del failed: %d: %s\n",          
   1d394:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d398:	eb0010ef 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d39c:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d3a0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d3a4:	e59f0298 	ldr	r0, [pc, #664]	; 1d644 <rtems_rfs_unlink+0x3ac><== NOT EXECUTED
   1d3a8:	eb000c3d 	bl	204a4 <printf>                                 <== NOT EXECUTED
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
      printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",   
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &parent_inode);                        
   1d3ac:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
   1d3b0:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1d3b4:	ebffcf3d 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d3b8:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
   1d3bc:	e28d1028 	add	r1, sp, #40	; 0x28                            <== NOT EXECUTED
   1d3c0:	ebffcf3a 	bl	110b0 <rtems_rfs_inode_close>                  <== NOT EXECUTED
    return rc;                                                        
   1d3c4:	eaffffda 	b	1d334 <rtems_rfs_unlink+0x9c>                   <== NOT EXECUTED
  uint16_t               links;                                       
  bool                   dir;                                         
  int                    rc;                                          
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
    printf ("rtems-rfs: unlink: parent(%" PRIu32 ") -X-> (%" PRIu32 ")\n", parent, target);
   1d3c8:	e1a01006 	mov	r1, r6                                        <== NOT EXECUTED
   1d3cc:	e1a02005 	mov	r2, r5                                        <== NOT EXECUTED
   1d3d0:	e59f0270 	ldr	r0, [pc, #624]	; 1d648 <rtems_rfs_unlink+0x3b0><== NOT EXECUTED
   1d3d4:	eb000c32 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d3d8:	eaffffba 	b	1d2c8 <rtems_rfs_unlink+0x30>                   <== NOT EXECUTED
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_open (fs, parent, &parent_inode, true);        
  if (rc)                                                             
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
   1d3dc:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d3e0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d3e4:	ebffd511 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d3e8:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d3ec:	0a000005 	beq	1d408 <rtems_rfs_unlink+0x170>                <== NOT EXECUTED
      printf ("rtems-rfs: link: inode-open failed: %d: %s\n",         
   1d3f0:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d3f4:	eb0010d8 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d3f8:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d3fc:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d400:	e59f0244 	ldr	r0, [pc, #580]	; 1d64c <rtems_rfs_unlink+0x3b4><== NOT EXECUTED
   1d404:	eb000c26 	bl	204a4 <printf>                                 <== NOT EXECUTED
  if (rc > 0)                                                         
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
      printf ("rtems-rfs: link: parent inode-close failed: %d: %s\n", 
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &target_inode);                        
   1d408:	e1a00004 	mov	r0, r4                                        
   1d40c:	e28d1028 	add	r1, sp, #40	; 0x28                            
   1d410:	ebffcf26 	bl	110b0 <rtems_rfs_inode_close>                  
    return rc;                                                        
   1d414:	eaffffc6 	b	1d334 <rtems_rfs_unlink+0x9c>                   
          printf ("rtems-rfs: link is a directory\n");                
        rtems_rfs_inode_close (fs, &target_inode);                    
        return EISDIR;                                                
                                                                      
      case rtems_rfs_unlink_dir_if_empty:                             
        rc = rtems_rfs_dir_empty (fs, &target_inode);                 
   1d418:	e1a00004 	mov	r0, r4                                        
   1d41c:	e28d1028 	add	r1, sp, #40	; 0x28                            
   1d420:	ebfff8c2 	bl	1b730 <rtems_rfs_dir_empty>                    
        if (rc > 0)                                                   
   1d424:	e250a000 	subs	sl, r0, #0                                   
   1d428:	daffffc6 	ble	1d348 <rtems_rfs_unlink+0xb0>                 
        {                                                             
          if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))               
   1d42c:	e3a00402 	mov	r0, #33554432	; 0x2000000                     
   1d430:	e3a01000 	mov	r1, #0                                        
   1d434:	ebffd4fd 	bl	12830 <rtems_rfs_trace>                        
   1d438:	e3500000 	cmp	r0, #0                                        
   1d43c:	0afffff1 	beq	1d408 <rtems_rfs_unlink+0x170>                
            printf ("rtems-rfs: dir-empty: %d: %s\n", rc, strerror (rc));
   1d440:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d444:	eb0010c4 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d448:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d44c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d450:	e59f01f8 	ldr	r0, [pc, #504]	; 1d650 <rtems_rfs_unlink+0x3b8><== NOT EXECUTED
   1d454:	eb000c12 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d458:	eaffffea 	b	1d408 <rtems_rfs_unlink+0x170>                  <== NOT EXECUTED
  {                                                                   
    switch (dir_mode)                                                 
    {                                                                 
      case rtems_rfs_unlink_dir_denied:                               
        if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                 
          printf ("rtems-rfs: link is a directory\n");                
   1d45c:	e59f01f0 	ldr	r0, [pc, #496]	; 1d654 <rtems_rfs_unlink+0x3bc><== NOT EXECUTED
   1d460:	eb000ca7 	bl	20704 <puts>                                   <== NOT EXECUTED
   1d464:	eaffffae 	b	1d324 <rtems_rfs_unlink+0x8c>                   <== NOT EXECUTED
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
   1d468:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
   1d46c:	e5d36000 	ldrb	r6, [r3]                                     
   1d470:	e5d33001 	ldrb	r3, [r3, #1]                                 
   1d474:	e1836406 	orr	r6, r3, r6, lsl #8                            
  if (links == 0xffff)                                                
    links = 0;                                                        
   1d478:	e59f31d8 	ldr	r3, [pc, #472]	; 1d658 <rtems_rfs_unlink+0x3c0>
    return rc;                                                        
  }                                                                   
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode);                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
   1d47c:	e3a00402 	mov	r0, #33554432	; 0x2000000                     
   1d480:	e1560003 	cmp	r6, r3                                        
   1d484:	e3a01000 	mov	r1, #0                                        
   1d488:	03a06000 	moveq	r6, #0                                      
   1d48c:	ebffd4e7 	bl	12830 <rtems_rfs_trace>                        
   1d490:	e3500000 	cmp	r0, #0                                        
   1d494:	1a00001d 	bne	1d510 <rtems_rfs_unlink+0x278>                
    printf ("rtems-rfs: unlink: target:%" PRIu32 " links:%u\n", target, links);
                                                                      
  if (links > 1)                                                      
   1d498:	e3560001 	cmp	r6, #1                                        
   1d49c:	9a000031 	bls	1d568 <rtems_rfs_unlink+0x2d0>                
  {                                                                   
    links--;                                                          
   1d4a0:	e2466001 	sub	r6, r6, #1                                    
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
   1d4a4:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
   1d4a8:	e1a06806 	lsl	r6, r6, #16                                   
   1d4ac:	e1a02c26 	lsr	r2, r6, #24                                   
   1d4b0:	e5c32000 	strb	r2, [r3]                                     
   1d4b4:	e59d3034 	ldr	r3, [sp, #52]	; 0x34                          
   1d4b8:	e1a06826 	lsr	r6, r6, #16                                   
   1d4bc:	e5c36001 	strb	r6, [r3, #1]                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1d4c0:	e3a03001 	mov	r3, #1                                        
   1d4c4:	e5cd3038 	strb	r3, [sp, #56]	; 0x38                         
        links--;                                                      
      rtems_rfs_inode_set_links (&parent_inode, links);               
    }                                                                 
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_time_stamp_now (&parent_inode, true, true);    
   1d4c8:	e3a01001 	mov	r1, #1                                        
   1d4cc:	e1a0000d 	mov	r0, sp                                        
   1d4d0:	e1a02001 	mov	r2, r1                                        
   1d4d4:	ebffcf53 	bl	11228 <rtems_rfs_inode_time_stamp_now>         
  if (rc > 0)                                                         
   1d4d8:	e250a000 	subs	sl, r0, #0                                   
   1d4dc:	da000010 	ble	1d524 <rtems_rfs_unlink+0x28c>                
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
   1d4e0:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d4e4:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d4e8:	ebffd4d0 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d4ec:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d4f0:	0affffad 	beq	1d3ac <rtems_rfs_unlink+0x114>                <== NOT EXECUTED
      printf ("rtems-rfs: link: inode-time-stamp failed: %d: %s\n",   
   1d4f4:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d4f8:	eb001097 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d4fc:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d500:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d504:	e59f0150 	ldr	r0, [pc, #336]	; 1d65c <rtems_rfs_unlink+0x3c4><== NOT EXECUTED
   1d508:	eb000be5 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d50c:	eaffffa6 	b	1d3ac <rtems_rfs_unlink+0x114>                  <== NOT EXECUTED
  }                                                                   
                                                                      
  links = rtems_rfs_inode_get_links (&target_inode);                  
                                                                      
  if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                       
    printf ("rtems-rfs: unlink: target:%" PRIu32 " links:%u\n", target, links);
   1d510:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   1d514:	e1a02006 	mov	r2, r6                                        <== NOT EXECUTED
   1d518:	e59f0140 	ldr	r0, [pc, #320]	; 1d660 <rtems_rfs_unlink+0x3c8><== NOT EXECUTED
   1d51c:	eb000be0 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d520:	eaffffdc 	b	1d498 <rtems_rfs_unlink+0x200>                  <== NOT EXECUTED
    rtems_rfs_inode_close (fs, &parent_inode);                        
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &parent_inode);                     
   1d524:	e1a00004 	mov	r0, r4                                        
   1d528:	e1a0100d 	mov	r1, sp                                        
   1d52c:	ebffcedf 	bl	110b0 <rtems_rfs_inode_close>                  
  if (rc > 0)                                                         
   1d530:	e250a000 	subs	sl, r0, #0                                   
   1d534:	da00001c 	ble	1d5ac <rtems_rfs_unlink+0x314>                
  {                                                                   
    if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                     
   1d538:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d53c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d540:	ebffd4ba 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d544:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d548:	0affffae 	beq	1d408 <rtems_rfs_unlink+0x170>                <== NOT EXECUTED
      printf ("rtems-rfs: link: parent inode-close failed: %d: %s\n", 
   1d54c:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d550:	eb001081 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d554:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d558:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d55c:	e59f0100 	ldr	r0, [pc, #256]	; 1d664 <rtems_rfs_unlink+0x3cc><== NOT EXECUTED
   1d560:	eb000bcf 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d564:	eaffffa7 	b	1d408 <rtems_rfs_unlink+0x170>                  <== NOT EXECUTED
  else                                                                
  {                                                                   
    /*                                                                
     * Erasing the inode releases all blocks attached to it.          
     */                                                               
    rc = rtems_rfs_inode_delete (fs, &target_inode);                  
   1d568:	e1a00004 	mov	r0, r4                                        
   1d56c:	e28d1028 	add	r1, sp, #40	; 0x28                            
   1d570:	ebffcef5 	bl	1114c <rtems_rfs_inode_delete>                 
    if (rc > 0)                                                       
   1d574:	e250a000 	subs	sl, r0, #0                                   
   1d578:	da00001c 	ble	1d5f0 <rtems_rfs_unlink+0x358>                
    {                                                                 
      if (rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))                   
   1d57c:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d580:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d584:	ebffd4a9 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d588:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d58c:	0affff86 	beq	1d3ac <rtems_rfs_unlink+0x114>                <== NOT EXECUTED
        printf ("rtems-rfs: unlink: inode-del failed: %d: %s\n",      
   1d590:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d594:	eb001070 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d598:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d59c:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d5a0:	e59f00c0 	ldr	r0, [pc, #192]	; 1d668 <rtems_rfs_unlink+0x3d0><== NOT EXECUTED
   1d5a4:	eb000bbe 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d5a8:	eaffff7f 	b	1d3ac <rtems_rfs_unlink+0x114>                  <== NOT EXECUTED
              rc, strerror (rc));                                     
    rtems_rfs_inode_close (fs, &target_inode);                        
    return rc;                                                        
  }                                                                   
                                                                      
  rc = rtems_rfs_inode_close (fs, &target_inode);                     
   1d5ac:	e1a00004 	mov	r0, r4                                        
   1d5b0:	e28d1028 	add	r1, sp, #40	; 0x28                            
   1d5b4:	ebffcebd 	bl	110b0 <rtems_rfs_inode_close>                  
                                                                      
  if ((rc > 0) && rtems_rfs_trace (RTEMS_RFS_TRACE_UNLINK))           
   1d5b8:	e250a000 	subs	sl, r0, #0                                   
   1d5bc:	daffff5c 	ble	1d334 <rtems_rfs_unlink+0x9c>                 
   1d5c0:	e3a00402 	mov	r0, #33554432	; 0x2000000                     <== NOT EXECUTED
   1d5c4:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   1d5c8:	ebffd498 	bl	12830 <rtems_rfs_trace>                        <== NOT EXECUTED
   1d5cc:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
   1d5d0:	0affff57 	beq	1d334 <rtems_rfs_unlink+0x9c>                 <== NOT EXECUTED
    printf ("rtems-rfs: link: target inode-close failed: %d: %s\n",   
   1d5d4:	e1a0000a 	mov	r0, sl                                        <== NOT EXECUTED
   1d5d8:	eb00105f 	bl	2175c <strerror>                               <== NOT EXECUTED
   1d5dc:	e1a0100a 	mov	r1, sl                                        <== NOT EXECUTED
   1d5e0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   1d5e4:	e59f0080 	ldr	r0, [pc, #128]	; 1d66c <rtems_rfs_unlink+0x3d4><== NOT EXECUTED
   1d5e8:	eb000bad 	bl	204a4 <printf>                                 <== NOT EXECUTED
   1d5ec:	eaffff50 	b	1d334 <rtems_rfs_unlink+0x9c>                   <== NOT EXECUTED
      rtems_rfs_inode_close (fs, &parent_inode);                      
      rtems_rfs_inode_close (fs, &target_inode);                      
      return rc;                                                      
    }                                                                 
                                                                      
    if (dir)                                                          
   1d5f0:	e3570000 	cmp	r7, #0                                        
   1d5f4:	0affffb3 	beq	1d4c8 <rtems_rfs_unlink+0x230>                
 */                                                                   
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
   1d5f8:	e59d200c 	ldr	r2, [sp, #12]                                 
   1d5fc:	e5d21000 	ldrb	r1, [r2]                                     
   1d600:	e5d23001 	ldrb	r3, [r2, #1]                                 
   1d604:	e1833401 	orr	r3, r3, r1, lsl #8                            
  if (links == 0xffff)                                                
   1d608:	e59f1048 	ldr	r1, [pc, #72]	; 1d658 <rtems_rfs_unlink+0x3c0>
   1d60c:	e1530001 	cmp	r3, r1                                        
    links = 0;                                                        
   1d610:	03a03000 	moveq	r3, #0                                      
static inline uint16_t                                                
rtems_rfs_inode_get_links (rtems_rfs_inode_handle* handle)            
{                                                                     
  uint16_t links;                                                     
  links = rtems_rfs_read_u16 (&handle->node->links);                  
  if (links == 0xffff)                                                
   1d614:	0a000003 	beq	1d628 <rtems_rfs_unlink+0x390>                
    {                                                                 
      links = rtems_rfs_inode_get_links (&parent_inode);              
      if (links > 1)                                                  
   1d618:	e3530001 	cmp	r3, #1                                        
        links--;                                                      
   1d61c:	82433001 	subhi	r3, r3, #1                                  
   1d620:	81a03803 	lslhi	r3, r3, #16                                 
   1d624:	81a03823 	lsrhi	r3, r3, #16                                 
 * @prarm links The links.                                            
 */                                                                   
static inline void                                                    
rtems_rfs_inode_set_links (rtems_rfs_inode_handle* handle, uint16_t links)
{                                                                     
  rtems_rfs_write_u16 (&handle->node->links, links);                  
   1d628:	e1a01423 	lsr	r1, r3, #8                                    
   1d62c:	e5c21000 	strb	r1, [r2]                                     
   1d630:	e59d200c 	ldr	r2, [sp, #12]                                 
   1d634:	e5c23001 	strb	r3, [r2, #1]                                 
  rtems_rfs_buffer_mark_dirty (&handle->buffer);                      
   1d638:	e3a03001 	mov	r3, #1                                        
   1d63c:	e5cd3010 	strb	r3, [sp, #16]                                
   1d640:	eaffffa0 	b	1d4c8 <rtems_rfs_unlink+0x230>                  
                                                                      

0002005c <rtems_shell_rfs_format>: } int rtems_shell_rfs_format (int argc, char* argv[]) {
   2005c:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   20060:	e3500001 	cmp	r0, #1                                        <== NOT EXECUTED
  return 1;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_shell_rfs_format (int argc, char* argv[])                       
{                                                                     
   20064:	e24dd018 	sub	sp, sp, #24                                   <== NOT EXECUTED
  rtems_rfs_format_config config;                                     
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
   20068:	e3a05000 	mov	r5, #0                                        <== NOT EXECUTED
  return 1;                                                           
}                                                                     
                                                                      
int                                                                   
rtems_shell_rfs_format (int argc, char* argv[])                       
{                                                                     
   2006c:	e1a06000 	mov	r6, r0                                        <== NOT EXECUTED
   20070:	e1a07001 	mov	r7, r1                                        <== NOT EXECUTED
  rtems_rfs_format_config config;                                     
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
   20074:	e58d5000 	str	r5, [sp]                                      <== NOT EXECUTED
   20078:	e58d5004 	str	r5, [sp, #4]                                  <== NOT EXECUTED
   2007c:	e58d5008 	str	r5, [sp, #8]                                  <== NOT EXECUTED
   20080:	e58d500c 	str	r5, [sp, #12]                                 <== NOT EXECUTED
   20084:	e58d5010 	str	r5, [sp, #16]                                 <== NOT EXECUTED
   20088:	e58d5014 	str	r5, [sp, #20]                                 <== NOT EXECUTED
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   2008c:	da000083 	ble	202a0 <rtems_shell_rfs_format+0x244>          <== NOT EXECUTED
   20090:	e3a04001 	mov	r4, #1                                        <== NOT EXECUTED
          }                                                           
          config.group_inodes = strtoul (argv[arg], 0, 0);            
          break;                                                      
                                                                      
        case 'I':                                                     
          config.initialise_inodes = true;                            
   20094:	e1a08004 	mov	r8, r4                                        <== NOT EXECUTED
   20098:	ea000005 	b	200b4 <rtems_shell_rfs_format+0x58>             <== NOT EXECUTED
          return 1;                                                   
      }                                                               
    }                                                                 
    else                                                              
    {                                                                 
      if (!driver)                                                    
   2009c:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   200a0:	1a00007a 	bne	20290 <rtems_shell_rfs_format+0x234>          <== NOT EXECUTED
   200a4:	e1a05001 	mov	r5, r1                                        <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   200a8:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
   200ac:	e1560004 	cmp	r6, r4                                        <== NOT EXECUTED
   200b0:	da00003a 	ble	201a0 <rtems_shell_rfs_format+0x144>          <== NOT EXECUTED
  {                                                                   
    if (argv[arg][0] == '-')                                          
   200b4:	e7971104 	ldr	r1, [r7, r4, lsl #2]                          <== NOT EXECUTED
   200b8:	e5d13000 	ldrb	r3, [r1]                                     <== NOT EXECUTED
   200bc:	e353002d 	cmp	r3, #45	; 0x2d                                <== NOT EXECUTED
   200c0:	1afffff5 	bne	2009c <rtems_shell_rfs_format+0x40>           <== NOT EXECUTED
    {                                                                 
      switch (argv[arg][1])                                           
   200c4:	e5d13001 	ldrb	r3, [r1, #1]                                 <== NOT EXECUTED
   200c8:	e2433049 	sub	r3, r3, #73	; 0x49                            <== NOT EXECUTED
   200cc:	e353002d 	cmp	r3, #45	; 0x2d                                <== NOT EXECUTED
   200d0:	979ff103 	ldrls	pc, [pc, r3, lsl #2]                        <== NOT EXECUTED
   200d4:	ea000068 	b	2027c <rtems_shell_rfs_format+0x220>            <== NOT EXECUTED
   200d8:	00020274 	.word	0x00020274                                  <== NOT EXECUTED
   200dc:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200e0:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200e4:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200e8:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200ec:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200f0:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200f4:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200f8:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   200fc:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20100:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20104:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20108:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2010c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20110:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20114:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20118:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2011c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20120:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20124:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20128:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2012c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20130:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20134:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20138:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2013c:	00020250 	.word	0x00020250                                  <== NOT EXECUTED
   20140:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20144:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20148:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2014c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20150:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20154:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20158:	0002022c 	.word	0x0002022c                                  <== NOT EXECUTED
   2015c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20160:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20164:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20168:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2016c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20170:	00020208 	.word	0x00020208                                  <== NOT EXECUTED
   20174:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20178:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2017c:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20180:	000201e4 	.word	0x000201e4                                  <== NOT EXECUTED
   20184:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   20188:	0002027c 	.word	0x0002027c                                  <== NOT EXECUTED
   2018c:	00020190 	.word	0x00020190                                  <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   20190:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
   20194:	e1560004 	cmp	r6, r4                                        <== NOT EXECUTED
    if (argv[arg][0] == '-')                                          
    {                                                                 
      switch (argv[arg][1])                                           
      {                                                               
        case 'v':                                                     
          config.verbose = true;                                      
   20198:	e5cd8015 	strb	r8, [sp, #21]                                <== NOT EXECUTED
  const char*             driver = NULL;                              
  int                     arg;                                        
                                                                      
  memset (&config, 0, sizeof (rtems_rfs_format_config));              
                                                                      
  for (arg = 1; arg < argc; arg++)                                    
   2019c:	caffffc4 	bgt	200b4 <rtems_shell_rfs_format+0x58>           <== NOT EXECUTED
        return 1;                                                     
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (!driver) {                                                      
   201a0:	e3550000 	cmp	r5, #0                                        <== NOT EXECUTED
   201a4:	0a00003d 	beq	202a0 <rtems_shell_rfs_format+0x244>          <== NOT EXECUTED
    printf ("error: no driver name provided\n");                      
    return 1;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_format (driver, &config) < 0)                         
   201a8:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
   201ac:	e1a0100d 	mov	r1, sp                                        <== NOT EXECUTED
   201b0:	eb003408 	bl	2d1d8 <rtems_rfs_format>                       <== NOT EXECUTED
   201b4:	e3500000 	cmp	r0, #0                                        <== NOT EXECUTED
    printf ("error: format of %s failed: %s\n",                       
            driver, strerror (errno));                                
    return 1;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
   201b8:	a3a00000 	movge	r0, #0                                      <== NOT EXECUTED
  if (!driver) {                                                      
    printf ("error: no driver name provided\n");                      
    return 1;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_format (driver, &config) < 0)                         
   201bc:	aa000031 	bge	20288 <rtems_shell_rfs_format+0x22c>          <== NOT EXECUTED
  {                                                                   
    printf ("error: format of %s failed: %s\n",                       
            driver, strerror (errno));                                
   201c0:	eb0056ad 	bl	35c7c <__errno>                                <== NOT EXECUTED
    return 1;                                                         
  }                                                                   
                                                                      
  if (rtems_rfs_format (driver, &config) < 0)                         
  {                                                                   
    printf ("error: format of %s failed: %s\n",                       
   201c4:	e5900000 	ldr	r0, [r0]                                      <== NOT EXECUTED
   201c8:	eb0071d6 	bl	3c928 <strerror>                               <== NOT EXECUTED
   201cc:	e1a01005 	mov	r1, r5                                        <== NOT EXECUTED
   201d0:	e1a02000 	mov	r2, r0                                        <== NOT EXECUTED
   201d4:	e59f0114 	ldr	r0, [pc, #276]	; 202f0 <rtems_shell_rfs_format+0x294><== NOT EXECUTED
   201d8:	eb00685a 	bl	3a348 <printf>                                 <== NOT EXECUTED
            driver, strerror (errno));                                
    return 1;                                                         
   201dc:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   201e0:	ea000028 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
        case 'v':                                                     
          config.verbose = true;                                      
          break;                                                      
                                                                      
        case 's':                                                     
          arg++;                                                      
   201e4:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
          if (arg >= argc)                                            
   201e8:	e1560004 	cmp	r6, r4                                        <== NOT EXECUTED
   201ec:	da000033 	ble	202c0 <rtems_shell_rfs_format+0x264>          <== NOT EXECUTED
          {                                                           
            printf ("error: block size needs an argument\n");         
            return 1;                                                 
          }                                                           
          config.block_size = strtoul (argv[arg], 0, 0);              
   201f0:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   201f4:	e7970104 	ldr	r0, [r7, r4, lsl #2]                          <== NOT EXECUTED
   201f8:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   201fc:	eb0077f9 	bl	3e1e8 <strtoul>                                <== NOT EXECUTED
   20200:	e58d0000 	str	r0, [sp]                                      <== NOT EXECUTED
          break;                                                      
   20204:	eaffffa7 	b	200a8 <rtems_shell_rfs_format+0x4c>             <== NOT EXECUTED
        case 'I':                                                     
          config.initialise_inodes = true;                            
          break;                                                      
                                                                      
        case 'o':                                                     
          arg++;                                                      
   20208:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
          if (arg >= argc)                                            
   2020c:	e1560004 	cmp	r6, r4                                        <== NOT EXECUTED
   20210:	da000032 	ble	202e0 <rtems_shell_rfs_format+0x284>          <== NOT EXECUTED
          {                                                           
            printf ("error: inode percentage overhead needs an argument\n");
            return 1;                                                 
          }                                                           
          config.inode_overhead = strtoul (argv[arg], 0, 0);          
   20214:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   20218:	e7970104 	ldr	r0, [r7, r4, lsl #2]                          <== NOT EXECUTED
   2021c:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   20220:	eb0077f0 	bl	3e1e8 <strtoul>                                <== NOT EXECUTED
   20224:	e58d000c 	str	r0, [sp, #12]                                 <== NOT EXECUTED
          break;                                                      
   20228:	eaffff9e 	b	200a8 <rtems_shell_rfs_format+0x4c>             <== NOT EXECUTED
          }                                                           
          config.group_blocks = strtoul (argv[arg], 0, 0);            
          break;                                                      
                                                                      
        case 'i':                                                     
          arg++;                                                      
   2022c:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
          if (arg >= argc)                                            
   20230:	e1560004 	cmp	r6, r4                                        <== NOT EXECUTED
   20234:	da000025 	ble	202d0 <rtems_shell_rfs_format+0x274>          <== NOT EXECUTED
          {                                                           
            printf ("error: group inode count needs an argument\n");  
            return 1;                                                 
          }                                                           
          config.group_inodes = strtoul (argv[arg], 0, 0);            
   20238:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   2023c:	e7970104 	ldr	r0, [r7, r4, lsl #2]                          <== NOT EXECUTED
   20240:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   20244:	eb0077e7 	bl	3e1e8 <strtoul>                                <== NOT EXECUTED
   20248:	e58d0008 	str	r0, [sp, #8]                                  <== NOT EXECUTED
          break;                                                      
   2024c:	eaffff95 	b	200a8 <rtems_shell_rfs_format+0x4c>             <== NOT EXECUTED
          }                                                           
          config.block_size = strtoul (argv[arg], 0, 0);              
          break;                                                      
                                                                      
        case 'b':                                                     
          arg++;                                                      
   20250:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
          if (arg >= argc)                                            
   20254:	e1560004 	cmp	r6, r4                                        <== NOT EXECUTED
   20258:	da000014 	ble	202b0 <rtems_shell_rfs_format+0x254>          <== NOT EXECUTED
          {                                                           
            printf ("error: group block count needs an argument\n");  
            return 1;                                                 
          }                                                           
          config.group_blocks = strtoul (argv[arg], 0, 0);            
   2025c:	e3a01000 	mov	r1, #0                                        <== NOT EXECUTED
   20260:	e7970104 	ldr	r0, [r7, r4, lsl #2]                          <== NOT EXECUTED
   20264:	e1a02001 	mov	r2, r1                                        <== NOT EXECUTED
   20268:	eb0077de 	bl	3e1e8 <strtoul>                                <== NOT EXECUTED
   2026c:	e58d0004 	str	r0, [sp, #4]                                  <== NOT EXECUTED
          break;                                                      
   20270:	eaffff8c 	b	200a8 <rtems_shell_rfs_format+0x4c>             <== NOT EXECUTED
          }                                                           
          config.group_inodes = strtoul (argv[arg], 0, 0);            
          break;                                                      
                                                                      
        case 'I':                                                     
          config.initialise_inodes = true;                            
   20274:	e5cd8014 	strb	r8, [sp, #20]                                <== NOT EXECUTED
          break;                                                      
   20278:	eaffff8a 	b	200a8 <rtems_shell_rfs_format+0x4c>             <== NOT EXECUTED
          }                                                           
          config.inode_overhead = strtoul (argv[arg], 0, 0);          
          break;                                                      
                                                                      
        default:                                                      
          printf ("error: invalid option: %s\n", argv[arg]);          
   2027c:	e59f0070 	ldr	r0, [pc, #112]	; 202f4 <rtems_shell_rfs_format+0x298><== NOT EXECUTED
   20280:	eb006830 	bl	3a348 <printf>                                 <== NOT EXECUTED
          return 1;                                                   
   20284:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
            driver, strerror (errno));                                
    return 1;                                                         
  }                                                                   
                                                                      
  return 0;                                                           
}                                                                     
   20288:	e28dd018 	add	sp, sp, #24                                   <== NOT EXECUTED
   2028c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      <== NOT EXECUTED
    {                                                                 
      if (!driver)                                                    
        driver = argv[arg];                                           
      else                                                            
      {                                                               
        printf ("error: only one driver name allowed: %s\n", argv[arg]);
   20290:	e59f0060 	ldr	r0, [pc, #96]	; 202f8 <rtems_shell_rfs_format+0x29c><== NOT EXECUTED
   20294:	eb00682b 	bl	3a348 <printf>                                 <== NOT EXECUTED
        return 1;                                                     
   20298:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   2029c:	eafffff9 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if (!driver) {                                                      
    printf ("error: no driver name provided\n");                      
   202a0:	e59f0054 	ldr	r0, [pc, #84]	; 202fc <rtems_shell_rfs_format+0x2a0><== NOT EXECUTED
   202a4:	eb0068bf 	bl	3a5a8 <puts>                                   <== NOT EXECUTED
    return 1;                                                         
   202a8:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   202ac:	eafffff5 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
                                                                      
        case 'b':                                                     
          arg++;                                                      
          if (arg >= argc)                                            
          {                                                           
            printf ("error: group block count needs an argument\n");  
   202b0:	e59f0048 	ldr	r0, [pc, #72]	; 20300 <rtems_shell_rfs_format+0x2a4><== NOT EXECUTED
   202b4:	eb0068bb 	bl	3a5a8 <puts>                                   <== NOT EXECUTED
            return 1;                                                 
   202b8:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   202bc:	eafffff1 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
                                                                      
        case 's':                                                     
          arg++;                                                      
          if (arg >= argc)                                            
          {                                                           
            printf ("error: block size needs an argument\n");         
   202c0:	e59f003c 	ldr	r0, [pc, #60]	; 20304 <rtems_shell_rfs_format+0x2a8><== NOT EXECUTED
   202c4:	eb0068b7 	bl	3a5a8 <puts>                                   <== NOT EXECUTED
            return 1;                                                 
   202c8:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   202cc:	eaffffed 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
                                                                      
        case 'i':                                                     
          arg++;                                                      
          if (arg >= argc)                                            
          {                                                           
            printf ("error: group inode count needs an argument\n");  
   202d0:	e59f0030 	ldr	r0, [pc, #48]	; 20308 <rtems_shell_rfs_format+0x2ac><== NOT EXECUTED
   202d4:	eb0068b3 	bl	3a5a8 <puts>                                   <== NOT EXECUTED
            return 1;                                                 
   202d8:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   202dc:	eaffffe9 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
                                                                      
        case 'o':                                                     
          arg++;                                                      
          if (arg >= argc)                                            
          {                                                           
            printf ("error: inode percentage overhead needs an argument\n");
   202e0:	e59f0024 	ldr	r0, [pc, #36]	; 2030c <rtems_shell_rfs_format+0x2b0><== NOT EXECUTED
   202e4:	eb0068af 	bl	3a5a8 <puts>                                   <== NOT EXECUTED
            return 1;                                                 
   202e8:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
   202ec:	eaffffe5 	b	20288 <rtems_shell_rfs_format+0x22c>            <== NOT EXECUTED
                                                                      

0000ddfc <rtems_sparse_disk_register>: uint32_t media_block_size, rtems_blkdev_bnum blocks_with_buffer, rtems_blkdev_bnum media_block_count, uint8_t fill_pattern, rtems_sparse_disk_delete_handler sparse_disk_delete ) {
    ddfc:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    de00:	e24dd008 	sub	sp, sp, #8                                    
    de04:	e59d502c 	ldr	r5, [sp, #44]	; 0x2c                          
  rtems_status_code sc;                                               
                                                                      
  if ( blocks_with_buffer <= media_block_count ) {                    
    de08:	e1530005 	cmp	r3, r5                                        
  uint32_t                         media_block_size,                  
  rtems_blkdev_bnum                blocks_with_buffer,                
  rtems_blkdev_bnum                media_block_count,                 
  uint8_t                          fill_pattern,                      
  rtems_sparse_disk_delete_handler sparse_disk_delete )               
{                                                                     
    de0c:	e1a09000 	mov	r9, r0                                        
    de10:	e1a04003 	mov	r4, r3                                        
    de14:	e1a06001 	mov	r6, r1                                        
    de18:	e1a07002 	mov	r7, r2                                        
    de1c:	e59db034 	ldr	fp, [sp, #52]	; 0x34                          
    de20:	e5dd8030 	ldrb	r8, [sp, #48]	; 0x30                         
        sparse_disk_ioctl,                                            
        sparse_disk                                                   
      );                                                              
    }                                                                 
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
    de24:	83a0000a 	movhi	r0, #10                                     
  uint8_t                          fill_pattern,                      
  rtems_sparse_disk_delete_handler sparse_disk_delete )               
{                                                                     
  rtems_status_code sc;                                               
                                                                      
  if ( blocks_with_buffer <= media_block_count ) {                    
    de28:	9a000001 	bls	de34 <rtems_sparse_disk_register+0x38>        
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
    de2c:	e28dd008 	add	sp, sp, #8                                    <== NOT EXECUTED
    de30:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
  const uint8_t                                                     fill_pattern )
{                                                                     
  rtems_status_code sc;                                               
  rtems_blkdev_bnum i;                                                
                                                                      
  if ( NULL == sd )                                                   
    de34:	e3510000 	cmp	r1, #0                                        
    de38:	0a00002b 	beq	deec <rtems_sparse_disk_register+0xf0>        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  uint8_t     *data           = (uint8_t *) sd;                       
  size_t const key_table_size = blocks_with_buffer                    
    de3c:	e1a0c183 	lsl	ip, r3, #3                                    
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
                                                                      
  memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );    
    de40:	e28ca01c 	add	sl, ip, #28                                   
    de44:	e3a01000 	mov	r1, #0                                        
    de48:	e1a0200a 	mov	r2, sl                                        
    de4c:	e1a00006 	mov	r0, r6                                        
    de50:	e58dc004 	str	ip, [sp, #4]                                  
    de54:	eb003173 	bl	1a428 <memset>                                 
                                                                      
  sd->fill_pattern = fill_pattern;                                    
  memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
    de58:	e1a01008 	mov	r1, r8                                        
    de5c:	e0020497 	mul	r2, r7, r4                                    
                                * sizeof( rtems_sparse_disk_key );    
  size_t const data_size      = blocks_with_buffer * media_block_size;
                                                                      
  memset( data, 0, sizeof( rtems_sparse_disk ) + key_table_size );    
                                                                      
  sd->fill_pattern = fill_pattern;                                    
    de60:	e5c68014 	strb	r8, [r6, #20]                                
  memset( (uint8_t *) ( data + sizeof( rtems_sparse_disk ) + key_table_size ),
    de64:	e086000a 	add	r0, r6, sl                                    
    de68:	eb00316e 	bl	1a428 <memset>                                 
          sd->fill_pattern,                                           
          data_size );                                                
                                                                      
  sd->delete_handler = sparse_disk_delete;                            
    de6c:	e586b010 	str	fp, [r6, #16]                                 
                                                                      
  sc                 = rtems_semaphore_create(                        
    de70:	e59f007c 	ldr	r0, [pc, #124]	; def4 <rtems_sparse_disk_register+0xf8>
    de74:	e3a01001 	mov	r1, #1                                        
    de78:	e3a02054 	mov	r2, #84	; 0x54                                
    de7c:	e3a03000 	mov	r3, #0                                        
    de80:	e58d6000 	str	r6, [sp]                                      
    de84:	ebffe9d2 	bl	85d4 <rtems_semaphore_create>                  
    RTEMS_PRIORITY | RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY, 
    0,                                                                
    &sd->mutex                                                        
    );                                                                
                                                                      
  if ( sc != RTEMS_SUCCESSFUL ) {                                     
    de88:	e3500000 	cmp	r0, #0                                        
    de8c:	e59dc004 	ldr	ip, [sp, #4]                                  
    de90:	1affffe5 	bne	de2c <rtems_sparse_disk_register+0x30>        
    return sc;                                                        
  }                                                                   
                                                                      
  data                  += sizeof( rtems_sparse_disk );               
    de94:	e286301c 	add	r3, r6, #28                                   
  sd->blocks_with_buffer = blocks_with_buffer;                        
  sd->key_table          = (rtems_sparse_disk_key *) data;            
                                                                      
  data                  += key_table_size;                            
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
    de98:	e3540000 	cmp	r4, #0                                        
    return sc;                                                        
  }                                                                   
                                                                      
  data                  += sizeof( rtems_sparse_disk );               
                                                                      
  sd->blocks_with_buffer = blocks_with_buffer;                        
    de9c:	e5864004 	str	r4, [r6, #4]                                  
  sd->key_table          = (rtems_sparse_disk_key *) data;            
    dea0:	e5863018 	str	r3, [r6, #24]                                 
                                                                      
  data                  += key_table_size;                            
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
    dea4:	0a000007 	beq	dec8 <rtems_sparse_disk_register+0xcc>        
  data                  += sizeof( rtems_sparse_disk );               
                                                                      
  sd->blocks_with_buffer = blocks_with_buffer;                        
  sd->key_table          = (rtems_sparse_disk_key *) data;            
                                                                      
  data                  += key_table_size;                            
    dea8:	e083c00c 	add	ip, r3, ip                                    
    deac:	e1a03006 	mov	r3, r6                                        
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
    deb0:	e2800001 	add	r0, r0, #1                                    
    deb4:	e1500004 	cmp	r0, r4                                        
    sd->key_table[i].data = data;                                     
    deb8:	e583c020 	str	ip, [r3, #32]                                 
  sd->blocks_with_buffer = blocks_with_buffer;                        
  sd->key_table          = (rtems_sparse_disk_key *) data;            
                                                                      
  data                  += key_table_size;                            
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
    debc:	e08cc007 	add	ip, ip, r7                                    
    dec0:	e2833008 	add	r3, r3, #8                                    
    dec4:	1afffff9 	bne	deb0 <rtems_sparse_disk_register+0xb4>        
      sparse_disk_delete,                                             
      fill_pattern                                                    
    );                                                                
                                                                      
    if ( RTEMS_SUCCESSFUL == sc ) {                                   
      sc = rtems_blkdev_create(                                       
    dec8:	e59f3028 	ldr	r3, [pc, #40]	; def8 <rtems_sparse_disk_register+0xfc>
    decc:	e1a00009 	mov	r0, r9                                        
    ded0:	e1a01007 	mov	r1, r7                                        
    ded4:	e1a02005 	mov	r2, r5                                        
                                                                      
  for ( i = 0; i < blocks_with_buffer; ++i, data += media_block_size ) {
    sd->key_table[i].data = data;                                     
  }                                                                   
                                                                      
  sd->media_block_size = media_block_size;                            
    ded8:	e586700c 	str	r7, [r6, #12]                                 
      sparse_disk_delete,                                             
      fill_pattern                                                    
    );                                                                
                                                                      
    if ( RTEMS_SUCCESSFUL == sc ) {                                   
      sc = rtems_blkdev_create(                                       
    dedc:	e58d602c 	str	r6, [sp, #44]	; 0x2c                          
  } else {                                                            
    sc = RTEMS_INVALID_NUMBER;                                        
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
    dee0:	e28dd008 	add	sp, sp, #8                                    
    dee4:	e8bd4ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, lr}          
      sparse_disk_delete,                                             
      fill_pattern                                                    
    );                                                                
                                                                      
    if ( RTEMS_SUCCESSFUL == sc ) {                                   
      sc = rtems_blkdev_create(                                       
    dee8:	ea000ad4 	b	10a40 <rtems_blkdev_create>                     
{                                                                     
  rtems_status_code sc;                                               
  rtems_blkdev_bnum i;                                                
                                                                      
  if ( NULL == sd )                                                   
    return RTEMS_INVALID_ADDRESS;                                     
    deec:	e3a00009 	mov	r0, #9                                        <== NOT EXECUTED
    def0:	eaffffcd 	b	de2c <rtems_sparse_disk_register+0x30>          <== NOT EXECUTED
                                                                      

00021d3c <rtems_stack_checker_is_blown>: /* * Check if blown */ bool rtems_stack_checker_is_blown( void ) {
   21d3c:	e92d4830 	push	{r4, r5, fp, lr}                             
  Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack; 
   21d40:	e59f4074 	ldr	r4, [pc, #116]	; 21dbc <rtems_stack_checker_is_blown+0x80>
   21d44:	e5943008 	ldr	r3, [r4, #8]                                  
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
   21d48:	e59300b4 	ldr	r0, [r3, #180]	; 0xb4                         
                                                                      
/*                                                                    
 *  Check if blown                                                    
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
{                                                                     
   21d4c:	e28db00c 	add	fp, sp, #12                                   
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
   21d50:	e15b0000 	cmp	fp, r0                                        
      return false;                                                   
   21d54:	33a05000 	movcc	r5, #0                                      
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
   21d58:	3a000004 	bcc	21d70 <rtems_stack_checker_is_blown+0x34>     
      return false;                                                   
    }                                                                 
    if ( sp > (the_stack->area + the_stack->size) ) {                 
   21d5c:	e59350b0 	ldr	r5, [r3, #176]	; 0xb0                         
   21d60:	e0805005 	add	r5, r0, r5                                    
}                                                                     
                                                                      
/*                                                                    
 *  Check if blown                                                    
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
   21d64:	e15b0005 	cmp	fp, r5                                        
   21d68:	83a05000 	movhi	r5, #0                                      
   21d6c:	93a05001 	movls	r5, #1                                      
                                                                      
  /*                                                                  
   * The stack checker must be initialized before the pattern is there
   * to check.                                                        
   */                                                                 
  if ( Stack_check_Initialized ) {                                    
   21d70:	e59f3048 	ldr	r3, [pc, #72]	; 21dc0 <rtems_stack_checker_is_blown+0x84>
   21d74:	e5933008 	ldr	r3, [r3, #8]                                  
   21d78:	e3530000 	cmp	r3, #0                                        
 */                                                                   
bool rtems_stack_checker_is_blown( void )                             
{                                                                     
  Stack_Control *the_stack = &_Thread_Executing->Start.Initial_stack; 
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
   21d7c:	03a01001 	moveq	r1, #1                                      
                                                                      
  /*                                                                  
   * The stack checker must be initialized before the pattern is there
   * to check.                                                        
   */                                                                 
  if ( Stack_check_Initialized ) {                                    
   21d80:	0a000005 	beq	21d9c <rtems_stack_checker_is_blown+0x60>     
    pattern_ok = (!memcmp(                                            
   21d84:	e59f1038 	ldr	r1, [pc, #56]	; 21dc4 <rtems_stack_checker_is_blown+0x88>
   21d88:	e2800008 	add	r0, r0, #8                                    
   21d8c:	e3a02010 	mov	r2, #16                                       
   21d90:	eb005c4e 	bl	38ed0 <memcmp>                                 
   21d94:	e2701001 	rsbs	r1, r0, #1                                   
   21d98:	33a01000 	movcc	r1, #0                                      
                                                                      
                                                                      
  /*                                                                  
   * Let's report as much as we can.                                  
   */                                                                 
  if ( !sp_ok || !pattern_ok ) {                                      
   21d9c:	e3550000 	cmp	r5, #0                                        
   21da0:	0a000003 	beq	21db4 <rtems_stack_checker_is_blown+0x78>     
   21da4:	e3510000 	cmp	r1, #0                                        
   21da8:	0a000001 	beq	21db4 <rtems_stack_checker_is_blown+0x78>     
                                                                      
  /*                                                                  
   * The Stack Pointer and the Pattern Area are OK so return false.   
   */                                                                 
  return false;                                                       
}                                                                     
   21dac:	e3a00000 	mov	r0, #0                                        
   21db0:	e8bd8830 	pop	{r4, r5, fp, pc}                              
                                                                      
  /*                                                                  
   * Let's report as much as we can.                                  
   */                                                                 
  if ( !sp_ok || !pattern_ok ) {                                      
    Stack_check_report_blown_task( _Thread_Executing, pattern_ok );   
   21db4:	e5940008 	ldr	r0, [r4, #8]                                  <== NOT EXECUTED
   21db8:	ebffff98 	bl	21c20 <Stack_check_report_blown_task>          <== NOT EXECUTED
                                                                      

00021cd8 <rtems_stack_checker_switch_extension>: */ void rtems_stack_checker_switch_extension( Thread_Control *running __attribute__((unused)), Thread_Control *heir __attribute__((unused)) ) {
   21cd8:	e92d4810 	push	{r4, fp, lr}                                 
  Stack_Control *the_stack = &running->Start.Initial_stack;           
  void          *pattern;                                             
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
                                                                      
  pattern = Stack_check_Get_pattern_area(the_stack);                  
   21cdc:	e59030b4 	ldr	r3, [r0, #180]	; 0xb4                         
 */                                                                   
void rtems_stack_checker_switch_extension(                            
  Thread_Control *running __attribute__((unused)),                    
  Thread_Control *heir __attribute__((unused))                        
)                                                                     
{                                                                     
   21ce0:	e28db008 	add	fp, sp, #8                                    
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
   21ce4:	e15b0003 	cmp	fp, r3                                        
 */                                                                   
void rtems_stack_checker_switch_extension(                            
  Thread_Control *running __attribute__((unused)),                    
  Thread_Control *heir __attribute__((unused))                        
)                                                                     
{                                                                     
   21ce8:	e1a04000 	mov	r4, r0                                        
  /*                                                                  
   *  Check for an out of bounds stack pointer or an overwrite        
   */                                                                 
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
   21cec:	e59f1044 	ldr	r1, [pc, #68]	; 21d38 <rtems_stack_checker_switch_extension+0x60>
  Stack_Control *the_stack = &running->Start.Initial_stack;           
  void          *pattern;                                             
  bool           sp_ok;                                               
  bool           pattern_ok = true;                                   
                                                                      
  pattern = Stack_check_Get_pattern_area(the_stack);                  
   21cf0:	e2830008 	add	r0, r3, #8                                    
)                                                                     
{                                                                     
  #if defined(__GNUC__)                                               
    void *sp = __builtin_frame_address(0);                            
                                                                      
    if ( sp < the_stack->area ) {                                     
   21cf4:	3a000003 	bcc	21d08 <rtems_stack_checker_switch_extension+0x30>
      return false;                                                   
    }                                                                 
    if ( sp > (the_stack->area + the_stack->size) ) {                 
   21cf8:	e59420b0 	ldr	r2, [r4, #176]	; 0xb0                         
   21cfc:	e0833002 	add	r3, r3, r2                                    
   21d00:	e15b0003 	cmp	fp, r3                                        
   21d04:	9a000005 	bls	21d20 <rtems_stack_checker_switch_extension+0x48>
  /*                                                                  
   *  Check for an out of bounds stack pointer or an overwrite        
   */                                                                 
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
   21d08:	e3a02010 	mov	r2, #16                                       <== NOT EXECUTED
   21d0c:	eb005c6f 	bl	38ed0 <memcmp>                                 <== NOT EXECUTED
   21d10:	e2701001 	rsbs	r1, r0, #1                                   <== NOT EXECUTED
   21d14:	33a01000 	movcc	r1, #0                                      <== NOT EXECUTED
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
    Stack_check_report_blown_task( running, pattern_ok );             
   21d18:	e1a00004 	mov	r0, r4                                        
   21d1c:	ebffffbf 	bl	21c20 <Stack_check_report_blown_task>          
  /*                                                                  
   *  Check for an out of bounds stack pointer or an overwrite        
   */                                                                 
  sp_ok = Stack_check_Frame_pointer_in_range( the_stack );            
                                                                      
  pattern_ok = (!memcmp( pattern,                                     
   21d20:	e3a02010 	mov	r2, #16                                       
   21d24:	eb005c69 	bl	38ed0 <memcmp>                                 
            (void *) Stack_check_Pattern.pattern, PATTERN_SIZE_BYTES));
                                                                      
  if ( !sp_ok || !pattern_ok ) {                                      
   21d28:	e3500000 	cmp	r0, #0                                        
   21d2c:	08bd8810 	popeq	{r4, fp, pc}                                
   21d30:	e3a01000 	mov	r1, #0                                        
   21d34:	eafffff7 	b	21d18 <rtems_stack_checker_switch_extension+0x40>
                                                                      

0001c858 <rtems_string_to_unsigned_char>: const char *s, unsigned char *n, char **endptr, int base ) {
   1c858:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
   1c85c:	e2516000 	subs	r6, r1, #0                                   
  const char *s,                                                      
  unsigned char *n,                                                   
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
   1c860:	e1a04000 	mov	r4, r0                                        
   1c864:	e24dd004 	sub	sp, sp, #4                                    
   1c868:	e1a05002 	mov	r5, r2                                        
   1c86c:	e1a07003 	mov	r7, r3                                        
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
   1c870:	03a00009 	moveq	r0, #9                                      
)                                                                     
{                                                                     
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
   1c874:	0a000016 	beq	1c8d4 <rtems_string_to_unsigned_char+0x7c>    
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
   1c878:	eb0064ff 	bl	35c7c <__errno>                                
   1c87c:	e3a03000 	mov	r3, #0                                        
   1c880:	e5803000 	str	r3, [r0]                                      
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
   1c884:	e1a02007 	mov	r2, r7                                        
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
   1c888:	e5c63000 	strb	r3, [r6]                                     
                                                                      
  result = strtoul( s, &end, base );                                  
   1c88c:	e1a00004 	mov	r0, r4                                        
   1c890:	e1a0100d 	mov	r1, sp                                        
   1c894:	eb008653 	bl	3e1e8 <strtoul>                                
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
   1c898:	e59d3000 	ldr	r3, [sp]                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
   1c89c:	e3550000 	cmp	r5, #0                                        
    *endptr = end;                                                    
   1c8a0:	15853000 	strne	r3, [r5]                                    
                                                                      
  if ( end == s )                                                     
   1c8a4:	e1540003 	cmp	r4, r3                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
   1c8a8:	e1a07000 	mov	r7, r0                                        
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
   1c8ac:	03a0000b 	moveq	r0, #11                                     
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
   1c8b0:	0a000007 	beq	1c8d4 <rtems_string_to_unsigned_char+0x7c>    
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
   1c8b4:	eb0064f0 	bl	35c7c <__errno>                                
   1c8b8:	e5903000 	ldr	r3, [r0]                                      
   1c8bc:	e3530022 	cmp	r3, #34	; 0x22                                
   1c8c0:	0a00000a 	beq	1c8f0 <rtems_string_to_unsigned_char+0x98>    
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
   1c8c4:	e35700ff 	cmp	r7, #255	; 0xff                               
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
   1c8c8:	95c67000 	strbls	r7, [r6]                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
   1c8cc:	93a00000 	movls	r0, #0                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
   1c8d0:	8a000001 	bhi	1c8dc <rtems_string_to_unsigned_char+0x84>    
#endif                                                                
                                                                      
  *n = result;                                                        
                                                                      
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
   1c8d4:	e28dd004 	add	sp, sp, #4                                    
   1c8d8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
#if (UCHAR_MAX < ULONG_MAX)                                           
  if ( result > UCHAR_MAX ) {                                         
    errno = ERANGE;                                                   
   1c8dc:	eb0064e6 	bl	35c7c <__errno>                                
   1c8e0:	e3a03022 	mov	r3, #34	; 0x22                                
   1c8e4:	e5803000 	str	r3, [r0]                                      
    return RTEMS_INVALID_NUMBER;                                      
   1c8e8:	e3a0000a 	mov	r0, #10                                       
   1c8ec:	eafffff8 	b	1c8d4 <rtems_string_to_unsigned_char+0x7c>      
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
   1c8f0:	e2473001 	sub	r3, r7, #1                                    
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
   1c8f4:	e3730003 	cmn	r3, #3                                        
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
   1c8f8:	83a0000a 	movhi	r0, #10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
   1c8fc:	8afffff4 	bhi	1c8d4 <rtems_string_to_unsigned_char+0x7c>    
   1c900:	eaffffef 	b	1c8c4 <rtems_string_to_unsigned_char+0x6c>      <== NOT EXECUTED
                                                                      

0000cdb4 <rtems_string_to_unsigned_int>: const char *s, unsigned int *n, char **endptr, int base ) {
    cdb4:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    cdb8:	e2516000 	subs	r6, r1, #0                                   
  const char *s,                                                      
  unsigned int *n,                                                    
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
    cdbc:	e1a04000 	mov	r4, r0                                        
    cdc0:	e24dd004 	sub	sp, sp, #4                                    
    cdc4:	e1a05002 	mov	r5, r2                                        
    cdc8:	e1a07003 	mov	r7, r3                                        
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
    cdcc:	03a00009 	moveq	r0, #9                                      
)                                                                     
{                                                                     
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    cdd0:	0a000014 	beq	ce28 <rtems_string_to_unsigned_int+0x74>      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
    cdd4:	eb000813 	bl	ee28 <__errno>                                 
    cdd8:	e3a03000 	mov	r3, #0                                        
    cddc:	e5803000 	str	r3, [r0]                                      
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
    cde0:	e1a02007 	mov	r2, r7                                        
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
    cde4:	e5863000 	str	r3, [r6]                                      
                                                                      
  result = strtoul( s, &end, base );                                  
    cde8:	e1a00004 	mov	r0, r4                                        
    cdec:	e1a0100d 	mov	r1, sp                                        
    cdf0:	eb0014fd 	bl	121ec <strtoul>                                
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
    cdf4:	e59d3000 	ldr	r3, [sp]                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    cdf8:	e3550000 	cmp	r5, #0                                        
    *endptr = end;                                                    
    cdfc:	15853000 	strne	r3, [r5]                                    
                                                                      
  if ( end == s )                                                     
    ce00:	e1540003 	cmp	r4, r3                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
    ce04:	e1a07000 	mov	r7, r0                                        
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
    ce08:	03a0000b 	moveq	r0, #11                                     
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    ce0c:	0a000005 	beq	ce28 <rtems_string_to_unsigned_int+0x74>      
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    ce10:	eb000804 	bl	ee28 <__errno>                                 
    ce14:	e5903000 	ldr	r3, [r0]                                      
    ce18:	e3530022 	cmp	r3, #34	; 0x22                                
    ce1c:	0a000003 	beq	ce30 <rtems_string_to_unsigned_int+0x7c>      
    errno = ERANGE;                                                   
    return RTEMS_INVALID_NUMBER;                                      
  }                                                                   
#endif                                                                
                                                                      
  *n = result;                                                        
    ce20:	e5867000 	str	r7, [r6]                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    ce24:	e3a00000 	mov	r0, #0                                        
}                                                                     
    ce28:	e28dd004 	add	sp, sp, #4                                    
    ce2c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
    ce30:	e2473001 	sub	r3, r7, #1                                    
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    ce34:	e3730003 	cmn	r3, #3                                        
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
    ce38:	83a0000a 	movhi	r0, #10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    ce3c:	8afffff9 	bhi	ce28 <rtems_string_to_unsigned_int+0x74>      
    ce40:	eafffff6 	b	ce20 <rtems_string_to_unsigned_int+0x6c>        <== NOT EXECUTED
                                                                      

0000b418 <rtems_string_to_unsigned_long>: const char *s, unsigned long *n, char **endptr, int base ) {
    b418:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    b41c:	e2516000 	subs	r6, r1, #0                                   
  const char *s,                                                      
  unsigned long *n,                                                   
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
    b420:	e1a04000 	mov	r4, r0                                        
    b424:	e24dd004 	sub	sp, sp, #4                                    
    b428:	e1a05002 	mov	r5, r2                                        
    b42c:	e1a07003 	mov	r7, r3                                        
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
    b430:	03a00009 	moveq	r0, #9                                      
)                                                                     
{                                                                     
  unsigned long result;                                               
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    b434:	0a000014 	beq	b48c <rtems_string_to_unsigned_long+0x74>     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
    b438:	eb00aa0f 	bl	35c7c <__errno>                                
    b43c:	e3a03000 	mov	r3, #0                                        
    b440:	e5803000 	str	r3, [r0]                                      
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
    b444:	e1a02007 	mov	r2, r7                                        
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
    b448:	e5863000 	str	r3, [r6]                                      
                                                                      
  result = strtoul( s, &end, base );                                  
    b44c:	e1a00004 	mov	r0, r4                                        
    b450:	e1a0100d 	mov	r1, sp                                        
    b454:	eb00cb63 	bl	3e1e8 <strtoul>                                
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
    b458:	e59d3000 	ldr	r3, [sp]                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    b45c:	e3550000 	cmp	r5, #0                                        
    *endptr = end;                                                    
    b460:	15853000 	strne	r3, [r5]                                    
                                                                      
  if ( end == s )                                                     
    b464:	e1540003 	cmp	r4, r3                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoul( s, &end, base );                                  
    b468:	e1a07000 	mov	r7, r0                                        
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
    b46c:	03a0000b 	moveq	r0, #11                                     
  result = strtoul( s, &end, base );                                  
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    b470:	0a000005 	beq	b48c <rtems_string_to_unsigned_long+0x74>     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    b474:	eb00aa00 	bl	35c7c <__errno>                                
    b478:	e5903000 	ldr	r3, [r0]                                      
    b47c:	e3530022 	cmp	r3, #34	; 0x22                                
    b480:	0a000003 	beq	b494 <rtems_string_to_unsigned_long+0x7c>     
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
    b484:	e5867000 	str	r7, [r6]                                      
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    b488:	e3a00000 	mov	r0, #0                                        
}                                                                     
    b48c:	e28dd004 	add	sp, sp, #4                                    
    b490:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_MAX )))                     
    b494:	e2473001 	sub	r3, r7, #1                                    
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    b498:	e3730003 	cmn	r3, #3                                        
    (( result == 0 ) || ( result == ULONG_MAX )))                     
      return RTEMS_INVALID_NUMBER;                                    
    b49c:	83a0000a 	movhi	r0, #10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    b4a0:	8afffff9 	bhi	b48c <rtems_string_to_unsigned_long+0x74>     
    b4a4:	eafffff6 	b	b484 <rtems_string_to_unsigned_long+0x6c>       <== NOT EXECUTED
                                                                      

0000ce44 <rtems_string_to_unsigned_long_long>: const char *s, unsigned long long *n, char **endptr, int base ) {
    ce44:	e92d43f0 	push	{r4, r5, r6, r7, r8, r9, lr}                 
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    ce48:	e2516000 	subs	r6, r1, #0                                   
  const char *s,                                                      
  unsigned long long *n,                                              
  char **endptr,                                                      
  int base                                                            
)                                                                     
{                                                                     
    ce4c:	e1a04000 	mov	r4, r0                                        
    ce50:	e24dd004 	sub	sp, sp, #4                                    
    ce54:	e1a05002 	mov	r5, r2                                        
    ce58:	e1a07003 	mov	r7, r3                                        
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    return RTEMS_INVALID_ADDRESS;                                     
    ce5c:	03a00009 	moveq	r0, #9                                      
)                                                                     
{                                                                     
  unsigned long long result;                                          
  char *end;                                                          
                                                                      
  if ( !n )                                                           
    ce60:	0a000017 	beq	cec4 <rtems_string_to_unsigned_long_long+0x80>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
    ce64:	eb0007ef 	bl	ee28 <__errno>                                 
    ce68:	e3a03000 	mov	r3, #0                                        
    ce6c:	e5803000 	str	r3, [r0]                                      
  *n = 0;                                                             
    ce70:	e3a02000 	mov	r2, #0                                        
    ce74:	e3a03000 	mov	r3, #0                                        
    ce78:	e886000c 	stm	r6, {r2, r3}                                  
                                                                      
  result = strtoull( s, &end, base );                                 
    ce7c:	e1a00004 	mov	r0, r4                                        
    ce80:	e1a0100d 	mov	r1, sp                                        
    ce84:	e1a02007 	mov	r2, r7                                        
    ce88:	eb0014e2 	bl	12218 <strtoull>                               
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
    ce8c:	e59d3000 	ldr	r3, [sp]                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoull( s, &end, base );                                 
                                                                      
  if ( endptr )                                                       
    ce90:	e3550000 	cmp	r5, #0                                        
    *endptr = end;                                                    
    ce94:	15853000 	strne	r3, [r5]                                    
                                                                      
  if ( end == s )                                                     
    ce98:	e1540003 	cmp	r4, r3                                        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  errno = 0;                                                          
  *n = 0;                                                             
                                                                      
  result = strtoull( s, &end, base );                                 
    ce9c:	e1a08000 	mov	r8, r0                                        
    cea0:	e1a09001 	mov	r9, r1                                        
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
    cea4:	03a0000b 	moveq	r0, #11                                     
  result = strtoull( s, &end, base );                                 
                                                                      
  if ( endptr )                                                       
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    cea8:	0a000005 	beq	cec4 <rtems_string_to_unsigned_long_long+0x80>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    ceac:	eb0007dd 	bl	ee28 <__errno>                                 
    ceb0:	e5903000 	ldr	r3, [r0]                                      
    ceb4:	e3530022 	cmp	r3, #34	; 0x22                                
    ceb8:	0a000003 	beq	cecc <rtems_string_to_unsigned_long_long+0x88>
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
      return RTEMS_INVALID_NUMBER;                                    
                                                                      
  *n = result;                                                        
    cebc:	e8860300 	stm	r6, {r8, r9}                                  
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    cec0:	e3a00000 	mov	r0, #0                                        
}                                                                     
    cec4:	e28dd004 	add	sp, sp, #4                                    
    cec8:	e8bd83f0 	pop	{r4, r5, r6, r7, r8, r9, pc}                  
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
    cecc:	e3e02000 	mvn	r2, #0                                        
    ced0:	e0922008 	adds	r2, r2, r8                                   
    ced4:	e3e03000 	mvn	r3, #0                                        
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    ced8:	e3e00002 	mvn	r0, #2                                        
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
    cedc:	e0a33009 	adc	r3, r3, r9                                    
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    cee0:	e3e01000 	mvn	r1, #0                                        
    cee4:	e1510003 	cmp	r1, r3                                        
    cee8:	01500002 	cmpeq	r0, r2                                      
    (( result == 0 ) || ( result == ULONG_LONG_MAX )))                
      return RTEMS_INVALID_NUMBER;                                    
    ceec:	33a0000a 	movcc	r0, #10                                     
    *endptr = end;                                                    
                                                                      
  if ( end == s )                                                     
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( ( errno == ERANGE ) &&                                         
    cef0:	3afffff3 	bcc	cec4 <rtems_string_to_unsigned_long_long+0x80>
    cef4:	eafffff0 	b	cebc <rtems_string_to_unsigned_long_long+0x78>  <== NOT EXECUTED
                                                                      

00001e54 <rtems_tarfs_load>: int rtems_tarfs_load( const char *mountpoint, uint8_t *tar_image, size_t tar_size ) {
    1e54:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    1e58:	e24dde1d 	sub	sp, sp, #464	; 0x1d0                          
    1e5c:	e58d0014 	str	r0, [sp, #20]                                 
    1e60:	e58d2018 	str	r2, [sp, #24]                                 
    1e64:	e1a06001 	mov	r6, r1                                        
   IMFS_jnode_t                    *node;                             
   int rv = 0;                                                        
   int eval_flags = RTEMS_FS_FOLLOW_LINK;                             
   rtems_filesystem_eval_path_context_t ctx;                          
   rtems_filesystem_location_info_t rootloc;                          
   rtems_filesystem_location_info_t *currentloc =                     
    1e68:	e3a02018 	mov	r2, #24                                       
    1e6c:	e1a01000 	mov	r1, r0                                        
    1e70:	e28d0d06 	add	r0, sp, #384	; 0x180                          
    1e74:	eb00080e 	bl	3eb4 <rtems_filesystem_eval_path_start>        
static inline void rtems_filesystem_eval_path_extract_currentloc(     
  rtems_filesystem_eval_path_context_t *ctx,                          
  rtems_filesystem_location_info_t *get                               
)                                                                     
{                                                                     
  rtems_filesystem_location_copy_and_detach(                          
    1e78:	e28d1f66 	add	r1, sp, #408	; 0x198                          
    1e7c:	e1a08000 	mov	r8, r0                                        
    1e80:	e28d0f6e 	add	r0, sp, #440	; 0x1b8                          
    1e84:	eb0008ce 	bl	41c4 <rtems_filesystem_location_copy_and_detach>
     &ctx,                                                            
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
     rootloc.mt_entry->ops != &IMFS_ops                               
    1e88:	e59d31cc 	ldr	r3, [sp, #460]	; 0x1cc                        
   rtems_filesystem_eval_path_set_flags(                              
     &ctx,                                                            
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
    1e8c:	e59f2228 	ldr	r2, [pc, #552]	; 20bc <rtems_tarfs_load+0x268>
     rootloc.mt_entry->ops != &IMFS_ops                               
    1e90:	e593300c 	ldr	r3, [r3, #12]                                 
   rtems_filesystem_eval_path_set_flags(                              
     &ctx,                                                            
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
    1e94:	e1530002 	cmp	r3, r2                                        
static inline void rtems_filesystem_eval_path_set_flags(              
  rtems_filesystem_eval_path_context_t *ctx,                          
  int flags                                                           
)                                                                     
{                                                                     
  ctx->flags = flags;                                                 
    1e98:	e3a02060 	mov	r2, #96	; 0x60                                
    1e9c:	e58d2190 	str	r2, [sp, #400]	; 0x190                        
    1ea0:	0a000003 	beq	1eb4 <rtems_tarfs_load+0x60>                  
     rootloc.mt_entry->ops != &IMFS_ops                               
       && rootloc.mt_entry->ops != &fifoIMFS_ops                      
    1ea4:	e59f2214 	ldr	r2, [pc, #532]	; 20c0 <rtems_tarfs_load+0x26c>
    1ea8:	e1530002 	cmp	r3, r2                                        
   ) {                                                                
     rv = -1;                                                         
    1eac:	13e04000 	mvnne	r4, #0                                      
     RTEMS_FS_MAKE | RTEMS_FS_EXCLUSIVE                               
   );                                                                 
                                                                      
   if (                                                               
     rootloc.mt_entry->ops != &IMFS_ops                               
       && rootloc.mt_entry->ops != &fifoIMFS_ops                      
    1eb0:	1a00003d 	bne	1fac <rtems_tarfs_load+0x158>                 
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
    1eb4:	e59d2018 	ldr	r2, [sp, #24]                                 
    1eb8:	e3520c02 	cmp	r2, #512	; 0x200                              
    1ebc:	3a000039 	bcc	1fa8 <rtems_tarfs_load+0x154>                 
    1ec0:	e3a0a000 	mov	sl, #0                                        
      break;                                                          
                                                                      
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    1ec4:	e086a00a 	add	sl, r6, sl                                    
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
    1ec8:	e28a0c01 	add	r0, sl, #256	; 0x100                          
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
    1ecc:	e3a03c02 	mov	r3, #512	; 0x200                              
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
    1ed0:	e2800001 	add	r0, r0, #1                                    
    1ed4:	e59f11e8 	ldr	r1, [pc, #488]	; 20c4 <rtems_tarfs_load+0x270>
    1ed8:	e3a02005 	mov	r2, #5                                        
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
    1edc:	e58d300c 	str	r3, [sp, #12]                                 
    1ee0:	e58d3010 	str	r3, [sp, #16]                                 
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
    1ee4:	eb003ebb 	bl	119d8 <strncmp>                                
    1ee8:	e2504000 	subs	r4, r0, #0                                   
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    1eec:	e28d5f47 	add	r5, sp, #284	; 0x11c                          
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
    1ef0:	1a00002c 	bne	1fa8 <rtems_tarfs_load+0x154>                 
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    1ef4:	e3a02063 	mov	r2, #99	; 0x63                                
    1ef8:	e1a0100a 	mov	r1, sl                                        
    1efc:	e1a00005 	mov	r0, r5                                        
    1f00:	eb003f04 	bl	11b18 <strncpy>                                
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
    1f04:	e3a01008 	mov	r1, #8                                        
    1f08:	e28a0064 	add	r0, sl, #100	; 0x64                           
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
      break;                                                          
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
    1f0c:	e5cd417f 	strb	r4, [sp, #383]	; 0x17f                       
                                                                      
    linkflag   = hdr_ptr[156];                                        
    1f10:	e5da909c 	ldrb	r9, [sl, #156]	; 0x9c                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
    1f14:	eb00215f 	bl	a498 <_rtems_octal2ulong>                      
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
    1f18:	e3a0100c 	mov	r1, #12                                       
                                                                      
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
    1f1c:	e1a0b000 	mov	fp, r0                                        
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
    1f20:	e28a007c 	add	r0, sl, #124	; 0x7c                           
    1f24:	eb00215b 	bl	a498 <_rtems_octal2ulong>                      
    hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);                
    1f28:	e3a01008 	mov	r1, #8                                        
    strncpy(filename, hdr_ptr, MAX_NAME_FIELD_SIZE);                  
    filename[MAX_NAME_FIELD_SIZE] = '\0';                             
                                                                      
    linkflag   = hdr_ptr[156];                                        
    file_mode  = _rtems_octal2ulong(&hdr_ptr[100], 8);                
    file_size  = _rtems_octal2ulong(&hdr_ptr[124], 12);               
    1f2c:	e1a07000 	mov	r7, r0                                        
    hdr_chksum = _rtems_octal2ulong(&hdr_ptr[148], 8);                
    1f30:	e28a0094 	add	r0, sl, #148	; 0x94                           
    1f34:	eb002157 	bl	a498 <_rtems_octal2ulong>                      
    1f38:	e1a03000 	mov	r3, r0                                        
                                                                      
    if (_rtems_tar_header_checksum(hdr_ptr) != hdr_chksum)            
    1f3c:	e1a0000a 	mov	r0, sl                                        
    1f40:	e58d3008 	str	r3, [sp, #8]                                  
    1f44:	eb002270 	bl	a90c <_rtems_tar_header_checksum>              
    1f48:	e59d3008 	ldr	r3, [sp, #8]                                  
    1f4c:	e1500003 	cmp	r0, r3                                        
    1f50:	1a000015 	bne	1fac <rtems_tarfs_load+0x158>                 
     * Generate an IMFS node depending on the file type.              
     * - For directories, just create directories as usual.  IMFS     
     *   will take care of the rest.                                  
     * - For files, create a file node with special tarfs properties. 
     */                                                               
    if (linkflag == DIRTYPE) {                                        
    1f54:	e3590035 	cmp	r9, #53	; 0x35                                
    1f58:	0a00001a 	beq	1fc8 <rtems_tarfs_load+0x174>                 
      mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);              
    }                                                                 
    /*                                                                
     * Create a LINEAR_FILE node                                      
     */                                                               
    else if (linkflag == REGTYPE) {                                   
    1f5c:	e3590030 	cmp	r9, #48	; 0x30                                
    1f60:	0a00002e 	beq	2020 <rtems_tarfs_load+0x1cc>                 
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
    1f64:	e59d2010 	ldr	r2, [sp, #16]                                 
    1f68:	e59d3018 	ldr	r3, [sp, #24]                                 
    1f6c:	e2822c02 	add	r2, r2, #512	; 0x200                          
    1f70:	e1520003 	cmp	r2, r3                                        
    1f74:	e58d200c 	str	r2, [sp, #12]                                 
    1f78:	8a00000a 	bhi	1fa8 <rtems_tarfs_load+0x154>                 
    1f7c:	e28d200c 	add	r2, sp, #12                                   
    1f80:	e8920404 	ldm	r2, {r2, sl}                                  
      break;                                                          
                                                                      
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    1f84:	e086a00a 	add	sl, r6, sl                                    
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
    1f88:	e28a0c01 	add	r0, sl, #256	; 0x100                          
   /*                                                                 
    * Create an IMFS node structure pointing to tar image memory.     
    */                                                                
   offset = 0;                                                        
   while ( rv == 0 ) {                                                
    if (offset + 512 > tar_size)                                      
    1f8c:	e58d2010 	str	r2, [sp, #16]                                 
    /*                                                                
     * Read a header.                                                 
     */                                                               
    hdr_ptr = (char *) &tar_image[offset];                            
    offset += 512;                                                    
    if (strncmp(&hdr_ptr[257], "ustar", 5))                           
    1f90:	e2800001 	add	r0, r0, #1                                    
    1f94:	e59f1128 	ldr	r1, [pc, #296]	; 20c4 <rtems_tarfs_load+0x270>
    1f98:	e3a02005 	mov	r2, #5                                        
    1f9c:	eb003e8d 	bl	119d8 <strncmp>                                
    1fa0:	e2504000 	subs	r4, r0, #0                                   
    1fa4:	0affffd2 	beq	1ef4 <rtems_tarfs_load+0xa0>                  
    1fa8:	e3a04000 	mov	r4, #0                                        
      nblocks = (((file_size) + 511) & ~511) / 512;                   
      offset += 512 * nblocks;                                        
    }                                                                 
  }                                                                   
                                                                      
  rtems_filesystem_location_free( &rootloc );                         
    1fac:	e28d0f6e 	add	r0, sp, #440	; 0x1b8                          
    1fb0:	eb000242 	bl	28c0 <rtems_filesystem_location_free>          
  rtems_filesystem_eval_path_cleanup( &ctx );                         
    1fb4:	e28d0d06 	add	r0, sp, #384	; 0x180                          
    1fb8:	eb0007c7 	bl	3edc <rtems_filesystem_eval_path_cleanup>      
                                                                      
  return rv;                                                          
}                                                                     
    1fbc:	e1a00004 	mov	r0, r4                                        
    1fc0:	e28dde1d 	add	sp, sp, #464	; 0x1d0                          
    1fc4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     * - For directories, just create directories as usual.  IMFS     
     *   will take care of the rest.                                  
     * - For files, create a file node with special tarfs properties. 
     */                                                               
    if (linkflag == DIRTYPE) {                                        
      strcpy(full_filename, mountpoint);                              
    1fc8:	e59d1014 	ldr	r1, [sp, #20]                                 
    1fcc:	e28d001c 	add	r0, sp, #28                                   
    1fd0:	eb003c94 	bl	11228 <strcpy>                                 
      if (full_filename[strlen(full_filename)-1] != '/')              
    1fd4:	e28d001c 	add	r0, sp, #28                                   
    1fd8:	eb003e66 	bl	11978 <strlen>                                 
    1fdc:	e28d2e1d 	add	r2, sp, #464	; 0x1d0                          
    1fe0:	e0823000 	add	r3, r2, r0                                    
    1fe4:	e55331b5 	ldrb	r3, [r3, #-437]	; 0x1b5                      
    1fe8:	e353002f 	cmp	r3, #47	; 0x2f                                
    1fec:	0a000004 	beq	2004 <rtems_tarfs_load+0x1b0>                 
        strcat(full_filename, "/");                                   
    1ff0:	e28d301c 	add	r3, sp, #28                                   <== NOT EXECUTED
    1ff4:	e0830000 	add	r0, r3, r0                                    <== NOT EXECUTED
    1ff8:	e59f10c8 	ldr	r1, [pc, #200]	; 20c8 <rtems_tarfs_load+0x274><== NOT EXECUTED
    1ffc:	e3a02002 	mov	r2, #2                                        <== NOT EXECUTED
    2000:	eb00396b 	bl	105b4 <memcpy>                                 <== NOT EXECUTED
      strcat(full_filename, filename);                                
    2004:	e1a01005 	mov	r1, r5                                        
    2008:	e28d001c 	add	r0, sp, #28                                   
    200c:	eb003bd3 	bl	10f60 <strcat>                                 
      mkdir(full_filename, S_IRWXU | S_IRWXG | S_IRWXO);              
    2010:	e28d001c 	add	r0, sp, #28                                   
    2014:	e59f10b0 	ldr	r1, [pc, #176]	; 20cc <rtems_tarfs_load+0x278>
    2018:	eb0003ae 	bl	2ed8 <mkdir>                                   
    201c:	eaffffd0 	b	1f64 <rtems_tarfs_load+0x110>                   
    }                                                                 
    /*                                                                
     * Create a LINEAR_FILE node                                      
     */                                                               
    else if (linkflag == REGTYPE) {                                   
      rtems_filesystem_location_free( currentloc );                   
    2020:	e1a00008 	mov	r0, r8                                        
    2024:	eb000225 	bl	28c0 <rtems_filesystem_location_free>          
      rtems_filesystem_location_clone( currentloc, &rootloc );        
    2028:	e28d1f6e 	add	r1, sp, #440	; 0x1b8                          
    202c:	e1a00008 	mov	r0, r8                                        
    2030:	eb000169 	bl	25dc <rtems_filesystem_location_clone>         
      rtems_filesystem_eval_path_set_path(                            
    2034:	e1a00005 	mov	r0, r5                                        
    2038:	eb003e4e 	bl	11978 <strlen>                                 
  const char *path,                                                   
  size_t pathlen                                                      
)                                                                     
{                                                                     
  ctx->path = path;                                                   
  ctx->pathlen = pathlen;                                             
    203c:	e58d0184 	str	r0, [sp, #388]	; 0x184                        
        &ctx,                                                         
        filename,                                                     
        strlen( filename )                                            
      );                                                              
      rtems_filesystem_eval_path_continue( &ctx );                    
    2040:	e28d0d06 	add	r0, sp, #384	; 0x180                          
  rtems_filesystem_eval_path_context_t *ctx,                          
  const char *path,                                                   
  size_t pathlen                                                      
)                                                                     
{                                                                     
  ctx->path = path;                                                   
    2044:	e58d5180 	str	r5, [sp, #384]	; 0x180                        
    2048:	eb000716 	bl	3ca8 <rtems_filesystem_eval_path_continue>     
                                                                      
      if ( !rtems_filesystem_location_is_null( currentloc ) ) {       
    204c:	e5983010 	ldr	r3, [r8, #16]                                 
    2050:	e59f2078 	ldr	r2, [pc, #120]	; 20d0 <rtems_tarfs_load+0x27c>
    2054:	e1530002 	cmp	r3, r2                                        
    2058:	0a000010 	beq	20a0 <rtems_tarfs_load+0x24c>                 
  size_t namelen,                                                     
  mode_t mode,                                                        
  const IMFS_types_union *info                                        
)                                                                     
{                                                                     
  const IMFS_fs_info_t *fs_info =                                     
    205c:	e5983014 	ldr	r3, [r8, #20]                                 
        node = IMFS_create_node(                                      
          currentloc,                                                 
          IMFS_LINEAR_FILE,                                           
          rtems_filesystem_eval_path_get_token( &ctx ),               
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
    2060:	e1a0cb8b 	lsl	ip, fp, #23                                   
    (const IMFS_fs_info_t *) parentloc->mt_entry->fs_info;            
                                                                      
  return IMFS_create_node_with_control(                               
    2064:	e5933008 	ldr	r3, [r3, #8]                                  
    2068:	e1a0cbac 	lsr	ip, ip, #23                                   
    206c:	e28d2f62 	add	r2, sp, #392	; 0x188                          
    2070:	e593101c 	ldr	r1, [r3, #28]                                 
        strlen( filename )                                            
      );                                                              
      rtems_filesystem_eval_path_continue( &ctx );                    
                                                                      
      if ( !rtems_filesystem_location_is_null( currentloc ) ) {       
        node = IMFS_create_node(                                      
    2074:	e38cc902 	orr	ip, ip, #32768	; 0x8000                       
    2078:	e892000c 	ldm	r2, {r2, r3}                                  
    207c:	e1a00008 	mov	r0, r8                                        
    2080:	e58dc000 	str	ip, [sp]                                      
    2084:	e58d4004 	str	r4, [sp, #4]                                  
    2088:	eb0022bb 	bl	ab7c <IMFS_create_node_with_control>           
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
          NULL                                                        
        );                                                            
        node->info.linearfile.size   = file_size;                     
        node->info.linearfile.direct = &tar_image[offset];            
    208c:	e59d200c 	ldr	r2, [sp, #12]                                 
    2090:	e0863002 	add	r3, r6, r2                                    
          rtems_filesystem_eval_path_get_token( &ctx ),               
          rtems_filesystem_eval_path_get_tokenlen( &ctx ),            
          (file_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) | S_IFREG,      
          NULL                                                        
        );                                                            
        node->info.linearfile.size   = file_size;                     
    2094:	e5807050 	str	r7, [r0, #80]	; 0x50                          
    2098:	e5804054 	str	r4, [r0, #84]	; 0x54                          
        node->info.linearfile.direct = &tar_image[offset];            
    209c:	e5803058 	str	r3, [r0, #88]	; 0x58                          
      }                                                               
                                                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
    20a0:	e2877f7f 	add	r7, r7, #508	; 0x1fc                          
    20a4:	e2877003 	add	r7, r7, #3                                    
      offset += 512 * nblocks;                                        
    20a8:	e59d300c 	ldr	r3, [sp, #12]                                 
        );                                                            
        node->info.linearfile.size   = file_size;                     
        node->info.linearfile.direct = &tar_image[offset];            
      }                                                               
                                                                      
      nblocks = (((file_size) + 511) & ~511) / 512;                   
    20ac:	e1a074a7 	lsr	r7, r7, #9                                    
      offset += 512 * nblocks;                                        
    20b0:	e0837487 	add	r7, r3, r7, lsl #9                            
    20b4:	e58d7010 	str	r7, [sp, #16]                                 
    20b8:	eaffffa9 	b	1f64 <rtems_tarfs_load+0x110>                   
                                                                      

0000f9c4 <rtems_task_mode>: rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) {
    f9c4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  ASR_Information    *asr;                                            
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    f9c8:	e2525000 	subs	r5, r2, #0                                   
rtems_status_code rtems_task_mode(                                    
  rtems_mode  mode_set,                                               
  rtems_mode  mask,                                                   
  rtems_mode *previous_mode_set                                       
)                                                                     
{                                                                     
    f9cc:	e1a04000 	mov	r4, r0                                        
    f9d0:	e1a06001 	mov	r6, r1                                        
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
    f9d4:	03a00009 	moveq	r0, #9                                      
  ASR_Information    *asr;                                            
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    f9d8:	08bd8ff0 	popeq	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
    f9dc:	e59f9148 	ldr	r9, [pc, #328]	; fb2c <rtems_task_mode+0x168> 
    f9e0:	e5997008 	ldr	r7, [r9, #8]                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
    f9e4:	e5d7a070 	ldrb	sl, [r7, #112]	; 0x70                        
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
    f9e8:	e59780ec 	ldr	r8, [r7, #236]	; 0xec                         
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    f9ec:	e5973078 	ldr	r3, [r7, #120]	; 0x78                         
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
    f9f0:	e35a0000 	cmp	sl, #0                                        
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
    f9f4:	e5d8b008 	ldrb	fp, [r8, #8]                                 
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
    f9f8:	03a0ac01 	moveq	sl, #256	; 0x100                            
    f9fc:	13a0a000 	movne	sl, #0                                      
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    fa00:	e3530000 	cmp	r3, #0                                        
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
    fa04:	138aac02 	orrne	sl, sl, #512	; 0x200                        
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
    fa08:	e35b0000 	cmp	fp, #0                                        
    fa0c:	03a0bb01 	moveq	fp, #1024	; 0x400                           
    fa10:	13a0b000 	movne	fp, #0                                      
  old_mode |= _ISR_Get_level();                                       
    fa14:	ebffeed4 	bl	b56c <_CPU_ISR_Get_level>                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
    fa18:	e18bb000 	orr	fp, fp, r0                                    
  old_mode |= _ISR_Get_level();                                       
    fa1c:	e18ba00a 	orr	sl, fp, sl                                    
  *previous_mode_set = old_mode;                                      
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
    fa20:	e3160c01 	tst	r6, #256	; 0x100                              
    old_mode |= RTEMS_TIMESLICE;                                      
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
  old_mode |= _ISR_Get_level();                                       
                                                                      
  *previous_mode_set = old_mode;                                      
    fa24:	e585a000 	str	sl, [r5]                                      
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
    fa28:	0a000003 	beq	fa3c <rtems_task_mode+0x78>                   
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
    fa2c:	e3140c01 	tst	r4, #256	; 0x100                              
    fa30:	13a03000 	movne	r3, #0                                      
    fa34:	03a03001 	moveq	r3, #1                                      
    fa38:	e5c73070 	strb	r3, [r7, #112]	; 0x70                        
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    fa3c:	e3160c02 	tst	r6, #512	; 0x200                              
    fa40:	1a000028 	bne	fae8 <rtems_task_mode+0x124>                  
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
    fa44:	e3160080 	tst	r6, #128	; 0x80                               
    fa48:	1a00002f 	bne	fb0c <rtems_task_mode+0x148>                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    fa4c:	e2166b01 	ands	r6, r6, #1024	; 0x400                        
    fa50:	0a000012 	beq	faa0 <rtems_task_mode+0xdc>                   
#include <rtems/score/tod.h>                                          
#include <rtems/score/wkspace.h>                                      
#include <rtems/score/apiext.h>                                       
#include <rtems/score/sysstate.h>                                     
                                                                      
rtems_status_code rtems_task_mode(                                    
    fa54:	e3140b01 	tst	r4, #1024	; 0x400                             
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
    fa58:	e5d82008 	ldrb	r2, [r8, #8]                                 
#include <rtems/score/tod.h>                                          
#include <rtems/score/wkspace.h>                                      
#include <rtems/score/apiext.h>                                       
#include <rtems/score/sysstate.h>                                     
                                                                      
rtems_status_code rtems_task_mode(                                    
    fa5c:	13a03000 	movne	r3, #0                                      
    fa60:	03a03001 	moveq	r3, #1                                      
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
    fa64:	e1520003 	cmp	r2, r3                                        
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
    fa68:	03a06000 	moveq	r6, #0                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
    fa6c:	0a00000b 	beq	faa0 <rtems_task_mode+0xdc>                   
      asr->is_enabled = is_asr_enabled;                               
    fa70:	e5c83008 	strb	r3, [r8, #8]                                 
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    fa74:	e10f3000 	mrs	r3, CPSR                                      
    fa78:	e3832080 	orr	r2, r3, #128	; 0x80                           
    fa7c:	e129f002 	msr	CPSR_fc, r2                                   
{                                                                     
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
    fa80:	e5981018 	ldr	r1, [r8, #24]                                 
    information->signals_pending = information->signals_posted;       
    fa84:	e5982014 	ldr	r2, [r8, #20]                                 
    information->signals_posted  = _signals;                          
    fa88:	e5881014 	str	r1, [r8, #20]                                 
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
    _signals                     = information->signals_pending;      
    information->signals_pending = information->signals_posted;       
    fa8c:	e5882018 	str	r2, [r8, #24]                                 
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    fa90:	e129f003 	msr	CPSR_fc, r3                                   
      _ASR_Swap_signals( asr );                                       
      if ( _ASR_Are_signals_pending( asr ) ) {                        
    fa94:	e5986014 	ldr	r6, [r8, #20]                                 
    fa98:	e3560000 	cmp	r6, #0                                        
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
    fa9c:	13a06001 	movne	r6, #1                                      
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
    faa0:	e59f3088 	ldr	r3, [pc, #136]	; fb30 <rtems_task_mode+0x16c> 
    faa4:	e5933000 	ldr	r3, [r3]                                      
    faa8:	e3530003 	cmp	r3, #3                                        
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    faac:	13a00000 	movne	r0, #0                                      
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
    fab0:	18bd8ff0 	popne	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
                                                                      
  if ( are_signals_pending ||                                         
    fab4:	e3560000 	cmp	r6, #0                                        
  bool are_signals_pending                                            
)                                                                     
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
    fab8:	e5993008 	ldr	r3, [r9, #8]                                  
                                                                      
  if ( are_signals_pending ||                                         
    fabc:	1a000015 	bne	fb18 <rtems_task_mode+0x154>                  
    fac0:	e59f2064 	ldr	r2, [pc, #100]	; fb2c <rtems_task_mode+0x168> 
    fac4:	e592200c 	ldr	r2, [r2, #12]                                 
    fac8:	e1530002 	cmp	r3, r2                                        
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    facc:	01a00006 	moveq	r0, r6                                      
    fad0:	08bd8ff0 	popeq	{r4, r5, r6, r7, r8, r9, sl, fp, pc}        
       (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
    fad4:	e5d33070 	ldrb	r3, [r3, #112]	; 0x70                        
    fad8:	e3530000 	cmp	r3, #0                                        
    fadc:	1a00000d 	bne	fb18 <rtems_task_mode+0x154>                  
    fae0:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
}                                                                     
    fae4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
    fae8:	e2143c02 	ands	r3, r4, #512	; 0x200                         
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
    faec:	159f3040 	ldrne	r3, [pc, #64]	; fb34 <rtems_task_mode+0x170>
    faf0:	15933000 	ldrne	r3, [r3]                                    
  if ( mask & RTEMS_PREEMPT_MASK )                                    
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
    if ( _Modes_Is_timeslice(mode_set) ) {                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
    faf4:	13a02001 	movne	r2, #1                                      
    faf8:	15872078 	strne	r2, [r7, #120]	; 0x78                       
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
    fafc:	15873074 	strne	r3, [r7, #116]	; 0x74                       
    } else                                                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 
    fb00:	05873078 	streq	r3, [r7, #120]	; 0x78                       
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
    fb04:	e3160080 	tst	r6, #128	; 0x80                               
    fb08:	0affffcf 	beq	fa4c <rtems_task_mode+0x88>                   
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
    fb0c:	e2040080 	and	r0, r4, #128	; 0x80                           
    fb10:	ebffee90 	bl	b558 <_CPU_ISR_Set_level>                      
    fb14:	eaffffcc 	b	fa4c <rtems_task_mode+0x88>                     
    _Thread_Dispatch_necessary = true;                                
    fb18:	e3a03001 	mov	r3, #1                                        
    fb1c:	e5c93004 	strb	r3, [r9, #4]                                 
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
    fb20:	eb000287 	bl	10544 <_Thread_Dispatch>                       
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
    fb24:	e3a00000 	mov	r0, #0                                        
    fb28:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      

0000457c <rtems_termios_close>: rtems_interrupt_enable (level); } rtems_status_code rtems_termios_close (void *arg) {
    457c:	e92d4070 	push	{r4, r5, r6, lr}                             
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
    4580:	e59f51b0 	ldr	r5, [pc, #432]	; 4738 <rtems_termios_close+0x1bc>
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
    4584:	e5903000 	ldr	r3, [r0]                                      
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
    4588:	e3a01000 	mov	r1, #0                                        
  rtems_interrupt_enable (level);                                     
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
    458c:	e1a06000 	mov	r6, r0                                        
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
    4590:	e1a02001 	mov	r2, r1                                        
    4594:	e5950000 	ldr	r0, [r5]                                      
                                                                      
rtems_status_code                                                     
rtems_termios_close (void *arg)                                       
{                                                                     
  rtems_libio_open_close_args_t *args = arg;                          
  struct rtems_termios_tty *tty = args->iop->data1;                   
    4598:	e593402c 	ldr	r4, [r3, #44]	; 0x2c                          
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain(                                        
    459c:	eb000814 	bl	65f4 <rtems_semaphore_obtain>                  
    rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);            
  if (sc != RTEMS_SUCCESSFUL)                                         
    45a0:	e3500000 	cmp	r0, #0                                        
    45a4:	1a00005f 	bne	4728 <rtems_termios_close+0x1ac>              
    rtems_fatal_error_occurred (sc);                                  
  if (--tty->refcount == 0) {                                         
    45a8:	e5943008 	ldr	r3, [r4, #8]                                  
    45ac:	e2433001 	sub	r3, r3, #1                                    
    45b0:	e3530000 	cmp	r3, #0                                        
    45b4:	e5843008 	str	r3, [r4, #8]                                  
    45b8:	1a00002f 	bne	467c <rtems_termios_close+0x100>              
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
    45bc:	e59420cc 	ldr	r2, [r4, #204]	; 0xcc                         
    45c0:	e59f3174 	ldr	r3, [pc, #372]	; 473c <rtems_termios_close+0x1c0>
    45c4:	e0833282 	add	r3, r3, r2, lsl #5                            
    45c8:	e5931004 	ldr	r1, [r3, #4]                                  
    45cc:	e3510000 	cmp	r1, #0                                        
    45d0:	0a00003d 	beq	46cc <rtems_termios_close+0x150>              
      /*                                                              
       * call discipline-specific close                               
       */                                                             
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    45d4:	e1a00004 	mov	r0, r4                                        
    45d8:	e1a0e00f 	mov	lr, pc                                        
    45dc:	e12fff11 	bx	r1                                             
      }                                                               
      drainOutput (tty);                                              
      rtems_semaphore_release (tty->osem);                            
    }                                                                 
                                                                      
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
    45e0:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    45e4:	e3530002 	cmp	r3, #2                                        
    45e8:	0a000044 	beq	4700 <rtems_termios_close+0x184>              
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
    if (tty->device.lastClose)                                        
    45ec:	e594309c 	ldr	r3, [r4, #156]	; 0x9c                         
    45f0:	e3530000 	cmp	r3, #0                                        
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
    45f4:	1284000c 	addne	r0, r4, #12                                 
    45f8:	18900003 	ldmne	r0, {r0, r1}                                
    45fc:	11a02006 	movne	r2, r6                                      
    4600:	11a0e00f 	movne	lr, pc                                      
    4604:	112fff13 	bxne	r3                                           
    if (tty->forw == NULL) {                                          
    4608:	e5943000 	ldr	r3, [r4]                                      
    460c:	e3530000 	cmp	r3, #0                                        
      rtems_termios_ttyTail = tty->back;                              
    4610:	e5942004 	ldr	r2, [r4, #4]                                  
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
    if (tty->device.lastClose)                                        
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
    if (tty->forw == NULL) {                                          
    4614:	0a000025 	beq	46b0 <rtems_termios_close+0x134>              
      rtems_termios_ttyTail = tty->back;                              
      if ( rtems_termios_ttyTail != NULL ) {                          
        rtems_termios_ttyTail->forw = NULL;                           
      }                                                               
    } else {                                                          
      tty->forw->back = tty->back;                                    
    4618:	e5832004 	str	r2, [r3, #4]                                  
    461c:	e5942004 	ldr	r2, [r4, #4]                                  
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
    4620:	e3520000 	cmp	r2, #0                                        
    4624:	0a00001b 	beq	4698 <rtems_termios_close+0x11c>              
      rtems_termios_ttyHead = tty->forw;                              
      if ( rtems_termios_ttyHead != NULL ) {                          
        rtems_termios_ttyHead->back = NULL;                           
      }                                                               
    } else {                                                          
      tty->back->forw = tty->forw;                                    
    4628:	e5823000 	str	r3, [r2]                                      <== NOT EXECUTED
    }                                                                 
                                                                      
    rtems_semaphore_delete (tty->isem);                               
    462c:	e5940014 	ldr	r0, [r4, #20]                                 
    4630:	eb0007c6 	bl	6550 <rtems_semaphore_delete>                  
    rtems_semaphore_delete (tty->osem);                               
    4634:	e5940018 	ldr	r0, [r4, #24]                                 
    4638:	eb0007c4 	bl	6550 <rtems_semaphore_delete>                  
    rtems_semaphore_delete (tty->rawOutBuf.Semaphore);                
    463c:	e594008c 	ldr	r0, [r4, #140]	; 0x8c                         
    4640:	eb0007c2 	bl	6550 <rtems_semaphore_delete>                  
    if ((tty->device.pollRead == NULL) ||                             
    4644:	e59430a0 	ldr	r3, [r4, #160]	; 0xa0                         
    4648:	e3530000 	cmp	r3, #0                                        
    464c:	0a00000e 	beq	468c <rtems_termios_close+0x110>              
    4650:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    4654:	e3530002 	cmp	r3, #2                                        
    4658:	0a00000b 	beq	468c <rtems_termios_close+0x110>              
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))    
      rtems_semaphore_delete (tty->rawInBuf.Semaphore);               
    free (tty->rawInBuf.theBuf);                                      
    465c:	e5940058 	ldr	r0, [r4, #88]	; 0x58                          
    4660:	ebfff7ab 	bl	2514 <free>                                    
    free (tty->rawOutBuf.theBuf);                                     
    4664:	e594007c 	ldr	r0, [r4, #124]	; 0x7c                         
    4668:	ebfff7a9 	bl	2514 <free>                                    
    free (tty->cbuf);                                                 
    466c:	e594001c 	ldr	r0, [r4, #28]                                 
    4670:	ebfff7a7 	bl	2514 <free>                                    
    free (tty);                                                       
    4674:	e1a00004 	mov	r0, r4                                        
    4678:	ebfff7a5 	bl	2514 <free>                                    
  }                                                                   
  rtems_semaphore_release (rtems_termios_ttyMutex);                   
    467c:	e5950000 	ldr	r0, [r5]                                      
    4680:	eb000824 	bl	6718 <rtems_semaphore_release>                 
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    4684:	e3a00000 	mov	r0, #0                                        
    4688:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    rtems_semaphore_delete (tty->isem);                               
    rtems_semaphore_delete (tty->osem);                               
    rtems_semaphore_delete (tty->rawOutBuf.Semaphore);                
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN))    
      rtems_semaphore_delete (tty->rawInBuf.Semaphore);               
    468c:	e5940068 	ldr	r0, [r4, #104]	; 0x68                         
    4690:	eb0007ae 	bl	6550 <rtems_semaphore_delete>                  
    4694:	eafffff0 	b	465c <rtems_termios_close+0xe0>                 
    } else {                                                          
      tty->forw->back = tty->back;                                    
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
      rtems_termios_ttyHead = tty->forw;                              
    4698:	e59f20a0 	ldr	r2, [pc, #160]	; 4740 <rtems_termios_close+0x1c4>
      if ( rtems_termios_ttyHead != NULL ) {                          
    469c:	e3530000 	cmp	r3, #0                                        
    } else {                                                          
      tty->forw->back = tty->back;                                    
    }                                                                 
                                                                      
    if (tty->back == NULL) {                                          
      rtems_termios_ttyHead = tty->forw;                              
    46a0:	e5823000 	str	r3, [r2]                                      
      if ( rtems_termios_ttyHead != NULL ) {                          
        rtems_termios_ttyHead->back = NULL;                           
    46a4:	13a02000 	movne	r2, #0                                      
    46a8:	15832004 	strne	r2, [r3, #4]                                
    46ac:	eaffffde 	b	462c <rtems_termios_close+0xb0>                 
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
    if (tty->device.lastClose)                                        
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
    if (tty->forw == NULL) {                                          
      rtems_termios_ttyTail = tty->back;                              
    46b0:	e59f108c 	ldr	r1, [pc, #140]	; 4744 <rtems_termios_close+0x1c8>
      if ( rtems_termios_ttyTail != NULL ) {                          
    46b4:	e3520000 	cmp	r2, #0                                        
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
    if (tty->device.lastClose)                                        
       (*tty->device.lastClose)(tty->major, tty->minor, arg);         
    if (tty->forw == NULL) {                                          
      rtems_termios_ttyTail = tty->back;                              
    46b8:	e5812000 	str	r2, [r1]                                      
      if ( rtems_termios_ttyTail != NULL ) {                          
    46bc:	0afffff5 	beq	4698 <rtems_termios_close+0x11c>              
        rtems_termios_ttyTail->forw = NULL;                           
    46c0:	e5823000 	str	r3, [r2]                                      <== NOT EXECUTED
    46c4:	e5943000 	ldr	r3, [r4]                                      <== NOT EXECUTED
    46c8:	eaffffd6 	b	4628 <rtems_termios_close+0xac>                 <== NOT EXECUTED
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    } else {                                                          
      /*                                                              
       * default: just flush output buffer                            
       */                                                             
      sc = rtems_semaphore_obtain(tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    46cc:	e5940018 	ldr	r0, [r4, #24]                                 
    46d0:	e1a02001 	mov	r2, r1                                        
    46d4:	eb0007c6 	bl	65f4 <rtems_semaphore_obtain>                  
      if (sc != RTEMS_SUCCESSFUL) {                                   
    46d8:	e3500000 	cmp	r0, #0                                        
    46dc:	1a000011 	bne	4728 <rtems_termios_close+0x1ac>              
drainOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    46e0:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    46e4:	e3530000 	cmp	r3, #0                                        
    46e8:	1a00000f 	bne	472c <rtems_termios_close+0x1b0>              
      sc = rtems_semaphore_obtain(tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
      if (sc != RTEMS_SUCCESSFUL) {                                   
        rtems_fatal_error_occurred (sc);                              
      }                                                               
      drainOutput (tty);                                              
      rtems_semaphore_release (tty->osem);                            
    46ec:	e5940018 	ldr	r0, [r4, #24]                                 
    46f0:	eb000808 	bl	6718 <rtems_semaphore_release>                 
    }                                                                 
                                                                      
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
    46f4:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    46f8:	e3530002 	cmp	r3, #2                                        
    46fc:	1affffba 	bne	45ec <rtems_termios_close+0x70>               
      /*                                                              
       * send "terminate" to I/O tasks                                
       */                                                             
      sc = rtems_event_send( tty->rxTaskId, TERMIOS_RX_TERMINATE_EVENT );
    4700:	e59400c4 	ldr	r0, [r4, #196]	; 0xc4                         
    4704:	e3a01001 	mov	r1, #1                                        
    4708:	eb00069f 	bl	618c <rtems_event_send>                        
      if (sc != RTEMS_SUCCESSFUL)                                     
    470c:	e3500000 	cmp	r0, #0                                        
    4710:	1a000004 	bne	4728 <rtems_termios_close+0x1ac>              
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_event_send( tty->txTaskId, TERMIOS_TX_TERMINATE_EVENT );
    4714:	e59400c8 	ldr	r0, [r4, #200]	; 0xc8                         
    4718:	e3a01001 	mov	r1, #1                                        
    471c:	eb00069a 	bl	618c <rtems_event_send>                        
      if (sc != RTEMS_SUCCESSFUL)                                     
    4720:	e3500000 	cmp	r0, #0                                        
    4724:	0affffb0 	beq	45ec <rtems_termios_close+0x70>               
        rtems_fatal_error_occurred (sc);                              
    4728:	eb00098b 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
drainOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    472c:	e1a00004 	mov	r0, r4                                        
    4730:	ebfffe5d 	bl	40ac <drainOutput.part.0>                      
    4734:	eaffffec 	b	46ec <rtems_termios_close+0x170>                
                                                                      

00005b10 <rtems_termios_dequeue_characters>: rtems_status_code sc; /* * sum up character count already sent */ tty->t_dqlen += len;
    5b10:	e590c090 	ldr	ip, [r0, #144]	; 0x90                         
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    5b14:	e59020b4 	ldr	r2, [r0, #180]	; 0xb4                         
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * sum up character count already sent                              
   */                                                                 
  tty->t_dqlen += len;                                                
    5b18:	e08c1001 	add	r1, ip, r1                                    
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    5b1c:	e3520002 	cmp	r2, #2                                        
 * for each transmitted character.                                    
 * It returns number of characters left to transmit                   
 */                                                                   
int                                                                   
rtems_termios_dequeue_characters (void *ttyp, int len)                
{                                                                     
    5b20:	e52de004 	push	{lr}		; (str lr, [sp, #-4]!)                 
  rtems_status_code sc;                                               
                                                                      
  /*                                                                  
   * sum up character count already sent                              
   */                                                                 
  tty->t_dqlen += len;                                                
    5b24:	e5801090 	str	r1, [r0, #144]	; 0x90                         
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    5b28:	0a00000c 	beq	5b60 <rtems_termios_dequeue_characters+0x50>  
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
    5b2c:	e59030cc 	ldr	r3, [r0, #204]	; 0xcc                         
    5b30:	e3530005 	cmp	r3, #5                                        
    5b34:	0a000001 	beq	5b40 <rtems_termios_dequeue_characters+0x30>  
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
}                                                                     
    5b38:	e49de004 	pop	{lr}		; (ldr lr, [sp], #4)                    
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
    5b3c:	eafff8c2 	b	3e4c <rtems_termios_refill_transmitter>         
                                                                      
  if (tty->t_line == PPPDISC ) {                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
    5b40:	e59f303c 	ldr	r3, [pc, #60]	; 5b84 <rtems_termios_dequeue_characters+0x74>
    5b44:	e59330b4 	ldr	r3, [r3, #180]	; 0xb4                         
    5b48:	e3530000 	cmp	r3, #0                                        
    5b4c:	0a00000a 	beq	5b7c <rtems_termios_dequeue_characters+0x6c>  
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    5b50:	e1a0e00f 	mov	lr, pc                                        
    5b54:	e12fff13 	bx	r3                                             
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
    5b58:	e3a00000 	mov	r0, #0                                        
    5b5c:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    /*                                                                
     * send wake up to transmitter task                               
     */                                                               
    sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);     
    5b60:	e59000c8 	ldr	r0, [r0, #200]	; 0xc8                         
    5b64:	e1a01002 	mov	r1, r2                                        
    5b68:	eb000187 	bl	618c <rtems_event_send>                        
    if (sc != RTEMS_SUCCESSFUL)                                       
    5b6c:	e2503000 	subs	r3, r0, #0                                   
      rtems_fatal_error_occurred (sc);                                
    return 0; /* nothing to output in IRQ... */                       
    5b70:	01a00003 	moveq	r0, r3                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {      
    /*                                                                
     * send wake up to transmitter task                               
     */                                                               
    sc = rtems_event_send(tty->txTaskId, TERMIOS_TX_START_EVENT);     
    if (sc != RTEMS_SUCCESSFUL)                                       
    5b74:	049df004 	popeq	{pc}		; (ldreq pc, [sp], #4)                
      rtems_fatal_error_occurred (sc);                                
    5b78:	eb000477 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    }                                                                 
    return 0; /* nothing to output in IRQ... */                       
    5b7c:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return rtems_termios_refill_transmitter(tty);                       
}                                                                     
    5b80:	e49df004 	pop	{pc}		; (ldr pc, [sp], #4)                    <== NOT EXECUTED
                                                                      

000057a8 <rtems_termios_enqueue_raw_characters>: * device receive interrupt handler. * Returns the number of characters dropped because of overflow. */ int rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len) {
    57a8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  char c;                                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    57ac:	e59030cc 	ldr	r3, [r0, #204]	; 0xcc                         
    57b0:	e59f72c8 	ldr	r7, [pc, #712]	; 5a80 <rtems_termios_enqueue_raw_characters+0x2d8>
    57b4:	e0873283 	add	r3, r7, r3, lsl #5                            
    57b8:	e5939010 	ldr	r9, [r3, #16]                                 
    57bc:	e3590000 	cmp	r9, #0                                        
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{                                                                     
    57c0:	e24dd008 	sub	sp, sp, #8                                    
    57c4:	e1a04000 	mov	r4, r0                                        
    57c8:	e1a05001 	mov	r5, r1                                        
  char c;                                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    57cc:	0a00001d 	beq	5848 <rtems_termios_enqueue_raw_characters+0xa0>
    while (len--) {                                                   
    57d0:	e3520000 	cmp	r2, #0                                        
    57d4:	0a00000a 	beq	5804 <rtems_termios_enqueue_raw_characters+0x5c>
    57d8:	e1a06002 	mov	r6, r2                                        
    57dc:	ea000002 	b	57ec <rtems_termios_enqueue_raw_characters+0x44>
    57e0:	e59430cc 	ldr	r3, [r4, #204]	; 0xcc                         
    57e4:	e0873283 	add	r3, r7, r3, lsl #5                            
    57e8:	e5939010 	ldr	r9, [r3, #16]                                 
      c = *buf++;                                                     
      rtems_termios_linesw[tty->t_line].l_rint(c,tty);                
    57ec:	e4d50001 	ldrb	r0, [r5], #1                                 
    57f0:	e1a01004 	mov	r1, r4                                        
    57f4:	e1a0e00f 	mov	lr, pc                                        
    57f8:	e12fff19 	bx	r9                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    while (len--) {                                                   
    57fc:	e2566001 	subs	r6, r6, #1                                   
    5800:	1afffff6 	bne	57e0 <rtems_termios_enqueue_raw_characters+0x38>
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
    5804:	e594a0e4 	ldr	sl, [r4, #228]	; 0xe4                         
    5808:	e35a0000 	cmp	sl, #0                                        
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
    580c:	13a0a000 	movne	sl, #0                                      
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
    5810:	1a000009 	bne	583c <rtems_termios_enqueue_raw_characters+0x94>
    5814:	e59430dc 	ldr	r3, [r4, #220]	; 0xdc                         
    5818:	e3530000 	cmp	r3, #0                                        
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
    581c:	01a0a003 	moveq	sl, r3                                      
    }                                                                 
                                                                      
    /*                                                                
     * check to see if rcv wakeup callback was set                    
     */                                                               
    if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) { 
    5820:	0a000005 	beq	583c <rtems_termios_enqueue_raw_characters+0x94>
      (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg);     
    5824:	e2840030 	add	r0, r4, #48	; 0x30                            
    5828:	e59410e0 	ldr	r1, [r4, #224]	; 0xe0                         
    582c:	e1a0e00f 	mov	lr, pc                                        
    5830:	e12fff13 	bx	r3                                             
      tty->tty_rcvwakeup = 1;                                         
    5834:	e3a03001 	mov	r3, #1                                        
    5838:	e58430e4 	str	r3, [r4, #228]	; 0xe4                         
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
  return dropped;                                                     
}                                                                     
    583c:	e1a0000a 	mov	r0, sl                                        
    5840:	e28dd008 	add	sp, sp, #8                                    
    5844:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
    5848:	e2803030 	add	r3, r0, #48	; 0x30                            
  char c;                                                             
  int dropped = 0;                                                    
  bool flow_rcv = false; /* true, if flow control char received */    
  rtems_interrupt_level level;                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_rint != NULL) {             
    584c:	e1a06002 	mov	r6, r2                                        
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
    5850:	e58d3000 	str	r3, [sp]                                      
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
    5854:	e3560000 	cmp	r6, #0                                        
          if ((tty->flow_ctrl & FL_OSTOP) ||                          
              (tty->rawOutBufState == rob_idle)) {                    
            /* if tx is stopped due to XOFF or out of data */         
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
    5858:	e280304a 	add	r3, r0, #74	; 0x4a                            
    585c:	e58d3004 	str	r3, [sp, #4]                                  
    5860:	e1a0b009 	mov	fp, r9                                        
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
    5864:	0a000042 	beq	5974 <rtems_termios_enqueue_raw_characters+0x1cc>
    c = *buf++;                                                       
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
    5868:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    586c:	e3130c02 	tst	r3, #512	; 0x200                              
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
    c = *buf++;                                                       
    5870:	e4d58001 	ldrb	r8, [r5], #1                                 
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
    5874:	0a000005 	beq	5890 <rtems_termios_enqueue_raw_characters+0xe8>
      /* if received char is V_STOP and V_START (both are equal value) */
      if (c == tty->termios.c_cc[VSTOP]) {                            
    5878:	e5d4304a 	ldrb	r3, [r4, #74]	; 0x4a                         
    587c:	e1530008 	cmp	r3, r8                                        
    5880:	0a000056 	beq	59e0 <rtems_termios_enqueue_raw_characters+0x238>
          /* stop output                             */               
          tty->flow_ctrl |= FL_ORCVXOF;                               
        }                                                             
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
    5884:	e5d43049 	ldrb	r3, [r4, #73]	; 0x49                         
    5888:	e1530008 	cmp	r3, r8                                        
    588c:	0a00003f 	beq	5990 <rtems_termios_enqueue_raw_characters+0x1e8>
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
    5890:	e3590000 	cmp	r9, #0                                        
    5894:	1a000041 	bne	59a0 <rtems_termios_enqueue_raw_characters+0x1f8>
        }                                                             
        /* reenable interrupts */                                     
        rtems_interrupt_enable(level);                                
      }                                                               
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
    5898:	e5940060 	ldr	r0, [r4, #96]	; 0x60                          
    589c:	e5941064 	ldr	r1, [r4, #100]	; 0x64                         
    58a0:	e2800001 	add	r0, r0, #1                                    
    58a4:	eb004406 	bl	168c4 <__umodsi3>                              
    58a8:	e1a07000 	mov	r7, r0                                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    58ac:	e10fa000 	mrs	sl, CPSR                                      
    58b0:	e38a3080 	orr	r3, sl, #128	; 0x80                           
    58b4:	e129f003 	msr	CPSR_fc, r3                                   
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
    58b8:	e594305c 	ldr	r3, [r4, #92]	; 0x5c                          
    58bc:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
    58c0:	e0630000 	rsb	r0, r3, r0                                    
            % tty->rawInBuf.Size) > tty->highwater) &&                
    58c4:	e5941064 	ldr	r1, [r4, #100]	; 0x64                         
    58c8:	e0800007 	add	r0, r0, r7                                    
    58cc:	eb0043fc 	bl	168c4 <__umodsi3>                              
      }                                                               
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
    58d0:	e59430c0 	ldr	r3, [r4, #192]	; 0xc0                         
    58d4:	e1500003 	cmp	r0, r3                                        
    58d8:	9a00000e 	bls	5918 <rtems_termios_enqueue_raw_characters+0x170>
            % tty->rawInBuf.Size) > tty->highwater) &&                
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
    58dc:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    } else {                                                          
      newTail = (tty->rawInBuf.Tail + 1) % tty->rawInBuf.Size;        
      /* if chars_in_buffer > highwater                */             
      rtems_interrupt_disable(level);                                 
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
            % tty->rawInBuf.Size) > tty->highwater) &&                
    58e0:	e3130001 	tst	r3, #1                                        <== NOT EXECUTED
    58e4:	1a00000b 	bne	5918 <rtems_termios_enqueue_raw_characters+0x170><== NOT EXECUTED
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
    58e8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    58ec:	e3833001 	orr	r3, r3, #1                                    <== NOT EXECUTED
    58f0:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
    58f4:	e59f3188 	ldr	r3, [pc, #392]	; 5a84 <rtems_termios_enqueue_raw_characters+0x2dc><== NOT EXECUTED
    58f8:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    58fc:	e0023003 	and	r3, r2, r3                                    <== NOT EXECUTED
    5900:	e3530b01 	cmp	r3, #1024	; 0x400                             <== NOT EXECUTED
            ==                (FL_MDXOF             ) ) {             
          if ((tty->flow_ctrl & FL_OSTOP) ||                          
    5904:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
      if ((((newTail - tty->rawInBuf.Head + tty->rawInBuf.Size)       
            % tty->rawInBuf.Size) > tty->highwater) &&                
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
    5908:	0a000044 	beq	5a20 <rtems_termios_enqueue_raw_characters+0x278><== NOT EXECUTED
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
    590c:	e2033f41 	and	r3, r3, #260	; 0x104                          <== NOT EXECUTED
    5910:	e3530c01 	cmp	r3, #256	; 0x100                              <== NOT EXECUTED
    5914:	0a00004f 	beq	5a58 <rtems_termios_enqueue_raw_characters+0x2b0><== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    5918:	e129f00a 	msr	CPSR_fc, sl                                   
      }                                                               
                                                                      
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
    591c:	e594305c 	ldr	r3, [r4, #92]	; 0x5c                          
    5920:	e1530007 	cmp	r3, r7                                        
        dropped++;                                                    
    5924:	028bb001 	addeq	fp, fp, #1                                  
      }                                                               
                                                                      
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
    5928:	0a00000e 	beq	5968 <rtems_termios_enqueue_raw_characters+0x1c0>
        dropped++;                                                    
      } else {                                                        
        tty->rawInBuf.theBuf[newTail] = c;                            
    592c:	e5943058 	ldr	r3, [r4, #88]	; 0x58                          
    5930:	e7c38007 	strb	r8, [r3, r7]                                 
        tty->rawInBuf.Tail = newTail;                                 
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
    5934:	e59430e4 	ldr	r3, [r4, #228]	; 0xe4                         
    5938:	e3530000 	cmp	r3, #0                                        
                                                                      
      if (newTail == tty->rawInBuf.Head) {                            
        dropped++;                                                    
      } else {                                                        
        tty->rawInBuf.theBuf[newTail] = c;                            
        tty->rawInBuf.Tail = newTail;                                 
    593c:	e5847060 	str	r7, [r4, #96]	; 0x60                          
                                                                      
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
    5940:	1a000008 	bne	5968 <rtems_termios_enqueue_raw_characters+0x1c0>
    5944:	e59430dc 	ldr	r3, [r4, #220]	; 0xdc                         
    5948:	e3530000 	cmp	r3, #0                                        
    594c:	0a000005 	beq	5968 <rtems_termios_enqueue_raw_characters+0x1c0>
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
    5950:	e59d0000 	ldr	r0, [sp]                                      <== NOT EXECUTED
    5954:	e59410e0 	ldr	r1, [r4, #224]	; 0xe0                         <== NOT EXECUTED
    5958:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    595c:	e12fff13 	bx	r3                                             <== NOT EXECUTED
          tty->tty_rcvwakeup = 1;                                     
    5960:	e3a03001 	mov	r3, #1                                        <== NOT EXECUTED
    5964:	e58430e4 	str	r3, [r4, #228]	; 0xe4                         <== NOT EXECUTED
    5968:	e2466001 	sub	r6, r6, #1                                    
      tty->tty_rcvwakeup = 1;                                         
        }                                                             
    return 0;                                                         
  }                                                                   
                                                                      
  while (len--) {                                                     
    596c:	e3560000 	cmp	r6, #0                                        
    5970:	1affffbc 	bne	5868 <rtems_termios_enqueue_raw_characters+0xc0>
        }                                                             
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  tty->rawInBufDropped += dropped;                                    
    5974:	e5943078 	ldr	r3, [r4, #120]	; 0x78                         
    5978:	e083300b 	add	r3, r3, fp                                    
    597c:	e5843078 	str	r3, [r4, #120]	; 0x78                         
  rtems_semaphore_release (tty->rawInBuf.Semaphore);                  
    5980:	e5940068 	ldr	r0, [r4, #104]	; 0x68                         
    5984:	e1a0a00b 	mov	sl, fp                                        
    5988:	eb000362 	bl	6718 <rtems_semaphore_release>                 
  return dropped;                                                     
    598c:	eaffffaa 	b	583c <rtems_termios_enqueue_raw_characters+0x94>
        flow_rcv = true;                                              
      }                                                               
      else if (c == tty->termios.c_cc[VSTART]) {                      
        /* VSTART received */                                         
        /* restart output  */                                         
        tty->flow_ctrl &= ~FL_ORCVXOF;                                
    5990:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    5994:	e3c33010 	bic	r3, r3, #16                                   <== NOT EXECUTED
    5998:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{                                                                     
    599c:	e3a09001 	mov	r9, #1                                        <== NOT EXECUTED
        flow_rcv = true;                                              
      }                                                               
    }                                                                 
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
    59a0:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    59a4:	e2033030 	and	r3, r3, #48	; 0x30                            
    59a8:	e3530020 	cmp	r3, #32                                       
    59ac:	1affffed 	bne	5968 <rtems_termios_enqueue_raw_characters+0x1c0>
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    59b0:	e10f7000 	mrs	r7, CPSR                                      <== NOT EXECUTED
    59b4:	e3873080 	orr	r3, r7, #128	; 0x80                           <== NOT EXECUTED
    59b8:	e129f003 	msr	CPSR_fc, r3                                   <== NOT EXECUTED
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
    59bc:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
    59c0:	e5942094 	ldr	r2, [r4, #148]	; 0x94                         <== NOT EXECUTED
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
    59c4:	e3c33020 	bic	r3, r3, #32                                   <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
    59c8:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
    if (flow_rcv) {                                                   
      /* restart output according to FL_ORCVXOF flag */               
      if ((tty->flow_ctrl & (FL_ORCVXOF | FL_OSTOP)) == FL_OSTOP) {   
        /* disable interrupts    */                                   
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
    59cc:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
    59d0:	1a00000a 	bne	5a00 <rtems_termios_enqueue_raw_characters+0x258><== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    59d4:	e129f007 	msr	CPSR_fc, r7                                   <== NOT EXECUTED
        /*                                                            
         * check to see if rcv wakeup callback was set                
         */                                                           
        if (( !tty->tty_rcvwakeup ) && ( tty->tty_rcv.sw_pfn != NULL )) {
          (*tty->tty_rcv.sw_pfn)(&tty->termios, tty->tty_rcv.sw_arg); 
          tty->tty_rcvwakeup = 1;                                     
    59d8:	e2466001 	sub	r6, r6, #1                                    <== NOT EXECUTED
    59dc:	eaffffe2 	b	596c <rtems_termios_enqueue_raw_characters+0x1c4><== NOT EXECUTED
    /* FIXME: implement IXANY: any character restarts output */       
    /* if incoming XON/XOFF controls outgoing stream: */              
    if (tty->flow_ctrl & FL_MDXON) {                                  
      /* if received char is V_STOP and V_START (both are equal value) */
      if (c == tty->termios.c_cc[VSTOP]) {                            
        if (c == tty->termios.c_cc[VSTART]) {                         
    59e0:	e5d42049 	ldrb	r2, [r4, #73]	; 0x49                         
    59e4:	e1520003 	cmp	r2, r3                                        
          /* received VSTOP and VSTART==VSTOP? */                     
          /* then toggle "stop output" status  */                     
          tty->flow_ctrl = tty->flow_ctrl ^ FL_ORCVXOF;               
    59e8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    59ec:	02233010 	eoreq	r3, r3, #16                                 
        }                                                             
        else {                                                        
          /* VSTOP received (other code than VSTART) */               
          /* stop output                             */               
          tty->flow_ctrl |= FL_ORCVXOF;                               
    59f0:	13833010 	orrne	r3, r3, #16                                 
    59f4:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         
 *       device receive interrupt handler.                            
 * Returns the number of characters dropped because of overflow.      
 */                                                                   
int                                                                   
rtems_termios_enqueue_raw_characters (void *ttyp, const char *buf, int len)
{                                                                     
    59f8:	e3a09001 	mov	r9, #1                                        
    59fc:	eaffffe7 	b	59a0 <rtems_termios_enqueue_raw_characters+0x1f8>
        tty->flow_ctrl &= ~FL_OSTOP;                                  
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
          /* if chars available, call write function... */            
          (*tty->device.write)(                                       
            tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail], 1);
    5a00:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         <== NOT EXECUTED
        rtems_interrupt_disable(level);                               
        tty->flow_ctrl &= ~FL_OSTOP;                                  
        /* check for chars in output buffer (or rob_state?) */        
        if (tty->rawOutBufState != rob_idle) {                        
          /* if chars available, call write function... */            
          (*tty->device.write)(                                       
    5a04:	e594107c 	ldr	r1, [r4, #124]	; 0x7c                         <== NOT EXECUTED
    5a08:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    5a0c:	e0811003 	add	r1, r1, r3                                    <== NOT EXECUTED
    5a10:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    5a14:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    5a18:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         <== NOT EXECUTED
    5a1c:	eaffffec 	b	59d4 <rtems_termios_enqueue_raw_characters+0x22c><== NOT EXECUTED
          !(tty->flow_ctrl & FL_IREQXOF)) {                           
        /* incoming data stream should be stopped */                  
        tty->flow_ctrl |= FL_IREQXOF;                                 
        if ((tty->flow_ctrl & (FL_MDXOF | FL_ISNTXOF))                
            ==                (FL_MDXOF             ) ) {             
          if ((tty->flow_ctrl & FL_OSTOP) ||                          
    5a20:	e3130020 	tst	r3, #32                                       <== NOT EXECUTED
    5a24:	1a000002 	bne	5a34 <rtems_termios_enqueue_raw_characters+0x28c><== NOT EXECUTED
    5a28:	e5943094 	ldr	r3, [r4, #148]	; 0x94                         <== NOT EXECUTED
    5a2c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    5a30:	1affffb8 	bne	5918 <rtems_termios_enqueue_raw_characters+0x170><== NOT EXECUTED
              (tty->rawOutBufState == rob_idle)) {                    
            /* if tx is stopped due to XOFF or out of data */         
            /*    call write function here                 */         
            tty->flow_ctrl |= FL_ISNTXOF;                             
    5a34:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    5a38:	e3833002 	orr	r3, r3, #2                                    <== NOT EXECUTED
    5a3c:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
            (*tty->device.write)(tty->minor,                          
    5a40:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    5a44:	e59d1004 	ldr	r1, [sp, #4]                                  <== NOT EXECUTED
    5a48:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    5a4c:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    5a50:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         <== NOT EXECUTED
    5a54:	eaffffaf 	b	5918 <rtems_termios_enqueue_raw_characters+0x170><== NOT EXECUTED
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
          tty->flow_ctrl |= FL_IRTSOFF;                               
    5a58:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
    5a5c:	e59430ac 	ldr	r3, [r4, #172]	; 0xac                         <== NOT EXECUTED
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
          tty->flow_ctrl |= FL_IRTSOFF;                               
    5a60:	e3822004 	orr	r2, r2, #4                                    <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
    5a64:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
            tty->flow_ctrl |= FL_ISNTXOF;                             
            (*tty->device.write)(tty->minor,                          
                (void *)&(tty->termios.c_cc[VSTOP]), 1);              
          }                                                           
        } else if ((tty->flow_ctrl & (FL_MDRTS | FL_IRTSOFF)) == (FL_MDRTS) ) {
          tty->flow_ctrl |= FL_IRTSOFF;                               
    5a68:	e58420b8 	str	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
          /* deactivate RTS line */                                   
          if (tty->device.stopRemoteTx != NULL) {                     
    5a6c:	0affffa9 	beq	5918 <rtems_termios_enqueue_raw_characters+0x170><== NOT EXECUTED
            tty->device.stopRemoteTx(tty->minor);                     
    5a70:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    5a74:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    5a78:	e12fff13 	bx	r3                                             <== NOT EXECUTED
    5a7c:	eaffffa5 	b	5918 <rtems_termios_enqueue_raw_characters+0x170><== NOT EXECUTED
                                                                      

00004760 <rtems_termios_ioctl>: rtems_status_code rtems_termios_ioctl (void *arg) { rtems_libio_ioctl_args_t *args = arg; struct rtems_termios_tty *tty = args->iop->data1;
    4760:	e5902000 	ldr	r2, [r0]                                      
  }                                                                   
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_ioctl (void *arg)                                       
{                                                                     
    4764:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
    4768:	e592402c 	ldr	r4, [r2, #44]	; 0x2c                          
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
  rtems_status_code sc;                                               
                                                                      
  args->ioctl_return = 0;                                             
    476c:	e3a03000 	mov	r3, #0                                        
  }                                                                   
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_ioctl (void *arg)                                       
{                                                                     
    4770:	e1a06000 	mov	r6, r0                                        
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
  rtems_status_code sc;                                               
                                                                      
  args->ioctl_return = 0;                                             
    4774:	e580300c 	str	r3, [r0, #12]                                 
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    4778:	e1a01003 	mov	r1, r3                                        
    477c:	e5940018 	ldr	r0, [r4, #24]                                 
    4780:	e1a02003 	mov	r2, r3                                        
rtems_status_code                                                     
rtems_termios_ioctl (void *arg)                                       
{                                                                     
  rtems_libio_ioctl_args_t *args = arg;                               
  struct rtems_termios_tty *tty = args->iop->data1;                   
  struct ttywakeup         *wakeup = (struct ttywakeup *)args->buffer;
    4784:	e5967008 	ldr	r7, [r6, #8]                                  
  rtems_status_code sc;                                               
                                                                      
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    4788:	eb000799 	bl	65f4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL) {                                       
    478c:	e2505000 	subs	r5, r0, #0                                   
    4790:	1a00001a 	bne	4800 <rtems_termios_ioctl+0xa0>               
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
    4794:	e5963004 	ldr	r3, [r6, #4]                                  
    4798:	e3530005 	cmp	r3, #5                                        
    479c:	0a000012 	beq	47ec <rtems_termios_ioctl+0x8c>               
    47a0:	8a000018 	bhi	4808 <rtems_termios_ioctl+0xa8>               
    47a4:	e3530002 	cmp	r3, #2                                        
    47a8:	0a00002b 	beq	485c <rtems_termios_ioctl+0xfc>               
    47ac:	8a0000ae 	bhi	4a6c <rtems_termios_ioctl+0x30c>              
    47b0:	e3530001 	cmp	r3, #1                                        
    47b4:	0a0000be 	beq	4ab4 <rtems_termios_ioctl+0x354>              
  default:                                                            
    if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {          
    47b8:	e59420cc 	ldr	r2, [r4, #204]	; 0xcc                         
    47bc:	e59f3408 	ldr	r3, [pc, #1032]	; 4bcc <rtems_termios_ioctl+0x46c>
    47c0:	e0833282 	add	r3, r3, r2, lsl #5                            
    47c4:	e5933018 	ldr	r3, [r3, #24]                                 
    47c8:	e3530000 	cmp	r3, #0                                        
      sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);       
    }                                                                 
    else {                                                            
      sc = RTEMS_INVALID_NUMBER;                                      
    47cc:	03a0500a 	moveq	r5, #10                                     
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
  default:                                                            
    if (rtems_termios_linesw[tty->t_line].l_ioctl != NULL) {          
    47d0:	0a000008 	beq	47f8 <rtems_termios_ioctl+0x98>               
      sc = rtems_termios_linesw[tty->t_line].l_ioctl(tty,args);       
    47d4:	e1a00004 	mov	r0, r4                                        
    47d8:	e1a01006 	mov	r1, r6                                        
    47dc:	e1a0e00f 	mov	lr, pc                                        
    47e0:	e12fff13 	bx	r3                                             
    47e4:	e1a05000 	mov	r5, r0                                        
    47e8:	ea000002 	b	47f8 <rtems_termios_ioctl+0x98>                 
        break;                                                        
    }                                                                 
    break;                                                            
                                                                      
  case RTEMS_IO_SNDWAKEUP:                                            
    tty->tty_snd = *wakeup;                                           
    47ec:	e897000c 	ldm	r7, {r2, r3}                                  
    47f0:	e58420d4 	str	r2, [r4, #212]	; 0xd4                         
    47f4:	e58430d8 	str	r3, [r4, #216]	; 0xd8                         
      *(int *)args->buffer = tty->ccount - tty->cindex + rawnc;       
    }                                                                 
    break;                                                            
  }                                                                   
                                                                      
  rtems_semaphore_release (tty->osem);                                
    47f8:	e5940018 	ldr	r0, [r4, #24]                                 
    47fc:	eb0007c5 	bl	6718 <rtems_semaphore_release>                 
  return sc;                                                          
}                                                                     
    4800:	e1a00005 	mov	r0, r5                                        
    4804:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
    4808:	e59f23c0 	ldr	r2, [pc, #960]	; 4bd0 <rtems_termios_ioctl+0x470>
    480c:	e1530002 	cmp	r3, r2                                        
    4810:	0a00006c 	beq	49c8 <rtems_termios_ioctl+0x268>              
    4814:	8a000077 	bhi	49f8 <rtems_termios_ioctl+0x298>              
    4818:	e3530006 	cmp	r3, #6                                        
    481c:	1affffe5 	bne	47b8 <rtems_termios_ioctl+0x58>               
  case RTEMS_IO_TCDRAIN:                                              
    drainOutput (tty);                                                
    break;                                                            
                                                                      
  case RTEMS_IO_TCFLUSH:                                              
    switch ((intptr_t) args->buffer) {                                
    4820:	e5963008 	ldr	r3, [r6, #8]                                  
    4824:	e3530001 	cmp	r3, #1                                        
    4828:	0a0000bc 	beq	4b20 <rtems_termios_ioctl+0x3c0>              
    482c:	e3530002 	cmp	r3, #2                                        
    4830:	0a0000c6 	beq	4b50 <rtems_termios_ioctl+0x3f0>              
    4834:	e3530000 	cmp	r3, #0                                        
      case TCIOFLUSH:                                                 
        flushOutput (tty);                                            
        flushInput (tty);                                             
        break;                                                        
      default:                                                        
        sc = RTEMS_INVALID_NAME;                                      
    4838:	13a05003 	movne	r5, #3                                      
  case RTEMS_IO_TCDRAIN:                                              
    drainOutput (tty);                                                
    break;                                                            
                                                                      
  case RTEMS_IO_TCFLUSH:                                              
    switch ((intptr_t) args->buffer) {                                
    483c:	1affffed 	bne	47f8 <rtems_termios_ioctl+0x98>               
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    4840:	e10f3000 	mrs	r3, CPSR                                      
    4844:	e3832080 	orr	r2, r3, #128	; 0x80                           
    4848:	e129f002 	msr	CPSR_fc, r2                                   
flushInput (struct rtems_termios_tty *tty)                            
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
  tty->rawInBuf.Tail = 0;                                             
    484c:	e5845060 	str	r5, [r4, #96]	; 0x60                          
  tty->rawInBuf.Head = 0;                                             
    4850:	e584505c 	str	r5, [r4, #92]	; 0x5c                          
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4854:	e129f003 	msr	CPSR_fc, r3                                   
    4858:	eaffffe6 	b	47f8 <rtems_termios_ioctl+0x98>                 
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
    485c:	e596e008 	ldr	lr, [r6, #8]                                  
    4860:	e2846030 	add	r6, r4, #48	; 0x30                            
    4864:	e8be000f 	ldm	lr!, {r0, r1, r2, r3}                         
    4868:	e1a0c006 	mov	ip, r6                                        
    486c:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
    4870:	e8be000f 	ldm	lr!, {r0, r1, r2, r3}                         
    4874:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
    4878:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
    487c:	e59e3000 	ldr	r3, [lr]                                      
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
    4880:	e3120c02 	tst	r2, #512	; 0x200                              
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    break;                                                            
                                                                      
  case RTEMS_IO_SET_ATTRIBUTES:                                       
    tty->termios = *(struct termios *)args->buffer;                   
    4884:	e58c3000 	str	r3, [ip]                                      
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
    4888:	0a000012 	beq	48d8 <rtems_termios_ioctl+0x178>              
      !(tty->termios.c_iflag & IXON)) {                               
    488c:	e5943030 	ldr	r3, [r4, #48]	; 0x30                          
  /*                                                                  
   * check for flow control options to be switched off                
   */                                                                 
                                                                      
  /* check for outgoing XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXON) &&                                 
    4890:	e3130b01 	tst	r3, #1024	; 0x400                             
    4894:	1a00000f 	bne	48d8 <rtems_termios_ioctl+0x178>              
      !(tty->termios.c_iflag & IXON)) {                               
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDXON | FL_ORCVXOF);                       
    4898:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    489c:	e3c33e21 	bic	r3, r3, #528	; 0x210                          
    48a0:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         
                                                                      
    /* has output been stopped due to received XOFF? */               
    if (tty->flow_ctrl & FL_OSTOP) {                                  
    48a4:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    48a8:	e3130020 	tst	r3, #32                                       
    48ac:	0a000009 	beq	48d8 <rtems_termios_ioctl+0x178>              
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    48b0:	e10f7000 	mrs	r7, CPSR                                      <== NOT EXECUTED
    48b4:	e3873080 	orr	r3, r7, #128	; 0x80                           <== NOT EXECUTED
    48b8:	e129f003 	msr	CPSR_fc, r3                                   <== NOT EXECUTED
      /* disable interrupts    */                                     
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
    48bc:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
    48c0:	e5942094 	ldr	r2, [r4, #148]	; 0x94                         <== NOT EXECUTED
                                                                      
    /* has output been stopped due to received XOFF? */               
    if (tty->flow_ctrl & FL_OSTOP) {                                  
      /* disable interrupts    */                                     
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
    48c4:	e3c33020 	bic	r3, r3, #32                                   <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
    48c8:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
                                                                      
    /* has output been stopped due to received XOFF? */               
    if (tty->flow_ctrl & FL_OSTOP) {                                  
      /* disable interrupts    */                                     
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
    48cc:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
    48d0:	1a0000b5 	bne	4bac <rtems_termios_ioctl+0x44c>              <== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    48d4:	e129f007 	msr	CPSR_fc, r7                                   <== NOT EXECUTED
      /* reenable interrupts */                                       
      rtems_interrupt_enable(level);                                  
    }                                                                 
  }                                                                   
  /* check for incoming XON/XOFF flow control switched off */         
  if (( tty->flow_ctrl & FL_MDXOF) && !(tty->termios.c_iflag & IXOFF)) {
    48d8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    48dc:	e3130b01 	tst	r3, #1024	; 0x400                             
    48e0:	0a000008 	beq	4908 <rtems_termios_ioctl+0x1a8>              
    48e4:	e5943030 	ldr	r3, [r4, #48]	; 0x30                          
    48e8:	e3130a01 	tst	r3, #4096	; 0x1000                            
    48ec:	1a000005 	bne	4908 <rtems_termios_ioctl+0x1a8>              
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDXOF);                                    
    48f0:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    48f4:	e3c33b01 	bic	r3, r3, #1024	; 0x400                         
    48f8:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         
    /* FIXME: what happens, if we had sent XOFF but not yet XON? */   
    tty->flow_ctrl &= ~(FL_ISNTXOF);                                  
    48fc:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    4900:	e3c33002 	bic	r3, r3, #2                                    
    4904:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         
  }                                                                   
                                                                      
  /* check for incoming RTS/CTS flow control switched off */          
  if (( tty->flow_ctrl & FL_MDRTS) && !(tty->termios.c_cflag & CRTSCTS)) {
    4908:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    490c:	e3130c01 	tst	r3, #256	; 0x100                              
    4910:	e5942038 	ldr	r2, [r4, #56]	; 0x38                          
    4914:	0a000011 	beq	4960 <rtems_termios_ioctl+0x200>              
    4918:	e3520000 	cmp	r2, #0                                        <== NOT EXECUTED
    491c:	ba000087 	blt	4b40 <rtems_termios_ioctl+0x3e0>              <== NOT EXECUTED
    /* clear related flags in flow_ctrl */                            
    tty->flow_ctrl &= ~(FL_MDRTS);                                    
    4920:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4924:	e3c33c01 	bic	r3, r3, #256	; 0x100                          <== NOT EXECUTED
    4928:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
                                                                      
    /* restart remote Tx, if it was stopped */                        
    if ((tty->flow_ctrl & FL_IRTSOFF) && (tty->device.startRemoteTx != NULL)) {
    492c:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4930:	e3130004 	tst	r3, #4                                        <== NOT EXECUTED
    4934:	0a000006 	beq	4954 <rtems_termios_ioctl+0x1f4>              <== NOT EXECUTED
    4938:	e59430b0 	ldr	r3, [r4, #176]	; 0xb0                         <== NOT EXECUTED
    493c:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    4940:	0a000003 	beq	4954 <rtems_termios_ioctl+0x1f4>              <== NOT EXECUTED
      tty->device.startRemoteTx(tty->minor);                          
    4944:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    4948:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    494c:	e12fff13 	bx	r3                                             <== NOT EXECUTED
    4950:	e5942038 	ldr	r2, [r4, #56]	; 0x38                          <== NOT EXECUTED
    }                                                                 
    tty->flow_ctrl &= ~(FL_IRTSOFF);                                  
    4954:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4958:	e3c33004 	bic	r3, r3, #4                                    <== NOT EXECUTED
    495c:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
                                                                      
  /*                                                                  
   * check for flow control options to be switched on                 
   */                                                                 
  /* check for incoming RTS/CTS flow control switched on */           
  if (tty->termios.c_cflag & CRTSCTS) {                               
    4960:	e3520000 	cmp	r2, #0                                        
    4964:	ba000075 	blt	4b40 <rtems_termios_ioctl+0x3e0>              
    tty->flow_ctrl |= FL_MDRTS;                                       
  }                                                                   
  /* check for incoming XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXOFF) {                                 
    4968:	e5943030 	ldr	r3, [r4, #48]	; 0x30                          
    496c:	e3130a01 	tst	r3, #4096	; 0x1000                            
    tty->flow_ctrl |= FL_MDXOF;                                       
    4970:	159420b8 	ldrne	r2, [r4, #184]	; 0xb8                       
    4974:	13822b01 	orrne	r2, r2, #1024	; 0x400                       
    4978:	158420b8 	strne	r2, [r4, #184]	; 0xb8                       
  }                                                                   
  /* check for outgoing XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXON) {                                  
    497c:	e3130b01 	tst	r3, #1024	; 0x400                             
    tty->flow_ctrl |= FL_MDXON;                                       
    4980:	159430b8 	ldrne	r3, [r4, #184]	; 0xb8                       
    tty->termios = *(struct termios *)args->buffer;                   
                                                                      
    /* check for and process change in flow control options */        
    termios_set_flowctrl(tty);                                        
                                                                      
    if (tty->termios.c_lflag & ICANON) {                              
    4984:	e594703c 	ldr	r7, [r4, #60]	; 0x3c                          
  if (tty->termios.c_iflag & IXOFF) {                                 
    tty->flow_ctrl |= FL_MDXOF;                                       
  }                                                                   
  /* check for outgoing XON/XOF flow control switched on */           
  if (tty->termios.c_iflag & IXON) {                                  
    tty->flow_ctrl |= FL_MDXON;                                       
    4988:	13833c02 	orrne	r3, r3, #512	; 0x200                        
    498c:	158430b8 	strne	r3, [r4, #184]	; 0xb8                       
    tty->termios = *(struct termios *)args->buffer;                   
                                                                      
    /* check for and process change in flow control options */        
    termios_set_flowctrl(tty);                                        
                                                                      
    if (tty->termios.c_lflag & ICANON) {                              
    4990:	e2177002 	ands	r7, r7, #2                                   
    4994:	0a00004f 	beq	4ad8 <rtems_termios_ioctl+0x378>              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
    4998:	e3a03000 	mov	r3, #0                                        
    499c:	e584306c 	str	r3, [r4, #108]	; 0x6c                         
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
    49a0:	e5843070 	str	r3, [r4, #112]	; 0x70                         
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    49a4:	e5843074 	str	r3, [r4, #116]	; 0x74                         
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
        }                                                             
      }                                                               
    }                                                                 
    if (tty->device.setAttributes)                                    
    49a8:	e59430a8 	ldr	r3, [r4, #168]	; 0xa8                         
    49ac:	e3530000 	cmp	r3, #0                                        
    49b0:	0affff90 	beq	47f8 <rtems_termios_ioctl+0x98>               
      (*tty->device.setAttributes)(tty->minor, &tty->termios);        
    49b4:	e5940010 	ldr	r0, [r4, #16]                                 
    49b8:	e1a01006 	mov	r1, r6                                        
    49bc:	e1a0e00f 	mov	lr, pc                                        
    49c0:	e12fff13 	bx	r3                                             
    49c4:	eaffff8b 	b	47f8 <rtems_termios_ioctl+0x98>                 
  case TIOCGETD:                                                      
    *(int*)(args->buffer)=tty->t_line;                                
    break;                                                            
#endif                                                                
   case FIONREAD: {                                                   
      int rawnc = tty->rawInBuf.Tail - tty->rawInBuf.Head;            
    49c8:	e5942060 	ldr	r2, [r4, #96]	; 0x60                          <== NOT EXECUTED
    49cc:	e594305c 	ldr	r3, [r4, #92]	; 0x5c                          <== NOT EXECUTED
      if ( rawnc < 0 )                                                
    49d0:	e0523003 	subs	r3, r2, r3                                   <== NOT EXECUTED
        rawnc += tty->rawInBuf.Size;                                  
    49d4:	45942064 	ldrmi	r2, [r4, #100]	; 0x64                       <== NOT EXECUTED
    49d8:	40833002 	addmi	r3, r3, r2                                  <== NOT EXECUTED
      /* Half guess that this is the right operation */               
      *(int *)args->buffer = tty->ccount - tty->cindex + rawnc;       
    49dc:	e2841020 	add	r1, r4, #32                                   <== NOT EXECUTED
    49e0:	e8910006 	ldm	r1, {r1, r2}                                  <== NOT EXECUTED
    49e4:	e0412002 	sub	r2, r1, r2                                    <== NOT EXECUTED
    49e8:	e5961008 	ldr	r1, [r6, #8]                                  <== NOT EXECUTED
    49ec:	e0823003 	add	r3, r2, r3                                    <== NOT EXECUTED
    49f0:	e5813000 	str	r3, [r1]                                      <== NOT EXECUTED
    }                                                                 
    break;                                                            
    49f4:	eaffff7f 	b	47f8 <rtems_termios_ioctl+0x98>                 <== NOT EXECUTED
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
    49f8:	e59f21d4 	ldr	r2, [pc, #468]	; 4bd4 <rtems_termios_ioctl+0x474>
    49fc:	e1530002 	cmp	r3, r2                                        
    4a00:	0a000027 	beq	4aa4 <rtems_termios_ioctl+0x344>              
    4a04:	e2822105 	add	r2, r2, #1073741825	; 0x40000001              
    4a08:	e1530002 	cmp	r3, r2                                        
    4a0c:	1affff69 	bne	47b8 <rtems_termios_ioctl+0x58>               
#if 1 /* FIXME */                                                     
  case TIOCSETD:                                                      
    /*                                                                
     * close old line discipline                                      
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
    4a10:	e59f71b4 	ldr	r7, [pc, #436]	; 4bcc <rtems_termios_ioctl+0x46c>
    4a14:	e59430cc 	ldr	r3, [r4, #204]	; 0xcc                         
    4a18:	e0873283 	add	r3, r7, r3, lsl #5                            
    4a1c:	e5933004 	ldr	r3, [r3, #4]                                  
    4a20:	e3530000 	cmp	r3, #0                                        
    4a24:	0a000003 	beq	4a38 <rtems_termios_ioctl+0x2d8>              
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    4a28:	e1a00004 	mov	r0, r4                                        
    4a2c:	e1a0e00f 	mov	lr, pc                                        
    4a30:	e12fff13 	bx	r3                                             
    4a34:	e1a05000 	mov	r5, r0                                        
    }                                                                 
    tty->t_line=*(int*)(args->buffer);                                
    4a38:	e5963008 	ldr	r3, [r6, #8]                                  
    4a3c:	e5932000 	ldr	r2, [r3]                                      
    tty->t_sc = NULL; /* ensure that no more valid data */            
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
    4a40:	e7973282 	ldr	r3, [r7, r2, lsl #5]                          
     * close old line discipline                                      
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    }                                                                 
    tty->t_line=*(int*)(args->buffer);                                
    4a44:	e58420cc 	str	r2, [r4, #204]	; 0xcc                         
    tty->t_sc = NULL; /* ensure that no more valid data */            
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
    4a48:	e3530000 	cmp	r3, #0                                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_close != NULL) {          
      sc = rtems_termios_linesw[tty->t_line].l_close(tty);            
    }                                                                 
    tty->t_line=*(int*)(args->buffer);                                
    tty->t_sc = NULL; /* ensure that no more valid data */            
    4a4c:	e3a02000 	mov	r2, #0                                        
    4a50:	e58420d0 	str	r2, [r4, #208]	; 0xd0                         
    /*                                                                
     * open new line discipline                                       
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
    4a54:	0affff67 	beq	47f8 <rtems_termios_ioctl+0x98>               
      sc = rtems_termios_linesw[tty->t_line].l_open(tty);             
    4a58:	e1a00004 	mov	r0, r4                                        
    4a5c:	e1a0e00f 	mov	lr, pc                                        
    4a60:	e12fff13 	bx	r3                                             
    4a64:	e1a05000 	mov	r5, r0                                        
    4a68:	eaffff62 	b	47f8 <rtems_termios_ioctl+0x98>                 
  args->ioctl_return = 0;                                             
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL) {                                       
    return sc;                                                        
  }                                                                   
  switch (args->command) {                                            
    4a6c:	e3530003 	cmp	r3, #3                                        
    4a70:	0a000005 	beq	4a8c <rtems_termios_ioctl+0x32c>              
    4a74:	e3530004 	cmp	r3, #4                                        
    4a78:	1affff4e 	bne	47b8 <rtems_termios_ioctl+0x58>               
  case RTEMS_IO_SNDWAKEUP:                                            
    tty->tty_snd = *wakeup;                                           
    break;                                                            
                                                                      
  case RTEMS_IO_RCVWAKEUP:                                            
    tty->tty_rcv = *wakeup;                                           
    4a7c:	e897000c 	ldm	r7, {r2, r3}                                  
    4a80:	e58420dc 	str	r2, [r4, #220]	; 0xdc                         
    4a84:	e58430e0 	str	r3, [r4, #224]	; 0xe0                         
    break;                                                            
    4a88:	eaffff5a 	b	47f8 <rtems_termios_ioctl+0x98>                 
drainOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts != TERMIOS_POLLED) {           
    4a8c:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    4a90:	e3530000 	cmp	r3, #0                                        
    4a94:	0affff57 	beq	47f8 <rtems_termios_ioctl+0x98>               
    4a98:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
    4a9c:	ebfffd82 	bl	40ac <drainOutput.part.0>                      <== NOT EXECUTED
    4aa0:	eaffff54 	b	47f8 <rtems_termios_ioctl+0x98>                 <== NOT EXECUTED
    if (rtems_termios_linesw[tty->t_line].l_open != NULL) {           
      sc = rtems_termios_linesw[tty->t_line].l_open(tty);             
    }                                                                 
    break;                                                            
  case TIOCGETD:                                                      
    *(int*)(args->buffer)=tty->t_line;                                
    4aa4:	e59420cc 	ldr	r2, [r4, #204]	; 0xcc                         
    4aa8:	e5963008 	ldr	r3, [r6, #8]                                  
    4aac:	e5832000 	str	r2, [r3]                                      
    break;                                                            
    4ab0:	eaffff50 	b	47f8 <rtems_termios_ioctl+0x98>                 
      sc = RTEMS_INVALID_NUMBER;                                      
    }                                                                 
    break;                                                            
                                                                      
  case RTEMS_IO_GET_ATTRIBUTES:                                       
    *(struct termios *)args->buffer = tty->termios;                   
    4ab4:	e284e030 	add	lr, r4, #48	; 0x30                            
    4ab8:	e8be000f 	ldm	lr!, {r0, r1, r2, r3}                         
    4abc:	e596c008 	ldr	ip, [r6, #8]                                  
    4ac0:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
    4ac4:	e8be000f 	ldm	lr!, {r0, r1, r2, r3}                         
    4ac8:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
    4acc:	e59e3000 	ldr	r3, [lr]                                      
    4ad0:	e58c3000 	str	r3, [ip]                                      
    break;                                                            
    4ad4:	eaffff47 	b	47f8 <rtems_termios_ioctl+0x98>                 
    if (tty->termios.c_lflag & ICANON) {                              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
    4ad8:	e5d48046 	ldrb	r8, [r4, #70]	; 0x46                         
                    rtems_clock_get_ticks_per_second() / 10;          
    4adc:	eb00051f 	bl	5f60 <rtems_clock_get_ticks_per_second>        
    if (tty->termios.c_lflag & ICANON) {                              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
    4ae0:	e0000098 	mul	r0, r8, r0                                    
                    rtems_clock_get_ticks_per_second() / 10;          
    4ae4:	e59f30ec 	ldr	r3, [pc, #236]	; 4bd8 <rtems_termios_ioctl+0x478>
    4ae8:	e0831390 	umull	r1, r3, r0, r3                              
      if (tty->termios.c_cc[VTIME]) {                                 
    4aec:	e5d42046 	ldrb	r2, [r4, #70]	; 0x46                         
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
                    rtems_clock_get_ticks_per_second() / 10;          
    4af0:	e1a031a3 	lsr	r3, r3, #3                                    
      if (tty->termios.c_cc[VTIME]) {                                 
    4af4:	e3520000 	cmp	r2, #0                                        
    if (tty->termios.c_lflag & ICANON) {                              
      tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                     
      tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;               
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
    4af8:	e5843054 	str	r3, [r4, #84]	; 0x54                          
                    rtems_clock_get_ticks_per_second() / 10;          
      if (tty->termios.c_cc[VTIME]) {                                 
    4afc:	0a000022 	beq	4b8c <rtems_termios_ioctl+0x42c>              
        tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                   
        tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;              
        if (tty->termios.c_cc[VMIN])                                  
    4b00:	e5d42047 	ldrb	r2, [r4, #71]	; 0x47                         
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
    4b04:	e3520000 	cmp	r2, #0                                        
    4b08:	01a02003 	moveq	r2, r3                                      
    4b0c:	13a02000 	movne	r2, #0                                      
      tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;          
    } else {                                                          
      tty->vtimeTicks = tty->termios.c_cc[VTIME] *                    
                    rtems_clock_get_ticks_per_second() / 10;          
      if (tty->termios.c_cc[VTIME]) {                                 
        tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                   
    4b10:	e584706c 	str	r7, [r4, #108]	; 0x6c                         
        tty->rawInBufSemaphoreTimeout = tty->vtimeTicks;              
    4b14:	e5843070 	str	r3, [r4, #112]	; 0x70                         
        if (tty->termios.c_cc[VMIN])                                  
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
    4b18:	e5842074 	str	r2, [r4, #116]	; 0x74                         
    4b1c:	eaffffa1 	b	49a8 <rtems_termios_ioctl+0x248>                
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    4b20:	e10f3000 	mrs	r3, CPSR                                      
    4b24:	e3832080 	orr	r2, r3, #128	; 0x80                           
    4b28:	e129f002 	msr	CPSR_fc, r2                                   
flushOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
  tty->rawOutBuf.Tail = 0;                                            
    4b2c:	e5845084 	str	r5, [r4, #132]	; 0x84                         
  tty->rawOutBuf.Head = 0;                                            
  tty->rawOutBufState = rob_idle;                                     
    4b30:	e5845094 	str	r5, [r4, #148]	; 0x94                         
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
  tty->rawOutBuf.Tail = 0;                                            
  tty->rawOutBuf.Head = 0;                                            
    4b34:	e5845080 	str	r5, [r4, #128]	; 0x80                         
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4b38:	e129f003 	msr	CPSR_fc, r3                                   
    4b3c:	eaffff2d 	b	47f8 <rtems_termios_ioctl+0x98>                 
  /*                                                                  
   * check for flow control options to be switched on                 
   */                                                                 
  /* check for incoming RTS/CTS flow control switched on */           
  if (tty->termios.c_cflag & CRTSCTS) {                               
    tty->flow_ctrl |= FL_MDRTS;                                       
    4b40:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4b44:	e3833c01 	orr	r3, r3, #256	; 0x100                          <== NOT EXECUTED
    4b48:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4b4c:	eaffff85 	b	4968 <rtems_termios_ioctl+0x208>                <== NOT EXECUTED
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    4b50:	e10f3000 	mrs	r3, CPSR                                      
    4b54:	e3832080 	orr	r2, r3, #128	; 0x80                           
    4b58:	e129f002 	msr	CPSR_fc, r2                                   
flushOutput (struct rtems_termios_tty *tty)                           
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
  tty->rawOutBuf.Tail = 0;                                            
    4b5c:	e5845084 	str	r5, [r4, #132]	; 0x84                         
  tty->rawOutBuf.Head = 0;                                            
  tty->rawOutBufState = rob_idle;                                     
    4b60:	e5845094 	str	r5, [r4, #148]	; 0x94                         
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
  tty->rawOutBuf.Tail = 0;                                            
  tty->rawOutBuf.Head = 0;                                            
    4b64:	e5845080 	str	r5, [r4, #128]	; 0x80                         
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4b68:	e129f003 	msr	CPSR_fc, r3                                   
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    4b6c:	e10f2000 	mrs	r2, CPSR                                      
    4b70:	e3823080 	orr	r3, r2, #128	; 0x80                           
    4b74:	e129f003 	msr	CPSR_fc, r3                                   
flushInput (struct rtems_termios_tty *tty)                            
{                                                                     
  rtems_interrupt_level level;                                        
                                                                      
  rtems_interrupt_disable (level);                                    
  tty->rawInBuf.Tail = 0;                                             
    4b78:	e3a03000 	mov	r3, #0                                        
    4b7c:	e5843060 	str	r3, [r4, #96]	; 0x60                          
  tty->rawInBuf.Head = 0;                                             
    4b80:	e584305c 	str	r3, [r4, #92]	; 0x5c                          
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4b84:	e129f002 	msr	CPSR_fc, r2                                   
    4b88:	eaffff1a 	b	47f8 <rtems_termios_ioctl+0x98>                 
        if (tty->termios.c_cc[VMIN])                                  
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        else                                                          
          tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;       
      } else {                                                        
        if (tty->termios.c_cc[VMIN]) {                                
    4b8c:	e5d43047 	ldrb	r3, [r4, #71]	; 0x47                         
    4b90:	e3530000 	cmp	r3, #0                                        
          tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                 
          tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;           
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
    4b94:	03a03001 	moveq	r3, #1                                      
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
        else                                                          
          tty->rawInBufSemaphoreFirstTimeout = tty->vtimeTicks;       
      } else {                                                        
        if (tty->termios.c_cc[VMIN]) {                                
          tty->rawInBufSemaphoreOptions = RTEMS_WAIT;                 
    4b98:	1584206c 	strne	r2, [r4, #108]	; 0x6c                       
          tty->rawInBufSemaphoreTimeout = RTEMS_NO_TIMEOUT;           
    4b9c:	15842070 	strne	r2, [r4, #112]	; 0x70                       
          tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT;      
    4ba0:	15842074 	strne	r2, [r4, #116]	; 0x74                       
        } else {                                                      
          tty->rawInBufSemaphoreOptions = RTEMS_NO_WAIT;              
    4ba4:	0584306c 	streq	r3, [r4, #108]	; 0x6c                       
    4ba8:	eaffff7e 	b	49a8 <rtems_termios_ioctl+0x248>                
      tty->flow_ctrl &= ~FL_OSTOP;                                    
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
        /* if chars available, call write function... */              
        (*tty->device.write)(                                         
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
    4bac:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         <== NOT EXECUTED
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl &= ~FL_OSTOP;                                    
      /* check for chars in output buffer (or rob_state?) */          
      if (tty->rawOutBufState != rob_idle) {                          
        /* if chars available, call write function... */              
        (*tty->device.write)(                                         
    4bb0:	e594107c 	ldr	r1, [r4, #124]	; 0x7c                         <== NOT EXECUTED
    4bb4:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    4bb8:	e0811003 	add	r1, r1, r3                                    <== NOT EXECUTED
    4bbc:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    4bc0:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    4bc4:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         <== NOT EXECUTED
    4bc8:	eaffff41 	b	48d4 <rtems_termios_ioctl+0x174>                <== NOT EXECUTED
                                                                      

0000411c <rtems_termios_open>: rtems_device_major_number major, rtems_device_minor_number minor, void *arg, const rtems_termios_callbacks *callbacks ) {
    411c:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
    4120:	e59f7414 	ldr	r7, [pc, #1044]	; 453c <rtems_termios_open+0x420>
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
    4124:	e1a06001 	mov	r6, r1                                        
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
    4128:	e3a01000 	mov	r1, #0                                        
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
    412c:	e24dd014 	sub	sp, sp, #20                                   
    4130:	e1a05000 	mov	r5, r0                                        
    4134:	e1a08002 	mov	r8, r2                                        
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
    4138:	e5970000 	ldr	r0, [r7]                                      
    413c:	e1a02001 	mov	r2, r1                                        
  rtems_device_major_number      major,                               
  rtems_device_minor_number      minor,                               
  void                          *arg,                                 
  const rtems_termios_callbacks *callbacks                            
)                                                                     
{                                                                     
    4140:	e58d3010 	str	r3, [sp, #16]                                 
  struct rtems_termios_tty *tty;                                      
                                                                      
  /*                                                                  
   * See if the device has already been opened                        
   */                                                                 
  sc = rtems_semaphore_obtain(                                        
    4144:	eb00092a 	bl	65f4 <rtems_semaphore_obtain>                  
    rtems_termios_ttyMutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT);            
  if (sc != RTEMS_SUCCESSFUL)                                         
    4148:	e250a000 	subs	sl, r0, #0                                   
    414c:	1a000021 	bne	41d8 <rtems_termios_open+0xbc>                
    return sc;                                                        
                                                                      
  for (tty = rtems_termios_ttyHead ; tty != NULL ; tty = tty->forw) { 
    4150:	e59fb3e8 	ldr	fp, [pc, #1000]	; 4540 <rtems_termios_open+0x424>
    4154:	e59b9000 	ldr	r9, [fp]                                      
    4158:	e3590000 	cmp	r9, #0                                        
    415c:	0a00002d 	beq	4218 <rtems_termios_open+0xfc>                
    4160:	e1a04009 	mov	r4, r9                                        
    4164:	ea000002 	b	4174 <rtems_termios_open+0x58>                  
    4168:	e5944000 	ldr	r4, [r4]                                      
    416c:	e3540000 	cmp	r4, #0                                        
    4170:	0a000028 	beq	4218 <rtems_termios_open+0xfc>                
    if ((tty->major == major) && (tty->minor == minor))               
    4174:	e594300c 	ldr	r3, [r4, #12]                                 
    4178:	e1530005 	cmp	r3, r5                                        
    417c:	1afffff9 	bne	4168 <rtems_termios_open+0x4c>                
    4180:	e5943010 	ldr	r3, [r4, #16]                                 
    4184:	e1530006 	cmp	r3, r6                                        
    4188:	1afffff6 	bne	4168 <rtems_termios_open+0x4c>                
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
  if (!tty->refcount++) {                                             
    418c:	e5943008 	ldr	r3, [r4, #8]                                  
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
    4190:	e5981000 	ldr	r1, [r8]                                      
  if (!tty->refcount++) {                                             
    4194:	e2832001 	add	r2, r3, #1                                    
    4198:	e3530000 	cmp	r3, #0                                        
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
                                                                      
  }                                                                   
  args->iop->data1 = tty;                                             
    419c:	e581402c 	str	r4, [r1, #44]	; 0x2c                          
  if (!tty->refcount++) {                                             
    41a0:	e5842008 	str	r2, [r4, #8]                                  
    41a4:	1a000009 	bne	41d0 <rtems_termios_open+0xb4>                
    if (tty->device.firstOpen)                                        
    41a8:	e5943098 	ldr	r3, [r4, #152]	; 0x98                         
    41ac:	e3530000 	cmp	r3, #0                                        
      (*tty->device.firstOpen)(major, minor, arg);                    
    41b0:	11a00005 	movne	r0, r5                                      
    41b4:	11a01006 	movne	r1, r6                                      
    41b8:	11a02008 	movne	r2, r8                                      
    41bc:	11a0e00f 	movne	lr, pc                                      
    41c0:	112fff13 	bxne	r3                                           
                                                                      
    /*                                                                
     * start I/O tasks, if needed                                     
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
    41c4:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    41c8:	e3530002 	cmp	r3, #2                                        
    41cc:	0a000004 	beq	41e4 <rtems_termios_open+0xc8>                
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    }                                                                 
  }                                                                   
  rtems_semaphore_release (rtems_termios_ttyMutex);                   
    41d0:	e5970000 	ldr	r0, [r7]                                      
    41d4:	eb00094f 	bl	6718 <rtems_semaphore_release>                 
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
    41d8:	e1a0000a 	mov	r0, sl                                        
    41dc:	e28dd014 	add	sp, sp, #20                                   
    41e0:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
    /*                                                                
     * start I/O tasks, if needed                                     
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_start(                                          
    41e4:	e59400c4 	ldr	r0, [r4, #196]	; 0xc4                         
    41e8:	e59f1354 	ldr	r1, [pc, #852]	; 4544 <rtems_termios_open+0x428>
    41ec:	e1a02004 	mov	r2, r4                                        
    41f0:	eb000a35 	bl	6acc <rtems_task_start>                        
        tty->rxTaskId, rtems_termios_rxdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
    41f4:	e3500000 	cmp	r0, #0                                        
    41f8:	1a0000b6 	bne	44d8 <rtems_termios_open+0x3bc>               
        rtems_fatal_error_occurred (sc);                              
                                                                      
      sc = rtems_task_start(                                          
    41fc:	e59400c8 	ldr	r0, [r4, #200]	; 0xc8                         
    4200:	e59f1340 	ldr	r1, [pc, #832]	; 4548 <rtems_termios_open+0x42c>
    4204:	e1a02004 	mov	r2, r4                                        
    4208:	eb000a2f 	bl	6acc <rtems_task_start>                        
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
    420c:	e3500000 	cmp	r0, #0                                        
    4210:	0affffee 	beq	41d0 <rtems_termios_open+0xb4>                
    4214:	ea0000af 	b	44d8 <rtems_termios_open+0x3bc>                 <== NOT EXECUTED
    static char c = 'a';                                              
                                                                      
    /*                                                                
     * Create a new device                                            
     */                                                               
    tty = calloc (1, sizeof (struct rtems_termios_tty));              
    4218:	e3a00001 	mov	r0, #1                                        
    421c:	e3a010e8 	mov	r1, #232	; 0xe8                               
    4220:	ebfff81e 	bl	22a0 <calloc>                                  
    if (tty == NULL) {                                                
    4224:	e2504000 	subs	r4, r0, #0                                   
    4228:	0a00009a 	beq	4498 <rtems_termios_open+0x37c>               
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate raw input buffer                                      
     */                                                               
    tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;                       
    422c:	e59f0318 	ldr	r0, [pc, #792]	; 454c <rtems_termios_open+0x430>
    4230:	e5903000 	ldr	r3, [r0]                                      
    4234:	e5843064 	str	r3, [r4, #100]	; 0x64                         
    tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);               
    4238:	e5940064 	ldr	r0, [r4, #100]	; 0x64                         
    423c:	ebfff982 	bl	284c <malloc>                                  
    if (tty->rawInBuf.theBuf == NULL) {                               
    4240:	e3500000 	cmp	r0, #0                                        
    }                                                                 
    /*                                                                
     * allocate raw input buffer                                      
     */                                                               
    tty->rawInBuf.Size = RAW_INPUT_BUFFER_SIZE;                       
    tty->rawInBuf.theBuf = malloc (tty->rawInBuf.Size);               
    4244:	e1a02000 	mov	r2, r0                                        
    4248:	e5840058 	str	r0, [r4, #88]	; 0x58                          
    if (tty->rawInBuf.theBuf == NULL) {                               
    424c:	0a00008f 	beq	4490 <rtems_termios_open+0x374>               
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate raw output buffer                                     
     */                                                               
    tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;                     
    4250:	e59f12f4 	ldr	r1, [pc, #756]	; 454c <rtems_termios_open+0x430>
    4254:	e5913004 	ldr	r3, [r1, #4]                                  
    4258:	e5843088 	str	r3, [r4, #136]	; 0x88                         
    tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);             
    425c:	e5940088 	ldr	r0, [r4, #136]	; 0x88                         
    4260:	e58d2008 	str	r2, [sp, #8]                                  
    4264:	ebfff978 	bl	284c <malloc>                                  
    if (tty->rawOutBuf.theBuf == NULL) {                              
    4268:	e3500000 	cmp	r0, #0                                        
    }                                                                 
    /*                                                                
     * allocate raw output buffer                                     
     */                                                               
    tty->rawOutBuf.Size = RAW_OUTPUT_BUFFER_SIZE;                     
    tty->rawOutBuf.theBuf = malloc (tty->rawOutBuf.Size);             
    426c:	e1a03000 	mov	r3, r0                                        
    4270:	e584007c 	str	r0, [r4, #124]	; 0x7c                         
    if (tty->rawOutBuf.theBuf == NULL) {                              
    4274:	e59d2008 	ldr	r2, [sp, #8]                                  
    4278:	0a000082 	beq	4488 <rtems_termios_open+0x36c>               
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
    427c:	e59f12c8 	ldr	r1, [pc, #712]	; 454c <rtems_termios_open+0x430>
    4280:	e5910008 	ldr	r0, [r1, #8]                                  
    4284:	e58d300c 	str	r3, [sp, #12]                                 
    4288:	e58d2008 	str	r2, [sp, #8]                                  
    428c:	ebfff96e 	bl	284c <malloc>                                  
    if (tty->cbuf == NULL) {                                          
    4290:	e3500000 	cmp	r0, #0                                        
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
    4294:	e584001c 	str	r0, [r4, #28]                                 
    if (tty->cbuf == NULL) {                                          
    4298:	e59d300c 	ldr	r3, [sp, #12]                                 
    429c:	0a000076 	beq	447c <rtems_termios_open+0x360>               
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * Initialize wakeup callbacks                                    
     */                                                               
    tty->tty_snd.sw_pfn = NULL;                                       
    42a0:	e3a03000 	mov	r3, #0                                        
    /*                                                                
     * link tty                                                       
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
    42a4:	e1590003 	cmp	r9, r3                                        
                                                                      
    /*                                                                
     * link tty                                                       
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
    tty->back = NULL;                                                 
    42a8:	e5843004 	str	r3, [r4, #4]                                  
      return RTEMS_NO_MEMORY;                                         
    }                                                                 
    /*                                                                
     * Initialize wakeup callbacks                                    
     */                                                               
    tty->tty_snd.sw_pfn = NULL;                                       
    42ac:	e58430d4 	str	r3, [r4, #212]	; 0xd4                         
    tty->tty_snd.sw_arg = NULL;                                       
    42b0:	e58430d8 	str	r3, [r4, #216]	; 0xd8                         
    tty->tty_rcv.sw_pfn = NULL;                                       
    42b4:	e58430dc 	str	r3, [r4, #220]	; 0xdc                         
    tty->tty_rcv.sw_arg = NULL;                                       
    42b8:	e58430e0 	str	r3, [r4, #224]	; 0xe0                         
    tty->tty_rcvwakeup  = 0;                                          
    42bc:	e58430e4 	str	r3, [r4, #228]	; 0xe4                         
    tty->forw = rtems_termios_ttyHead;                                
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
    42c0:	e59f3288 	ldr	r3, [pc, #648]	; 4550 <rtems_termios_open+0x434>
    42c4:	e5932000 	ldr	r2, [r3]                                      
     * link tty                                                       
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    42c8:	15894004 	strne	r4, [r9, #4]                                
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
    42cc:	e3520000 	cmp	r2, #0                                        
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
      rtems_build_name ('T', 'R', 'i', c),                            
    42d0:	e59f2274 	ldr	r2, [pc, #628]	; 454c <rtems_termios_open+0x430>
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
    if (rtems_termios_ttyTail == NULL)                                
      rtems_termios_ttyTail = tty;                                    
    42d4:	05834000 	streq	r4, [r3]                                    
    tty->major = major;                                               
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
    42d8:	e59f0274 	ldr	r0, [pc, #628]	; 4554 <rtems_termios_open+0x438>
      rtems_build_name ('T', 'R', 'i', c),                            
    42dc:	e5d2300c 	ldrb	r3, [r2, #12]                                
    tty->tty_rcvwakeup  = 0;                                          
                                                                      
    /*                                                                
     * link tty                                                       
     */                                                               
    tty->forw = rtems_termios_ttyHead;                                
    42e0:	e5849000 	str	r9, [r4]                                      
    tty->back = NULL;                                                 
    if (rtems_termios_ttyHead != NULL)                                
      rtems_termios_ttyHead->back = tty;                              
    rtems_termios_ttyHead = tty;                                      
    42e4:	e58b4000 	str	r4, [fp]                                      
    if (rtems_termios_ttyTail == NULL)                                
      rtems_termios_ttyTail = tty;                                    
                                                                      
    tty->minor = minor;                                               
    42e8:	e5846010 	str	r6, [r4, #16]                                 
    tty->major = major;                                               
    42ec:	e584500c 	str	r5, [r4, #12]                                 
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
    42f0:	e284c014 	add	ip, r4, #20                                   
    42f4:	e1830000 	orr	r0, r3, r0                                    
    42f8:	e3a01001 	mov	r1, #1                                        
    42fc:	e3a03000 	mov	r3, #0                                        
    4300:	e3a02054 	mov	r2, #84	; 0x54                                
    4304:	e58dc000 	str	ip, [sp]                                      
    4308:	eb000820 	bl	6390 <rtems_semaphore_create>                  
      rtems_build_name ('T', 'R', 'i', c),                            
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->isem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
    430c:	e2503000 	subs	r3, r0, #0                                   
                                                                      
    /*                                                                
     * Set up mutex semaphores                                        
     */                                                               
    sc = rtems_semaphore_create (                                     
      rtems_build_name ('T', 'R', 'i', c),                            
    4310:	e59f9234 	ldr	r9, [pc, #564]	; 454c <rtems_termios_open+0x430>
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->isem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
    4314:	1a00006f 	bne	44d8 <rtems_termios_open+0x3bc>               
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
      rtems_build_name ('T', 'R', 'o', c),                            
    4318:	e5d9200c 	ldrb	r2, [r9, #12]                                
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->isem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
    431c:	e59f0234 	ldr	r0, [pc, #564]	; 4558 <rtems_termios_open+0x43c>
    4320:	e284c018 	add	ip, r4, #24                                   
    4324:	e1820000 	orr	r0, r2, r0                                    
    4328:	e3a01001 	mov	r1, #1                                        
    432c:	e3a02054 	mov	r2, #84	; 0x54                                
    4330:	e58dc000 	str	ip, [sp]                                      
    4334:	eb000815 	bl	6390 <rtems_semaphore_create>                  
      rtems_build_name ('T', 'R', 'o', c),                            
      1,                                                              
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->osem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
    4338:	e2501000 	subs	r1, r0, #0                                   
    433c:	1a000065 	bne	44d8 <rtems_termios_open+0x3bc>               
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
      rtems_build_name ('T', 'R', 'x', c),                            
    4340:	e5d9300c 	ldrb	r3, [r9, #12]                                
      RTEMS_BINARY_SEMAPHORE | RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY,
      RTEMS_NO_PRIORITY,                                              
      &tty->osem);                                                    
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    sc = rtems_semaphore_create (                                     
    4344:	e59f0210 	ldr	r0, [pc, #528]	; 455c <rtems_termios_open+0x440>
    4348:	e284c08c 	add	ip, r4, #140	; 0x8c                           
    434c:	e1830000 	orr	r0, r3, r0                                    
    4350:	e3a02020 	mov	r2, #32                                       
    4354:	e1a03001 	mov	r3, r1                                        
    4358:	e58dc000 	str	ip, [sp]                                      
    435c:	eb00080b 	bl	6390 <rtems_semaphore_create>                  
      rtems_build_name ('T', 'R', 'x', c),                            
      0,                                                              
      RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,                     
      RTEMS_NO_PRIORITY,                                              
      &tty->rawOutBuf.Semaphore);                                     
    if (sc != RTEMS_SUCCESSFUL)                                       
    4360:	e250b000 	subs	fp, r0, #0                                   
    4364:	1a00005b 	bne	44d8 <rtems_termios_open+0x3bc>               
    tty->rawOutBufState = rob_idle;                                   
                                                                      
    /*                                                                
     * Set callbacks                                                  
     */                                                               
    tty->device = *callbacks;                                         
    4368:	e59de010 	ldr	lr, [sp, #16]                                 
    436c:	e8be000f 	ldm	lr!, {r0, r1, r2, r3}                         
    4370:	e284c098 	add	ip, r4, #152	; 0x98                           
    4374:	e8ac000f 	stmia	ip!, {r0, r1, r2, r3}                       
    4378:	e89e000f 	ldm	lr, {r0, r1, r2, r3}                          
    437c:	e88c000f 	stm	ip, {r0, r1, r2, r3}                          
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
    4380:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    4384:	e3530002 	cmp	r3, #2                                        
      RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_FIFO,                     
      RTEMS_NO_PRIORITY,                                              
      &tty->rawOutBuf.Semaphore);                                     
    if (sc != RTEMS_SUCCESSFUL)                                       
      rtems_fatal_error_occurred (sc);                                
    tty->rawOutBufState = rob_idle;                                   
    4388:	e584b094 	str	fp, [r4, #148]	; 0x94                         
    tty->device = *callbacks;                                         
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
    438c:	0a000052 	beq	44dc <rtems_termios_open+0x3c0>               
           &tty->rxTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
    4390:	e59430a0 	ldr	r3, [r4, #160]	; 0xa0                         
    4394:	e3530000 	cmp	r3, #0                                        
    4398:	0a000042 	beq	44a8 <rtems_termios_open+0x38c>               
    439c:	e59430b4 	ldr	r3, [r4, #180]	; 0xb4                         
    43a0:	e3530002 	cmp	r3, #2                                        
    43a4:	0a00003f 	beq	44a8 <rtems_termios_open+0x38c>               
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    43a8:	e3a03000 	mov	r3, #0                                        
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
    tty->termios.c_cc[VLNEXT] = '\026';                               
                                                                      
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    43ac:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
    43b0:	e59f0194 	ldr	r0, [pc, #404]	; 454c <rtems_termios_open+0x430>
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    43b4:	e594c064 	ldr	ip, [r4, #100]	; 0x64                         
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    43b8:	e5941064 	ldr	r1, [r4, #100]	; 0x64                         
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
    43bc:	e5d0200c 	ldrb	r2, [r0, #12]                                
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    43c0:	e0811081 	add	r1, r1, r1, lsl #1                            
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
    43c4:	e352007a 	cmp	r2, #122	; 0x7a                               
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    43c8:	e1a00121 	lsr	r0, r1, #2                                    
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
    43cc:	e2821001 	add	r1, r2, #1                                    
    }                                                                 
                                                                      
    /*                                                                
     * Set default parameters                                         
     */                                                               
    tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;           
    43d0:	e59f2188 	ldr	r2, [pc, #392]	; 4560 <rtems_termios_open+0x444>
    43d4:	e5842030 	str	r2, [r4, #48]	; 0x30                          
    tty->termios.c_oflag = OPOST | ONLCR | XTABS;                     
    43d8:	e59f2184 	ldr	r2, [pc, #388]	; 4564 <rtems_termios_open+0x448>
    43dc:	e5842034 	str	r2, [r4, #52]	; 0x34                          
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    43e0:	e59f2180 	ldr	r2, [pc, #384]	; 4568 <rtems_termios_open+0x44c>
    43e4:	e5842038 	str	r2, [r4, #56]	; 0x38                          
    tty->termios.c_lflag =                                            
    43e8:	e59f217c 	ldr	r2, [pc, #380]	; 456c <rtems_termios_open+0x450>
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    43ec:	e5c4304c 	strb	r3, [r4, #76]	; 0x4c                         
    tty->termios.c_cc[VEOL2] = '\000';                                
    43f0:	e5c43051 	strb	r3, [r4, #81]	; 0x51                         
    tty->termios.c_cc[VSTART] = '\021';                               
    43f4:	e3a03011 	mov	r3, #17                                       
     * Set default parameters                                         
     */                                                               
    tty->termios.c_iflag = BRKINT | ICRNL | IXON | IMAXBEL;           
    tty->termios.c_oflag = OPOST | ONLCR | XTABS;                     
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    tty->termios.c_lflag =                                            
    43f8:	e584203c 	str	r2, [r4, #60]	; 0x3c                          
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    43fc:	e5c43049 	strb	r3, [r4, #73]	; 0x49                         
    tty->termios.c_oflag = OPOST | ONLCR | XTABS;                     
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    4400:	e3a02003 	mov	r2, #3                                        
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    4404:	e3a03013 	mov	r3, #19                                       
    tty->termios.c_oflag = OPOST | ONLCR | XTABS;                     
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    4408:	e5c42041 	strb	r2, [r4, #65]	; 0x41                         
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    440c:	e5c4304a 	strb	r3, [r4, #74]	; 0x4a                         
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    4410:	e3a0201c 	mov	r2, #28                                       
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    4414:	e3a0301a 	mov	r3, #26                                       
    tty->termios.c_cflag = B9600 | CS8 | CREAD | CLOCAL;              
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    4418:	e5c42042 	strb	r2, [r4, #66]	; 0x42                         
    tty->termios.c_cc[VEOF] = '\004';                                 
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    441c:	e5c4304b 	strb	r3, [r4, #75]	; 0x4b                         
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    4420:	e3a0207f 	mov	r2, #127	; 0x7f                               
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    4424:	e3a03012 	mov	r3, #18                                       
    tty->termios.c_lflag =                                            
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    4428:	e5c42043 	strb	r2, [r4, #67]	; 0x43                         
    tty->termios.c_cc[VEOL] = '\000';                                 
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    442c:	e5c4304d 	strb	r3, [r4, #77]	; 0x4d                         
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    4430:	e3a02015 	mov	r2, #21                                       
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    4434:	e3a0300f 	mov	r3, #15                                       
       ISIG | ICANON | IEXTEN | ECHO | ECHOK | ECHOE | ECHOCTL;       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    4438:	e5c42044 	strb	r2, [r4, #68]	; 0x44                         
    tty->termios.c_cc[VEOL2] = '\000';                                
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    443c:	e5c4304e 	strb	r3, [r4, #78]	; 0x4e                         
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    4440:	e3a02004 	mov	r2, #4                                        
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
    4444:	e3a03017 	mov	r3, #23                                       
                                                                      
    tty->termios.c_cc[VINTR] = '\003';                                
    tty->termios.c_cc[VQUIT] = '\034';                                
    tty->termios.c_cc[VERASE] = '\177';                               
    tty->termios.c_cc[VKILL] = '\025';                                
    tty->termios.c_cc[VEOF] = '\004';                                 
    4448:	e5c42045 	strb	r2, [r4, #69]	; 0x45                         
    tty->termios.c_cc[VSTART] = '\021';                               
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
    444c:	e5c4304f 	strb	r3, [r4, #79]	; 0x4f                         
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
    4450:	e59f20f4 	ldr	r2, [pc, #244]	; 454c <rtems_termios_open+0x430>
    tty->termios.c_cc[VSTOP] = '\023';                                
    tty->termios.c_cc[VSUSP] = '\032';                                
    tty->termios.c_cc[VREPRINT] = '\022';                             
    tty->termios.c_cc[VDISCARD] = '\017';                             
    tty->termios.c_cc[VWERASE] = '\027';                              
    tty->termios.c_cc[VLNEXT] = '\026';                               
    4454:	e3a03016 	mov	r3, #22                                       
    4458:	e5c43050 	strb	r3, [r4, #80]	; 0x50                         
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
    445c:	059f30e8 	ldreq	r3, [pc, #232]	; 454c <rtems_termios_open+0x430>
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
    4460:	e5c2100c 	strb	r1, [r2, #12]                                
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    4464:	e1a0c0ac 	lsr	ip, ip, #1                                    
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
    4468:	03a02061 	moveq	r2, #97	; 0x61                              
    /* start with no flow control, clear flow control flags */        
    tty->flow_ctrl = 0;                                               
    /*                                                                
     * set low/highwater mark for XON/XOFF support                    
     */                                                               
    tty->lowwater  = tty->rawInBuf.Size * 1/2;                        
    446c:	e584c0bc 	str	ip, [r4, #188]	; 0xbc                         
    tty->highwater = tty->rawInBuf.Size * 3/4;                        
    4470:	e58400c0 	str	r0, [r4, #192]	; 0xc0                         
    /*                                                                
     * Bump name characer                                             
     */                                                               
    if (c++ == 'z')                                                   
      c = 'a';                                                        
    4474:	05c3200c 	strbeq	r2, [r3, #12]                              
    4478:	eaffff43 	b	418c <rtems_termios_open+0x70>                  
    /*                                                                
     * allocate cooked buffer                                         
     */                                                               
    tty->cbuf  = malloc (CBUFSIZE);                                   
    if (tty->cbuf == NULL) {                                          
            free((void *)(tty->rawOutBuf.theBuf));                    
    447c:	e1a00003 	mov	r0, r3                                        
    4480:	ebfff823 	bl	2514 <free>                                    
            free((void *)(tty->rawInBuf.theBuf));                     
    4484:	e59d2008 	ldr	r2, [sp, #8]                                  
    4488:	e1a00002 	mov	r0, r2                                        
    448c:	ebfff820 	bl	2514 <free>                                    
            free(tty);                                                
    4490:	e1a00004 	mov	r0, r4                                        
    4494:	ebfff81e 	bl	2514 <free>                                    
      rtems_semaphore_release (rtems_termios_ttyMutex);               
    4498:	e5970000 	ldr	r0, [r7]                                      
    449c:	eb00089d 	bl	6718 <rtems_semaphore_release>                 
      return RTEMS_NO_MEMORY;                                         
    44a0:	e3a0a01a 	mov	sl, #26                                       
    44a4:	eaffff4b 	b	41d8 <rtems_termios_open+0xbc>                  
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){   
      sc = rtems_semaphore_create (                                   
        rtems_build_name ('T', 'R', 'r', c),                          
    44a8:	e59f009c 	ldr	r0, [pc, #156]	; 454c <rtems_termios_open+0x430>
    44ac:	e5d0300c 	ldrb	r3, [r0, #12]                                
        rtems_fatal_error_occurred (sc);                              
                                                                      
    }                                                                 
    if ((tty->device.pollRead == NULL) ||                             
        (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN)){   
      sc = rtems_semaphore_create (                                   
    44b0:	e59f00b8 	ldr	r0, [pc, #184]	; 4570 <rtems_termios_open+0x454>
    44b4:	e3a01000 	mov	r1, #0                                        
    44b8:	e284c068 	add	ip, r4, #104	; 0x68                           
    44bc:	e1830000 	orr	r0, r3, r0                                    
    44c0:	e3a02024 	mov	r2, #36	; 0x24                                
    44c4:	e1a03001 	mov	r3, r1                                        
    44c8:	e58dc000 	str	ip, [sp]                                      
    44cc:	eb0007af 	bl	6390 <rtems_semaphore_create>                  
        rtems_build_name ('T', 'R', 'r', c),                          
        0,                                                            
        RTEMS_SIMPLE_BINARY_SEMAPHORE | RTEMS_PRIORITY,               
        RTEMS_NO_PRIORITY,                                            
        &tty->rawInBuf.Semaphore);                                    
      if (sc != RTEMS_SUCCESSFUL)                                     
    44d0:	e3500000 	cmp	r0, #0                                        
    44d4:	0affffb3 	beq	43a8 <rtems_termios_open+0x28c>               
        rtems_fatal_error_occurred (sc);                              
                                                                      
      sc = rtems_task_start(                                          
        tty->txTaskId, rtems_termios_txdaemon, (rtems_task_argument)tty);
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    44d8:	eb000a1f 	bl	6d5c <rtems_fatal_error_occurred>              
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_create (                                        
                                   rtems_build_name ('T', 'x', 'T', c),
    44dc:	e5d9300c 	ldrb	r3, [r9, #12]                                
                                                                      
    /*                                                                
     * Create I/O tasks                                               
     */                                                               
    if (tty->device.outputUsesInterrupts == TERMIOS_TASK_DRIVEN) {    
      sc = rtems_task_create (                                        
    44e0:	e59f008c 	ldr	r0, [pc, #140]	; 4574 <rtems_termios_open+0x458>
    44e4:	e284c0c8 	add	ip, r4, #200	; 0xc8                           
    44e8:	e1830000 	orr	r0, r3, r0                                    
    44ec:	e3a0100a 	mov	r1, #10                                       
    44f0:	e3a02b01 	mov	r2, #1024	; 0x400                             
    44f4:	e3a03c05 	mov	r3, #1280	; 0x500                             
    44f8:	e88d1800 	stm	sp, {fp, ip}                                  
    44fc:	eb0008c4 	bl	6814 <rtems_task_create>                       
           TERMIOS_TXTASK_STACKSIZE,                                  
           RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |                    
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->txTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
    4500:	e250e000 	subs	lr, r0, #0                                   
    4504:	1afffff3 	bne	44d8 <rtems_termios_open+0x3bc>               
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_task_create (                                        
                                   rtems_build_name ('R', 'x', 'T', c),
    4508:	e5d9300c 	ldrb	r3, [r9, #12]                                
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->txTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      sc = rtems_task_create (                                        
    450c:	e59f0064 	ldr	r0, [pc, #100]	; 4578 <rtems_termios_open+0x45c>
    4510:	e284c0c4 	add	ip, r4, #196	; 0xc4                           
    4514:	e1830000 	orr	r0, r3, r0                                    
    4518:	e3a01009 	mov	r1, #9                                        
    451c:	e3a02b01 	mov	r2, #1024	; 0x400                             
    4520:	e3a03c05 	mov	r3, #1280	; 0x500                             
    4524:	e58de000 	str	lr, [sp]                                      
    4528:	e58dc004 	str	ip, [sp, #4]                                  
    452c:	eb0008b8 	bl	6814 <rtems_task_create>                       
           TERMIOS_RXTASK_STACKSIZE,                                  
           RTEMS_NO_PREEMPT | RTEMS_NO_TIMESLICE |                    
           RTEMS_NO_ASR,                                              
           RTEMS_NO_FLOATING_POINT | RTEMS_LOCAL,                     
           &tty->rxTaskId);                                           
      if (sc != RTEMS_SUCCESSFUL)                                     
    4530:	e3500000 	cmp	r0, #0                                        
    4534:	0affff95 	beq	4390 <rtems_termios_open+0x274>               
    4538:	eaffffe6 	b	44d8 <rtems_termios_open+0x3bc>                 <== NOT EXECUTED
                                                                      

00004bdc <rtems_termios_puts>: const unsigned char *buf = _buf; unsigned int newHead; rtems_interrupt_level level; rtems_status_code sc; if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {
    4bdc:	e59230b4 	ldr	r3, [r2, #180]	; 0xb4                         
    4be0:	e3530000 	cmp	r3, #0                                        
 * Send characters to device-specific code                            
 */                                                                   
void                                                                  
rtems_termios_puts (                                                  
  const void *_buf, size_t len, struct rtems_termios_tty *tty)        
{                                                                     
    4be4:	e92d47f0 	push	{r4, r5, r6, r7, r8, r9, sl, lr}             
    4be8:	e1a04002 	mov	r4, r2                                        
    4bec:	e1a09000 	mov	r9, r0                                        
    4bf0:	e1a0a001 	mov	sl, r1                                        
  const unsigned char *buf = _buf;                                    
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    4bf4:	0a000037 	beq	4cd8 <rtems_termios_puts+0xfc>                
    (*tty->device.write)(tty->minor, buf, len);                       
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
  while (len) {                                                       
    4bf8:	e3510000 	cmp	r1, #0                                        
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, buf, len);                       
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
    4bfc:	e5928080 	ldr	r8, [r2, #128]	; 0x80                         
  while (len) {                                                       
    4c00:	08bd87f0 	popeq	{r4, r5, r6, r7, r8, r9, sl, pc}            
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
    rtems_interrupt_disable (level);                                  
    while (newHead == tty->rawOutBuf.Tail) {                          
      tty->rawOutBufState = rob_wait;                                 
    4c04:	e3a07002 	mov	r7, #2                                        
     *  len -= ncopy                                                  
     *                                                                
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
    4c08:	e5941088 	ldr	r1, [r4, #136]	; 0x88                         
    4c0c:	e2880001 	add	r0, r8, #1                                    
    4c10:	eb00472b 	bl	168c4 <__umodsi3>                              
    4c14:	e1a08000 	mov	r8, r0                                        
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    4c18:	e10f5000 	mrs	r5, CPSR                                      
    4c1c:	e3853080 	orr	r3, r5, #128	; 0x80                           
    4c20:	e129f003 	msr	CPSR_fc, r3                                   
    rtems_interrupt_disable (level);                                  
    while (newHead == tty->rawOutBuf.Tail) {                          
    4c24:	e5946084 	ldr	r6, [r4, #132]	; 0x84                         
    4c28:	e1560000 	cmp	r6, r0                                        
    4c2c:	1a00000d 	bne	4c68 <rtems_termios_puts+0x8c>                
      tty->rawOutBufState = rob_wait;                                 
    4c30:	e5847094 	str	r7, [r4, #148]	; 0x94                         
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4c34:	e129f005 	msr	CPSR_fc, r5                                   
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
    4c38:	e3a01000 	mov	r1, #0                                        
    4c3c:	e594008c 	ldr	r0, [r4, #140]	; 0x8c                         
    4c40:	e1a02001 	mov	r2, r1                                        
    4c44:	eb00066a 	bl	65f4 <rtems_semaphore_obtain>                  
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
    4c48:	e3500000 	cmp	r0, #0                                        
    4c4c:	1a000027 	bne	4cf0 <rtems_termios_puts+0x114>               
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    4c50:	e10f5000 	mrs	r5, CPSR                                      
    4c54:	e3853080 	orr	r3, r5, #128	; 0x80                           
    4c58:	e129f003 	msr	CPSR_fc, r3                                   
     * To minimize latency, the memcpy should be done                 
     * with interrupts enabled.                                       
     */                                                               
    newHead = (newHead + 1) % tty->rawOutBuf.Size;                    
    rtems_interrupt_disable (level);                                  
    while (newHead == tty->rawOutBuf.Tail) {                          
    4c5c:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         
    4c60:	e1530006 	cmp	r3, r6                                        
    4c64:	0afffff1 	beq	4c30 <rtems_termios_puts+0x54>                
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
    4c68:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         
    4c6c:	e4d91001 	ldrb	r1, [r9], #1                                 
    4c70:	e594207c 	ldr	r2, [r4, #124]	; 0x7c                         
    4c74:	e7c21003 	strb	r1, [r2, r3]                                 
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
    4c78:	e5943094 	ldr	r3, [r4, #148]	; 0x94                         
    4c7c:	e3530000 	cmp	r3, #0                                        
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
      rtems_interrupt_disable (level);                                
    }                                                                 
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
    tty->rawOutBuf.Head = newHead;                                    
    4c80:	e5848080 	str	r8, [r4, #128]	; 0x80                         
    if (tty->rawOutBufState == rob_idle) {                            
    4c84:	1a000007 	bne	4ca8 <rtems_termios_puts+0xcc>                
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
    4c88:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    4c8c:	e3130010 	tst	r3, #16                                       
    4c90:	0a000008 	beq	4cb8 <rtems_termios_puts+0xdc>                
        (*tty->device.write)(                                         
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
      } else {                                                        
        /* remember that output has been stopped due to flow ctrl*/   
        tty->flow_ctrl |= FL_OSTOP;                                   
    4c94:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4c98:	e3833020 	orr	r3, r3, #32                                   <== NOT EXECUTED
    4c9c:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
      }                                                               
      tty->rawOutBufState = rob_busy;                                 
    4ca0:	e3a03001 	mov	r3, #1                                        
    4ca4:	e5843094 	str	r3, [r4, #148]	; 0x94                         
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4ca8:	e129f005 	msr	CPSR_fc, r5                                   
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, buf, len);                       
    return;                                                           
  }                                                                   
  newHead = tty->rawOutBuf.Head;                                      
  while (len) {                                                       
    4cac:	e25aa001 	subs	sl, sl, #1                                   
    4cb0:	1affffd4 	bne	4c08 <rtems_termios_puts+0x2c>                
    4cb4:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
        (*tty->device.write)(                                         
          tty->minor, &tty->rawOutBuf.theBuf[tty->rawOutBuf.Tail],1); 
    4cb8:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         
    tty->rawOutBuf.theBuf[tty->rawOutBuf.Head] = *buf++;              
    tty->rawOutBuf.Head = newHead;                                    
    if (tty->rawOutBufState == rob_idle) {                            
      /* check, whether XOFF has been received */                     
      if (!(tty->flow_ctrl & FL_ORCVXOF)) {                           
        (*tty->device.write)(                                         
    4cbc:	e594107c 	ldr	r1, [r4, #124]	; 0x7c                         
    4cc0:	e5940010 	ldr	r0, [r4, #16]                                 
    4cc4:	e0811003 	add	r1, r1, r3                                    
    4cc8:	e3a02001 	mov	r2, #1                                        
    4ccc:	e1a0e00f 	mov	lr, pc                                        
    4cd0:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         
    4cd4:	eafffff1 	b	4ca0 <rtems_termios_puts+0xc4>                  
  unsigned int newHead;                                               
  rtems_interrupt_level level;                                        
  rtems_status_code sc;                                               
                                                                      
  if (tty->device.outputUsesInterrupts == TERMIOS_POLLED) {           
    (*tty->device.write)(tty->minor, buf, len);                       
    4cd8:	e5920010 	ldr	r0, [r2, #16]                                 
    4cdc:	e1a01009 	mov	r1, r9                                        
    4ce0:	e1a0200a 	mov	r2, sl                                        
    4ce4:	e1a0e00f 	mov	lr, pc                                        
    4ce8:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         
    return;                                                           
    4cec:	e8bd87f0 	pop	{r4, r5, r6, r7, r8, r9, sl, pc}              
      tty->rawOutBufState = rob_wait;                                 
      rtems_interrupt_enable (level);                                 
      sc = rtems_semaphore_obtain(                                    
        tty->rawOutBuf.Semaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);      
      if (sc != RTEMS_SUCCESSFUL)                                     
        rtems_fatal_error_occurred (sc);                              
    4cf0:	eb000819 	bl	6d5c <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

000053f4 <rtems_termios_read>: return RTEMS_SUCCESSFUL; } rtems_status_code rtems_termios_read (void *arg) {
    53f4:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
    53f8:	e5903000 	ldr	r3, [r0]                                      
    53fc:	e593402c 	ldr	r4, [r3, #44]	; 0x2c                          
  uint32_t   count = args->count;                                     
  char      *buffer = args->buffer;                                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    5400:	e3a01000 	mov	r1, #0                                        
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_read (void *arg)                                        
{                                                                     
    5404:	e1a09000 	mov	r9, r0                                        
    5408:	e24dd008 	sub	sp, sp, #8                                    
  struct rtems_termios_tty *tty = args->iop->data1;                   
  uint32_t   count = args->count;                                     
  char      *buffer = args->buffer;                                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    540c:	e5940014 	ldr	r0, [r4, #20]                                 
    5410:	e1a02001 	mov	r2, r1                                        
rtems_status_code                                                     
rtems_termios_read (void *arg)                                        
{                                                                     
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
  uint32_t   count = args->count;                                     
    5414:	e5998010 	ldr	r8, [r9, #16]                                 
  char      *buffer = args->buffer;                                   
    5418:	e599a00c 	ldr	sl, [r9, #12]                                 
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    541c:	eb000474 	bl	65f4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
    5420:	e3500000 	cmp	r0, #0                                        
    5424:	e58d0000 	str	r0, [sp]                                      
    5428:	1a00000e 	bne	5468 <rtems_termios_read+0x74>                
    return sc;                                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_read != NULL) {             
    542c:	e59420cc 	ldr	r2, [r4, #204]	; 0xcc                         
    5430:	e59f3358 	ldr	r3, [pc, #856]	; 5790 <rtems_termios_read+0x39c>
    5434:	e0833282 	add	r3, r3, r2, lsl #5                            
    5438:	e5933008 	ldr	r3, [r3, #8]                                  
    543c:	e3530000 	cmp	r3, #0                                        
    5440:	0a00000b 	beq	5474 <rtems_termios_read+0x80>                
    sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);          
    5444:	e1a00004 	mov	r0, r4                                        
    5448:	e1a01009 	mov	r1, r9                                        
    544c:	e1a0e00f 	mov	lr, pc                                        
    5450:	e12fff13 	bx	r3                                             
    tty->tty_rcvwakeup = 0;                                           
    5454:	e3a03000 	mov	r3, #0                                        
  sc = rtems_semaphore_obtain (tty->isem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
  if (sc != RTEMS_SUCCESSFUL)                                         
    return sc;                                                        
                                                                      
  if (rtems_termios_linesw[tty->t_line].l_read != NULL) {             
    sc = rtems_termios_linesw[tty->t_line].l_read(tty,args);          
    5458:	e58d0000 	str	r0, [sp]                                      
    tty->tty_rcvwakeup = 0;                                           
    545c:	e58430e4 	str	r3, [r4, #228]	; 0xe4                         
    rtems_semaphore_release (tty->isem);                              
    5460:	e5940014 	ldr	r0, [r4, #20]                                 
    5464:	eb0004ab 	bl	6718 <rtems_semaphore_release>                 
  }                                                                   
  args->bytes_moved = args->count - count;                            
  tty->tty_rcvwakeup = 0;                                             
  rtems_semaphore_release (tty->isem);                                
  return sc;                                                          
}                                                                     
    5468:	e59d0000 	ldr	r0, [sp]                                      
    546c:	e28dd008 	add	sp, sp, #8                                    
    5470:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    tty->tty_rcvwakeup = 0;                                           
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    5474:	e5942024 	ldr	r2, [r4, #36]	; 0x24                          
    5478:	e5943020 	ldr	r3, [r4, #32]                                 
    547c:	e1520003 	cmp	r2, r3                                        
    5480:	0a000018 	beq	54e8 <rtems_termios_read+0xf4>                
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    5484:	e3580000 	cmp	r8, #0                                        
    5488:	0a00000e 	beq	54c8 <rtems_termios_read+0xd4>                
    548c:	e2842020 	add	r2, r4, #32                                   
    5490:	e892000c 	ldm	r2, {r2, r3}                                  
    5494:	e1530002 	cmp	r3, r2                                        
    5498:	ba000003 	blt	54ac <rtems_termios_read+0xb8>                
    549c:	ea000009 	b	54c8 <rtems_termios_read+0xd4>                  
    54a0:	e5942020 	ldr	r2, [r4, #32]                                 
    54a4:	e1520003 	cmp	r2, r3                                        
    54a8:	da000006 	ble	54c8 <rtems_termios_read+0xd4>                
    *buffer++ = tty->cbuf[tty->cindex++];                             
    54ac:	e594201c 	ldr	r2, [r4, #28]                                 
    54b0:	e7d22003 	ldrb	r2, [r2, r3]                                 
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    54b4:	e2588001 	subs	r8, r8, #1                                   
    *buffer++ = tty->cbuf[tty->cindex++];                             
    54b8:	e2833001 	add	r3, r3, #1                                    
    54bc:	e4ca2001 	strb	r2, [sl], #1                                 
    54c0:	e5843024 	str	r3, [r4, #36]	; 0x24                          
      sc = fillBufferQueue (tty);                                     
                                                                      
    if (sc != RTEMS_SUCCESSFUL)                                       
      tty->cindex = tty->ccount = 0;                                  
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    54c4:	1afffff5 	bne	54a0 <rtems_termios_read+0xac>                
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
    54c8:	e5993010 	ldr	r3, [r9, #16]                                 
    54cc:	e0688003 	rsb	r8, r8, r3                                    
  tty->tty_rcvwakeup = 0;                                             
    54d0:	e3a03000 	mov	r3, #0                                        
  }                                                                   
  while (count && (tty->cindex < tty->ccount)) {                      
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
    54d4:	e5898018 	str	r8, [r9, #24]                                 
  tty->tty_rcvwakeup = 0;                                             
  rtems_semaphore_release (tty->isem);                                
    54d8:	e5940014 	ldr	r0, [r4, #20]                                 
  while (count && (tty->cindex < tty->ccount)) {                      
    *buffer++ = tty->cbuf[tty->cindex++];                             
    count--;                                                          
  }                                                                   
  args->bytes_moved = args->count - count;                            
  tty->tty_rcvwakeup = 0;                                             
    54dc:	e58430e4 	str	r3, [r4, #228]	; 0xe4                         
  rtems_semaphore_release (tty->isem);                                
    54e0:	eb00048c 	bl	6718 <rtems_semaphore_release>                 
  return sc;                                                          
    54e4:	eaffffdf 	b	5468 <rtems_termios_read+0x74>                  
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
    tty->read_start_column = tty->column;                             
    if (tty->device.pollRead != NULL &&                               
    54e8:	e59430a0 	ldr	r3, [r4, #160]	; 0xa0                         
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
    54ec:	e59d1000 	ldr	r1, [sp]                                      
    tty->read_start_column = tty->column;                             
    54f0:	e5942028 	ldr	r2, [r4, #40]	; 0x28                          
    if (tty->device.pollRead != NULL &&                               
    54f4:	e3530000 	cmp	r3, #0                                        
    rtems_semaphore_release (tty->isem);                              
    return sc;                                                        
  }                                                                   
                                                                      
  if (tty->cindex == tty->ccount) {                                   
    tty->cindex = tty->ccount = 0;                                    
    54f8:	e5841020 	str	r1, [r4, #32]                                 
    54fc:	e5841024 	str	r1, [r4, #36]	; 0x24                          
    tty->read_start_column = tty->column;                             
    5500:	e584202c 	str	r2, [r4, #44]	; 0x2c                          
    if (tty->device.pollRead != NULL &&                               
    5504:	0a000002 	beq	5514 <rtems_termios_read+0x120>               
    5508:	e59420b4 	ldr	r2, [r4, #180]	; 0xb4                         
    550c:	e3520000 	cmp	r2, #0                                        
    5510:	0a000063 	beq	56a4 <rtems_termios_read+0x2b0>               
 * Fill the input buffer from the raw input queue                     
 */                                                                   
static rtems_status_code                                              
fillBufferQueue (struct rtems_termios_tty *tty)                       
{                                                                     
  rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;        
    5514:	e5946074 	ldr	r6, [r4, #116]	; 0x74                         
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
                       (tty->ccount < (CBUFSIZE-1))) {                
    5518:	e59f7274 	ldr	r7, [pc, #628]	; 5794 <rtems_termios_read+0x3a0>
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
          % tty->rawInBuf.Size)                                       
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
    551c:	e59fb274 	ldr	fp, [pc, #628]	; 5798 <rtems_termios_read+0x3a4>
static rtems_status_code                                              
fillBufferQueue (struct rtems_termios_tty *tty)                       
{                                                                     
  rtems_interval timeout = tty->rawInBufSemaphoreFirstTimeout;        
  rtems_status_code sc;                                               
  int               wait = 1;                                         
    5520:	e3a05001 	mov	r5, #1                                        
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5524:	e594205c 	ldr	r2, [r4, #92]	; 0x5c                          
    5528:	e5943060 	ldr	r3, [r4, #96]	; 0x60                          
    552c:	e1520003 	cmp	r2, r3                                        
    5530:	0a000046 	beq	5650 <rtems_termios_read+0x25c>               
                       (tty->ccount < (CBUFSIZE-1))) {                
    5534:	e5973008 	ldr	r3, [r7, #8]                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5538:	e5942020 	ldr	r2, [r4, #32]                                 
                       (tty->ccount < (CBUFSIZE-1))) {                
    553c:	e2433001 	sub	r3, r3, #1                                    
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5540:	e1520003 	cmp	r2, r3                                        
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
             ==                (FL_MDXON | FL_ISNTXOF))               
            && ((tty->rawOutBufState == rob_idle)                     
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
    5544:	32843049 	addcc	r3, r4, #73	; 0x49                          
    5548:	358d3004 	strcc	r3, [sp, #4]                                
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    554c:	3a00000d 	bcc	5588 <rtems_termios_read+0x194>               
    5550:	ea00003e 	b	5650 <rtems_termios_read+0x25c>                 <== NOT EXECUTED
        }                                                             
      }                                                               
                                                                      
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
        if (siproc (c, tty))                                          
    5554:	ebffff5d 	bl	52d0 <siproc>                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5558:	e594205c 	ldr	r2, [r4, #92]	; 0x5c                          
    555c:	e5943060 	ldr	r3, [r4, #96]	; 0x60                          
      }                                                               
                                                                      
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
        if (siproc (c, tty))                                          
          wait = 0;                                                   
    5560:	e3500000 	cmp	r0, #0                                        
    5564:	13a05000 	movne	r5, #0                                      
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5568:	e1520003 	cmp	r2, r3                                        
      } else {                                                        
        siproc (c, tty);                                              
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
          wait = 0;                                                   
      }                                                               
      timeout = tty->rawInBufSemaphoreTimeout;                        
    556c:	e5946070 	ldr	r6, [r4, #112]	; 0x70                         
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5570:	0a000036 	beq	5650 <rtems_termios_read+0x25c>               
                       (tty->ccount < (CBUFSIZE-1))) {                
    5574:	e5973008 	ldr	r3, [r7, #8]                                  
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5578:	e5942020 	ldr	r2, [r4, #32]                                 
                       (tty->ccount < (CBUFSIZE-1))) {                
    557c:	e2433001 	sub	r3, r3, #1                                    
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5580:	e1520003 	cmp	r2, r3                                        
    5584:	2a000031 	bcs	5650 <rtems_termios_read+0x25c>               
                       (tty->ccount < (CBUFSIZE-1))) {                
      unsigned char c;                                                
      unsigned int newHead;                                           
                                                                      
      newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;        
    5588:	e594005c 	ldr	r0, [r4, #92]	; 0x5c                          
    558c:	e5941064 	ldr	r1, [r4, #100]	; 0x64                         
    5590:	e2800001 	add	r0, r0, #1                                    
    5594:	eb0044ca 	bl	168c4 <__umodsi3>                              
      c = tty->rawInBuf.theBuf[newHead];                              
    5598:	e5943058 	ldr	r3, [r4, #88]	; 0x58                          
    559c:	e7d36000 	ldrb	r6, [r3, r0]                                 
      tty->rawInBuf.Head = newHead;                                   
    55a0:	e584005c 	str	r0, [r4, #92]	; 0x5c                          
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
    55a4:	e5943060 	ldr	r3, [r4, #96]	; 0x60                          
    55a8:	e5942064 	ldr	r2, [r4, #100]	; 0x64                         
    55ac:	e0823003 	add	r3, r2, r3                                    
          % tty->rawInBuf.Size)                                       
    55b0:	e0600003 	rsb	r0, r0, r3                                    
    55b4:	e5941064 	ldr	r1, [r4, #100]	; 0x64                         
    55b8:	eb0044c1 	bl	168c4 <__umodsi3>                              
      unsigned int newHead;                                           
                                                                      
      newHead = (tty->rawInBuf.Head + 1) % tty->rawInBuf.Size;        
      c = tty->rawInBuf.theBuf[newHead];                              
      tty->rawInBuf.Head = newHead;                                   
      if(((tty->rawInBuf.Tail-newHead+tty->rawInBuf.Size)             
    55bc:	e59430bc 	ldr	r3, [r4, #188]	; 0xbc                         
    55c0:	e1500003 	cmp	r0, r3                                        
    55c4:	2a000012 	bcs	5614 <rtems_termios_read+0x220>               
          % tty->rawInBuf.Size)                                       
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
    55c8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    55cc:	e3c33001 	bic	r3, r3, #1                                    
    55d0:	e58430b8 	str	r3, [r4, #184]	; 0xb8                         
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
    55d4:	e59f31bc 	ldr	r3, [pc, #444]	; 5798 <rtems_termios_read+0x3a4>
    55d8:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         
    55dc:	e0023003 	and	r3, r2, r3                                    
    55e0:	e153000b 	cmp	r3, fp                                        
    55e4:	0a000022 	beq	5674 <rtems_termios_read+0x280>               
            && ((tty->rawOutBufState == rob_idle)                     
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
            tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);     
        } else if (tty->flow_ctrl & FL_MDRTS) {                       
    55e8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    55ec:	e3130c01 	tst	r3, #256	; 0x100                              
    55f0:	0a000007 	beq	5614 <rtems_termios_read+0x220>               
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
    55f4:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
    55f8:	e59430b0 	ldr	r3, [r4, #176]	; 0xb0                         <== NOT EXECUTED
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
            tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);     
        } else if (tty->flow_ctrl & FL_MDRTS) {                       
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
    55fc:	e3c22004 	bic	r2, r2, #4                                    <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
    5600:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
          || (tty->flow_ctrl & FL_OSTOP))) {                          
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
            tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);     
        } else if (tty->flow_ctrl & FL_MDRTS) {                       
          tty->flow_ctrl &= ~FL_IRTSOFF;                              
    5604:	e58420b8 	str	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
          /* activate RTS line */                                     
          if (tty->device.startRemoteTx != NULL) {                    
            tty->device.startRemoteTx(tty->minor);                    
    5608:	15940010 	ldrne	r0, [r4, #16]                               <== NOT EXECUTED
    560c:	11a0e00f 	movne	lr, pc                                      <== NOT EXECUTED
    5610:	112fff13 	bxne	r3                                           <== NOT EXECUTED
          }                                                           
        }                                                             
      }                                                               
                                                                      
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
    5614:	e594303c 	ldr	r3, [r4, #60]	; 0x3c                          
    5618:	e3130002 	tst	r3, #2                                        
        if (siproc (c, tty))                                          
    561c:	e1a00006 	mov	r0, r6                                        
    5620:	e1a01004 	mov	r1, r4                                        
          }                                                           
        }                                                             
      }                                                               
                                                                      
      /* continue processing new character */                         
      if (tty->termios.c_lflag & ICANON) {                            
    5624:	1affffca 	bne	5554 <rtems_termios_read+0x160>               
        if (siproc (c, tty))                                          
          wait = 0;                                                   
      } else {                                                        
        siproc (c, tty);                                              
    5628:	ebffff28 	bl	52d0 <siproc>                                  <== NOT EXECUTED
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
    562c:	e5d43047 	ldrb	r3, [r4, #71]	; 0x47                         <== NOT EXECUTED
    5630:	e5942020 	ldr	r2, [r4, #32]                                 <== NOT EXECUTED
          wait = 0;                                                   
    5634:	e1520003 	cmp	r2, r3                                        <== NOT EXECUTED
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5638:	e594205c 	ldr	r2, [r4, #92]	; 0x5c                          <== NOT EXECUTED
    563c:	e5943060 	ldr	r3, [r4, #96]	; 0x60                          <== NOT EXECUTED
        if (siproc (c, tty))                                          
          wait = 0;                                                   
      } else {                                                        
        siproc (c, tty);                                              
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
          wait = 0;                                                   
    5640:	a3a05000 	movge	r5, #0                                      <== NOT EXECUTED
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    5644:	e1520003 	cmp	r2, r3                                        <== NOT EXECUTED
      } else {                                                        
        siproc (c, tty);                                              
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
          wait = 0;                                                   
      }                                                               
      timeout = tty->rawInBufSemaphoreTimeout;                        
    5648:	e5946070 	ldr	r6, [r4, #112]	; 0x70                         <== NOT EXECUTED
                                                                      
  while ( wait ) {                                                    
    /*                                                                
     * Process characters read from raw queue                         
     */                                                               
    while ((tty->rawInBuf.Head != tty->rawInBuf.Tail) &&              
    564c:	1affffc8 	bne	5574 <rtems_termios_read+0x180>               <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * Wait for characters                                            
     */                                                               
    if ( wait ) {                                                     
    5650:	e3550000 	cmp	r5, #0                                        
    5654:	0affff8a 	beq	5484 <rtems_termios_read+0x90>                
      sc = rtems_semaphore_obtain(                                    
    5658:	e2840068 	add	r0, r4, #104	; 0x68                           
    565c:	e8900003 	ldm	r0, {r0, r1}                                  
    5660:	e1a02006 	mov	r2, r6                                        
    5664:	eb0003e2 	bl	65f4 <rtems_semaphore_obtain>                  
        tty->rawInBuf.Semaphore, tty->rawInBufSemaphoreOptions, timeout);
      if (sc != RTEMS_SUCCESSFUL)                                     
    5668:	e3500000 	cmp	r0, #0                                        
    566c:	0affffac 	beq	5524 <rtems_termios_read+0x130>               
    5670:	eaffff83 	b	5484 <rtems_termios_read+0x90>                  <== NOT EXECUTED
         < tty->lowwater) {                                           
        tty->flow_ctrl &= ~FL_IREQXOF;                                
        /* if tx stopped and XON should be sent... */                 
        if (((tty->flow_ctrl & (FL_MDXON | FL_ISNTXOF))               
             ==                (FL_MDXON | FL_ISNTXOF))               
            && ((tty->rawOutBufState == rob_idle)                     
    5674:	e5943094 	ldr	r3, [r4, #148]	; 0x94                         <== NOT EXECUTED
    5678:	e3530000 	cmp	r3, #0                                        <== NOT EXECUTED
    567c:	0a000002 	beq	568c <rtems_termios_read+0x298>               <== NOT EXECUTED
          || (tty->flow_ctrl & FL_OSTOP))) {                          
    5680:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    5684:	e3130020 	tst	r3, #32                                       <== NOT EXECUTED
    5688:	0affffd6 	beq	55e8 <rtems_termios_read+0x1f4>               <== NOT EXECUTED
          /* XON should be sent now... */                             
          (*tty->device.write)(                                       
    568c:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    5690:	e59d1004 	ldr	r1, [sp, #4]                                  <== NOT EXECUTED
    5694:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    5698:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    569c:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         <== NOT EXECUTED
    56a0:	eaffffdb 	b	5614 <rtems_termios_read+0x220>                 <== NOT EXECUTED
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    56a4:	e594203c 	ldr	r2, [r4, #60]	; 0x3c                          
    56a8:	e3120002 	tst	r2, #2                                        
    56ac:	0a00000b 	beq	56e0 <rtems_termios_read+0x2ec>               
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
    56b0:	e5940010 	ldr	r0, [r4, #16]                                 
    56b4:	e1a0e00f 	mov	lr, pc                                        
    56b8:	e12fff13 	bx	r3                                             
      if (n < 0) {                                                    
    56bc:	e3500000 	cmp	r0, #0                                        
        rtems_task_wake_after (1);                                    
      } else {                                                        
        if  (siproc (n, tty))                                         
    56c0:	e1a01004 	mov	r1, r4                                        
    56c4:	e20000ff 	and	r0, r0, #255	; 0xff                           
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
    56c8:	ba00002c 	blt	5780 <rtems_termios_read+0x38c>               
        rtems_task_wake_after (1);                                    
      } else {                                                        
        if  (siproc (n, tty))                                         
    56cc:	ebfffeff 	bl	52d0 <siproc>                                  
    56d0:	e3500000 	cmp	r0, #0                                        
    56d4:	1affff6a 	bne	5484 <rtems_termios_read+0x90>                
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    56d8:	e59430a0 	ldr	r3, [r4, #160]	; 0xa0                         
    56dc:	eafffff3 	b	56b0 <rtems_termios_read+0x2bc>                 
      }                                                               
    }                                                                 
  } else {                                                            
    rtems_interval then, now;                                         
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
    56e0:	eb000226 	bl	5f80 <rtems_clock_get_ticks_since_boot>        
    56e4:	e1a05000 	mov	r5, r0                                        
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
    56e8:	e5940010 	ldr	r0, [r4, #16]                                 
    56ec:	e1a0e00f 	mov	lr, pc                                        
    56f0:	e594f0a0 	ldr	pc, [r4, #160]	; 0xa0                         
      if (n < 0) {                                                    
    56f4:	e3500000 	cmp	r0, #0                                        
    56f8:	ba00000c 	blt	5730 <rtems_termios_read+0x33c>               
            break;                                                    
          }                                                           
        }                                                             
        rtems_task_wake_after (1);                                    
      } else {                                                        
        siproc (n, tty);                                              
    56fc:	e20000ff 	and	r0, r0, #255	; 0xff                           
    5700:	e1a01004 	mov	r1, r4                                        
    5704:	ebfffef1 	bl	52d0 <siproc>                                  
        if (tty->ccount >= tty->termios.c_cc[VMIN])                   
    5708:	e5d43047 	ldrb	r3, [r4, #71]	; 0x47                         
    570c:	e5942020 	ldr	r2, [r4, #32]                                 
    5710:	e1520003 	cmp	r2, r3                                        
    5714:	aaffff5a 	bge	5484 <rtems_termios_read+0x90>                
          break;                                                      
        if (tty->termios.c_cc[VMIN] && tty->termios.c_cc[VTIME])      
    5718:	e3530000 	cmp	r3, #0                                        
    571c:	0afffff1 	beq	56e8 <rtems_termios_read+0x2f4>               
    5720:	e5d43046 	ldrb	r3, [r4, #70]	; 0x46                         
    5724:	e3530000 	cmp	r3, #0                                        
    5728:	0affffee 	beq	56e8 <rtems_termios_read+0x2f4>               
    572c:	eaffffeb 	b	56e0 <rtems_termios_read+0x2ec>                 
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
        if (tty->termios.c_cc[VMIN]) {                                
    5730:	e5d43047 	ldrb	r3, [r4, #71]	; 0x47                         
    5734:	e3530000 	cmp	r3, #0                                        
          if (tty->termios.c_cc[VTIME] && tty->ccount) {              
    5738:	e5d43046 	ldrb	r3, [r4, #70]	; 0x46                         
                                                                      
    then = rtems_clock_get_ticks_since_boot();                        
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
        if (tty->termios.c_cc[VMIN]) {                                
    573c:	0a000007 	beq	5760 <rtems_termios_read+0x36c>               
          if (tty->termios.c_cc[VTIME] && tty->ccount) {              
    5740:	e3530000 	cmp	r3, #0                                        
    5744:	0a000002 	beq	5754 <rtems_termios_read+0x360>               
    5748:	e5943020 	ldr	r3, [r4, #32]                                 
    574c:	e3530000 	cmp	r3, #0                                        
    5750:	1a000004 	bne	5768 <rtems_termios_read+0x374>               
          now = rtems_clock_get_ticks_since_boot();                   
          if ((now - then) > tty->vtimeTicks) {                       
            break;                                                    
          }                                                           
        }                                                             
        rtems_task_wake_after (1);                                    
    5754:	e3a00001 	mov	r0, #1                                        
    5758:	eb0004f5 	bl	6b34 <rtems_task_wake_after>                   
    575c:	eaffffe1 	b	56e8 <rtems_termios_read+0x2f4>                 
            if ((now - then) > tty->vtimeTicks) {                     
              break;                                                  
            }                                                         
          }                                                           
        } else {                                                      
          if (!tty->termios.c_cc[VTIME])                              
    5760:	e3530000 	cmp	r3, #0                                        
    5764:	0affff46 	beq	5484 <rtems_termios_read+0x90>                
            break;                                                    
          now = rtems_clock_get_ticks_since_boot();                   
    5768:	eb000204 	bl	5f80 <rtems_clock_get_ticks_since_boot>        
          if ((now - then) > tty->vtimeTicks) {                       
    576c:	e5943054 	ldr	r3, [r4, #84]	; 0x54                          
    5770:	e0650000 	rsb	r0, r5, r0                                    
    5774:	e1500003 	cmp	r0, r3                                        
    5778:	9afffff5 	bls	5754 <rtems_termios_read+0x360>               
    577c:	eaffff40 	b	5484 <rtems_termios_read+0x90>                  
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    for (;;) {                                                        
      n = (*tty->device.pollRead)(tty->minor);                        
      if (n < 0) {                                                    
        rtems_task_wake_after (1);                                    
    5780:	e3a00001 	mov	r0, #1                                        
    5784:	eb0004ea 	bl	6b34 <rtems_task_wake_after>                   
static rtems_status_code                                              
fillBufferPoll (struct rtems_termios_tty *tty)                        
{                                                                     
  int n;                                                              
                                                                      
  if (tty->termios.c_lflag & ICANON) {                                
    5788:	e59430a0 	ldr	r3, [r4, #160]	; 0xa0                         
    578c:	eaffffc7 	b	56b0 <rtems_termios_read+0x2bc>                 
                                                                      

00003e4c <rtems_termios_refill_transmitter>: int nToSend; rtems_interrupt_level level; int len; /* check for XOF/XON to send */ if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))
    3e4c:	e59020b8 	ldr	r2, [r0, #184]	; 0xb8                         
    3e50:	e59f31dc 	ldr	r3, [pc, #476]	; 4034 <rtems_termios_refill_transmitter+0x1e8>
    3e54:	e0023003 	and	r3, r2, r3                                    
    3e58:	e59f21d8 	ldr	r2, [pc, #472]	; 4038 <rtems_termios_refill_transmitter+0x1ec>
    3e5c:	e1530002 	cmp	r3, r2                                        
 * in task-driven mode, this function is called in Tx task context    
 * in interrupt-driven mode, this function is called in TxIRQ context 
 */                                                                   
static int                                                            
rtems_termios_refill_transmitter (struct rtems_termios_tty *tty)      
{                                                                     
    3e60:	e92d4070 	push	{r4, r5, r6, lr}                             
    3e64:	e1a04000 	mov	r4, r0                                        
  int nToSend;                                                        
  rtems_interrupt_level level;                                        
  int len;                                                            
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
    3e68:	0a000047 	beq	3f8c <rtems_termios_refill_transmitter+0x140> 
    tty->flow_ctrl |= FL_ISNTXOF;                                     
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
                                                                      
  } else if ((tty->flow_ctrl & (FL_IREQXOF | FL_ISNTXOF)) == FL_ISNTXOF) {
    3e6c:	e59030b8 	ldr	r3, [r0, #184]	; 0xb8                         
    3e70:	e2033003 	and	r3, r3, #3                                    
    3e74:	e3530002 	cmp	r3, #2                                        
    3e78:	0a000055 	beq	3fd4 <rtems_termios_refill_transmitter+0x188> 
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
    3e7c:	e5902080 	ldr	r2, [r0, #128]	; 0x80                         
    3e80:	e5903084 	ldr	r3, [r0, #132]	; 0x84                         
    3e84:	e1520003 	cmp	r2, r3                                        
    3e88:	0a000029 	beq	3f34 <rtems_termios_refill_transmitter+0xe8>  
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    3e8c:	e10f3000 	mrs	r3, CPSR                                      
    3e90:	e3832080 	orr	r2, r3, #128	; 0x80                           
    3e94:	e129f002 	msr	CPSR_fc, r2                                   
      return 0;                                                       
    }                                                                 
                                                                      
    rtems_interrupt_disable(level);                                   
    len = tty->t_dqlen;                                               
    tty->t_dqlen = 0;                                                 
    3e98:	e3a02000 	mov	r2, #0                                        
      }                                                               
      return 0;                                                       
    }                                                                 
                                                                      
    rtems_interrupt_disable(level);                                   
    len = tty->t_dqlen;                                               
    3e9c:	e5900090 	ldr	r0, [r0, #144]	; 0x90                         
    tty->t_dqlen = 0;                                                 
    3ea0:	e5842090 	str	r2, [r4, #144]	; 0x90                         
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    3ea4:	e129f003 	msr	CPSR_fc, r3                                   
    rtems_interrupt_enable(level);                                    
                                                                      
    newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;      
    3ea8:	e5943084 	ldr	r3, [r4, #132]	; 0x84                         
    3eac:	e5941088 	ldr	r1, [r4, #136]	; 0x88                         
    3eb0:	e0800003 	add	r0, r0, r3                                    
    3eb4:	eb004a82 	bl	168c4 <__umodsi3>                              
    tty->rawOutBuf.Tail = newTail;                                    
    if (tty->rawOutBufState == rob_wait) {                            
    3eb8:	e5943094 	ldr	r3, [r4, #148]	; 0x94                         
    3ebc:	e3530002 	cmp	r3, #2                                        
    rtems_interrupt_disable(level);                                   
    len = tty->t_dqlen;                                               
    tty->t_dqlen = 0;                                                 
    rtems_interrupt_enable(level);                                    
                                                                      
    newTail = (tty->rawOutBuf.Tail + len) % tty->rawOutBuf.Size;      
    3ec0:	e1a05000 	mov	r5, r0                                        
    tty->rawOutBuf.Tail = newTail;                                    
    3ec4:	e5840084 	str	r0, [r4, #132]	; 0x84                         
    if (tty->rawOutBufState == rob_wait) {                            
    3ec8:	0a00002c 	beq	3f80 <rtems_termios_refill_transmitter+0x134> 
       * wake up any pending writer task                              
       */                                                             
      rtems_semaphore_release (tty->rawOutBuf.Semaphore);             
    }                                                                 
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
    3ecc:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         
    3ed0:	e1530005 	cmp	r3, r5                                        
    3ed4:	0a00001e 	beq	3f54 <rtems_termios_refill_transmitter+0x108> 
      if ( tty->tty_snd.sw_pfn != NULL) {                             
        (*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);   
      }                                                               
    }                                                                 
    /* check, whether output should stop due to received XOFF */      
    else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))               
    3ed8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
    3edc:	e2033e21 	and	r3, r3, #528	; 0x210                          
    3ee0:	e3530e21 	cmp	r3, #528	; 0x210                              
    3ee4:	0a000047 	beq	4008 <rtems_termios_refill_transmitter+0x1bc> 
      nToSend = 0;                                                    
    } else {                                                          
      /*                                                              
       * Buffer not empty, start tranmitter                           
       */                                                             
      if (newTail > tty->rawOutBuf.Head)                              
    3ee8:	e5943080 	ldr	r3, [r4, #128]	; 0x80                         
    3eec:	e1550003 	cmp	r5, r3                                        
        nToSend = tty->rawOutBuf.Size - newTail;                      
    3ef0:	85946088 	ldrhi	r6, [r4, #136]	; 0x88                       
      else                                                            
        nToSend = tty->rawOutBuf.Head - newTail;                      
    3ef4:	95946080 	ldrls	r6, [r4, #128]	; 0x80                       
      /* when flow control XON or XOF, don't send blocks of data     */
      /* to allow fast reaction on incoming flow ctrl and low latency*/
      /* for outgoing flow control                                   */
      if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {                   
    3ef8:	e59430b8 	ldr	r3, [r4, #184]	; 0xb8                         
        nToSend = 1;                                                  
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
      (*tty->device.write)(                                           
    3efc:	e594107c 	ldr	r1, [r4, #124]	; 0x7c                         
      else                                                            
        nToSend = tty->rawOutBuf.Head - newTail;                      
      /* when flow control XON or XOF, don't send blocks of data     */
      /* to allow fast reaction on incoming flow ctrl and low latency*/
      /* for outgoing flow control                                   */
      if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {                   
    3f00:	e3130c06 	tst	r3, #1536	; 0x600                             
       * Buffer not empty, start tranmitter                           
       */                                                             
      if (newTail > tty->rawOutBuf.Head)                              
        nToSend = tty->rawOutBuf.Size - newTail;                      
      else                                                            
        nToSend = tty->rawOutBuf.Head - newTail;                      
    3f04:	e0656006 	rsb	r6, r5, r6                                    
      /* to allow fast reaction on incoming flow ctrl and low latency*/
      /* for outgoing flow control                                   */
      if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {                   
        nToSend = 1;                                                  
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
    3f08:	e3a03001 	mov	r3, #1                                        
      else                                                            
        nToSend = tty->rawOutBuf.Head - newTail;                      
      /* when flow control XON or XOF, don't send blocks of data     */
      /* to allow fast reaction on incoming flow ctrl and low latency*/
      /* for outgoing flow control                                   */
      if (tty->flow_ctrl & (FL_MDXON | FL_MDXOF)) {                   
    3f0c:	13a06001 	movne	r6, #1                                      
        nToSend = 1;                                                  
    3f10:	e1a02006 	mov	r2, r6                                        
      }                                                               
      tty->rawOutBufState = rob_busy; /*apm*/                         
    3f14:	e5843094 	str	r3, [r4, #148]	; 0x94                         
      (*tty->device.write)(                                           
    3f18:	e5940010 	ldr	r0, [r4, #16]                                 
    3f1c:	e0811005 	add	r1, r1, r5                                    
    3f20:	e1a0e00f 	mov	lr, pc                                        
    3f24:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
    3f28:	e5845084 	str	r5, [r4, #132]	; 0x84                         
  }                                                                   
  return nToSend;                                                     
}                                                                     
    3f2c:	e1a00006 	mov	r0, r6                                        
    3f30:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
      /*                                                              
       * buffer was empty                                             
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
    3f34:	e5903094 	ldr	r3, [r0, #148]	; 0x94                         
    3f38:	e3530002 	cmp	r3, #2                                        
        /*                                                            
         * this should never happen...                                
         */                                                           
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
      }                                                               
      return 0;                                                       
    3f3c:	13a06000 	movne	r6, #0                                      
  } else {                                                            
    if ( tty->rawOutBuf.Head == tty->rawOutBuf.Tail ) {               
      /*                                                              
       * buffer was empty                                             
       */                                                             
      if (tty->rawOutBufState == rob_wait) {                          
    3f40:	1afffff9 	bne	3f2c <rtems_termios_refill_transmitter+0xe0>  
        /*                                                            
         * this should never happen...                                
         */                                                           
        rtems_semaphore_release (tty->rawOutBuf.Semaphore);           
    3f44:	e590008c 	ldr	r0, [r0, #140]	; 0x8c                         <== NOT EXECUTED
    3f48:	eb0009f2 	bl	6718 <rtems_semaphore_release>                 <== NOT EXECUTED
      }                                                               
      return 0;                                                       
    3f4c:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
    3f50:	eafffff5 	b	3f2c <rtems_termios_refill_transmitter+0xe0>    <== NOT EXECUTED
      nToSend = 0;                                                    
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
    3f54:	e59430d4 	ldr	r3, [r4, #212]	; 0xd4                         
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
      /*                                                              
       * Buffer has become empty                                      
       */                                                             
      tty->rawOutBufState = rob_idle;                                 
    3f58:	e3a06000 	mov	r6, #0                                        
      nToSend = 0;                                                    
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
    3f5c:	e1530006 	cmp	r3, r6                                        
                                                                      
    if (newTail == tty->rawOutBuf.Head) {                             
      /*                                                              
       * Buffer has become empty                                      
       */                                                             
      tty->rawOutBufState = rob_idle;                                 
    3f60:	e5846094 	str	r6, [r4, #148]	; 0x94                         
      nToSend = 0;                                                    
    3f64:	01a06003 	moveq	r6, r3                                      
                                                                      
      /*                                                              
       * check to see if snd wakeup callback was set                  
       */                                                             
      if ( tty->tty_snd.sw_pfn != NULL) {                             
    3f68:	0affffee 	beq	3f28 <rtems_termios_refill_transmitter+0xdc>  
        (*tty->tty_snd.sw_pfn)(&tty->termios, tty->tty_snd.sw_arg);   
    3f6c:	e2840030 	add	r0, r4, #48	; 0x30                            <== NOT EXECUTED
    3f70:	e59410d8 	ldr	r1, [r4, #216]	; 0xd8                         <== NOT EXECUTED
    3f74:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    3f78:	e12fff13 	bx	r3                                             <== NOT EXECUTED
    3f7c:	eaffffe9 	b	3f28 <rtems_termios_refill_transmitter+0xdc>    <== NOT EXECUTED
    tty->rawOutBuf.Tail = newTail;                                    
    if (tty->rawOutBufState == rob_wait) {                            
      /*                                                              
       * wake up any pending writer task                              
       */                                                             
      rtems_semaphore_release (tty->rawOutBuf.Semaphore);             
    3f80:	e594008c 	ldr	r0, [r4, #140]	; 0x8c                         
    3f84:	eb0009e3 	bl	6718 <rtems_semaphore_release>                 
    3f88:	eaffffcf 	b	3ecc <rtems_termios_refill_transmitter+0x80>    
                                                                      
  /* check for XOF/XON to send */                                     
  if ((tty->flow_ctrl & (FL_MDXOF | FL_IREQXOF | FL_ISNTXOF))         
      == (FL_MDXOF | FL_IREQXOF)) {                                   
    /* XOFF should be sent now... */                                  
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
    3f8c:	e284104a 	add	r1, r4, #74	; 0x4a                            <== NOT EXECUTED
    3f90:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    3f94:	e5900010 	ldr	r0, [r0, #16]                                 <== NOT EXECUTED
    3f98:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    3f9c:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         <== NOT EXECUTED
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    3fa0:	e10f3000 	mrs	r3, CPSR                                      <== NOT EXECUTED
    3fa4:	e3832080 	orr	r2, r3, #128	; 0x80                           <== NOT EXECUTED
    3fa8:	e129f002 	msr	CPSR_fc, r2                                   <== NOT EXECUTED
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
    3fac:	e5941090 	ldr	r1, [r4, #144]	; 0x90                         <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
    3fb0:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
      == (FL_MDXOF | FL_IREQXOF)) {                                   
    /* XOFF should be sent now... */                                  
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTOP]), 1);
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
    3fb4:	e2411001 	sub	r1, r1, #1                                    <== NOT EXECUTED
    tty->flow_ctrl |= FL_ISNTXOF;                                     
    3fb8:	e3822002 	orr	r2, r2, #2                                    <== NOT EXECUTED
     * Therefore the dequeue "length" should be reduced by 1          
     */                                                               
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
    3fbc:	e5841090 	str	r1, [r4, #144]	; 0x90                         <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
    3fc0:	e58420b8 	str	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    3fc4:	e129f003 	msr	CPSR_fc, r3                                   <== NOT EXECUTED
    rtems_interrupt_enable(level);                                    
                                                                      
    nToSend = 1;                                                      
    3fc8:	e3a06001 	mov	r6, #1                                        <== NOT EXECUTED
        tty->minor, &tty->rawOutBuf.theBuf[newTail], nToSend);        
    }                                                                 
    tty->rawOutBuf.Tail = newTail; /*apm*/                            
  }                                                                   
  return nToSend;                                                     
}                                                                     
    3fcc:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
    3fd0:	e8bd8070 	pop	{r4, r5, r6, pc}                              <== NOT EXECUTED
     * FIXME: this .write call will generate another                  
     * dequeue callback. This will advance the "Tail" in the data     
     * buffer, although the corresponding data is not yet out!        
     * Therefore the dequeue "length" should be reduced by 1          
     */                                                               
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
    3fd4:	e2841049 	add	r1, r4, #73	; 0x49                            <== NOT EXECUTED
    3fd8:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    3fdc:	e5900010 	ldr	r0, [r0, #16]                                 <== NOT EXECUTED
    3fe0:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    3fe4:	e594f0a4 	ldr	pc, [r4, #164]	; 0xa4                         <== NOT EXECUTED
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    3fe8:	e10f3000 	mrs	r3, CPSR                                      <== NOT EXECUTED
    3fec:	e3832080 	orr	r2, r3, #128	; 0x80                           <== NOT EXECUTED
    3ff0:	e129f002 	msr	CPSR_fc, r2                                   <== NOT EXECUTED
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
    3ff4:	e5941090 	ldr	r1, [r4, #144]	; 0x90                         <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
    3ff8:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
     * Therefore the dequeue "length" should be reduced by 1          
     */                                                               
    (*tty->device.write)(tty->minor, (void *)&(tty->termios.c_cc[VSTART]), 1);
                                                                      
    rtems_interrupt_disable(level);                                   
    tty->t_dqlen--;                                                   
    3ffc:	e2411001 	sub	r1, r1, #1                                    <== NOT EXECUTED
    tty->flow_ctrl &= ~FL_ISNTXOF;                                    
    4000:	e3c22002 	bic	r2, r2, #2                                    <== NOT EXECUTED
    4004:	eaffffec 	b	3fbc <rtems_termios_refill_transmitter+0x170>   <== NOT EXECUTED
    4008:	e10f3000 	mrs	r3, CPSR                                      <== NOT EXECUTED
    400c:	e3832080 	orr	r2, r3, #128	; 0x80                           <== NOT EXECUTED
    4010:	e129f002 	msr	CPSR_fc, r2                                   <== NOT EXECUTED
    else if ((tty->flow_ctrl & (FL_MDXON | FL_ORCVXOF))               
       ==                (FL_MDXON | FL_ORCVXOF)) {                   
      /* Buffer not empty, but output stops due to XOFF */            
      /* set flag, that output has been stopped */                    
      rtems_interrupt_disable(level);                                 
      tty->flow_ctrl |= FL_OSTOP;                                     
    4014:	e59420b8 	ldr	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
    4018:	e3822020 	orr	r2, r2, #32                                   <== NOT EXECUTED
    401c:	e58420b8 	str	r2, [r4, #184]	; 0xb8                         <== NOT EXECUTED
      tty->rawOutBufState = rob_busy; /*apm*/                         
    4020:	e3a02001 	mov	r2, #1                                        <== NOT EXECUTED
    4024:	e5842094 	str	r2, [r4, #148]	; 0x94                         <== NOT EXECUTED
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    4028:	e129f003 	msr	CPSR_fc, r3                                   <== NOT EXECUTED
      rtems_interrupt_enable(level);                                  
      nToSend = 0;                                                    
    402c:	e3a06000 	mov	r6, #0                                        <== NOT EXECUTED
    4030:	eaffffbc 	b	3f28 <rtems_termios_refill_transmitter+0xdc>    <== NOT EXECUTED
                                                                      

00005a88 <rtems_termios_rxdaemon>: /* * this task actually processes any receive events */ static rtems_task rtems_termios_rxdaemon(rtems_task_argument argument) {
    5a88:	e92d4030 	push	{r4, r5, lr}                                 
    5a8c:	e1a04000 	mov	r4, r0                                        
    5a90:	e24dd008 	sub	sp, sp, #8                                    
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
    5a94:	e3a05000 	mov	r5, #0                                        
    5a98:	ea000005 	b	5ab4 <rtems_termios_rxdaemon+0x2c>              
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
    5a9c:	e5940010 	ldr	r0, [r4, #16]                                 
    5aa0:	e1a0e00f 	mov	lr, pc                                        
    5aa4:	e594f0a0 	ldr	pc, [r4, #160]	; 0xa0                         
    if (c != EOF) {                                                   
    5aa8:	e3700001 	cmn	r0, #1                                        
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
    5aac:	e1a03000 	mov	r3, r0                                        
    if (c != EOF) {                                                   
    5ab0:	1a000010 	bne	5af8 <rtems_termios_rxdaemon+0x70>            
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
    5ab4:	e1a0300d 	mov	r3, sp                                        
    5ab8:	e3a01002 	mov	r1, #2                                        
    5abc:	e3a02000 	mov	r2, #0                                        
    5ac0:	e3a00003 	mov	r0, #3                                        
    5ac4:	eb00014d 	bl	6000 <rtems_event_receive>                     
      (TERMIOS_RX_PROC_EVENT | TERMIOS_RX_TERMINATE_EVENT),           
      RTEMS_EVENT_ANY | RTEMS_WAIT,                                   
      RTEMS_NO_TIMEOUT,                                               
      &the_event                                                      
    );                                                                
    if ((the_event & TERMIOS_RX_TERMINATE_EVENT) != 0) {              
    5ac8:	e59d3000 	ldr	r3, [sp]                                      
    5acc:	e3130001 	tst	r3, #1                                        
    5ad0:	0afffff1 	beq	5a9c <rtems_termios_rxdaemon+0x14>            
      tty->rxTaskId = 0;                                              
    5ad4:	e58450c4 	str	r5, [r4, #196]	; 0xc4                         <== NOT EXECUTED
      rtems_task_delete(RTEMS_SELF);                                  
    5ad8:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    5adc:	eb00039e 	bl	695c <rtems_task_delete>                       <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
    5ae0:	e5940010 	ldr	r0, [r4, #16]                                 <== NOT EXECUTED
    5ae4:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    5ae8:	e594f0a0 	ldr	pc, [r4, #160]	; 0xa0                         <== NOT EXECUTED
    if (c != EOF) {                                                   
    5aec:	e3700001 	cmn	r0, #1                                        <== NOT EXECUTED
    }                                                                 
                                                                      
    /*                                                                
     * do something                                                   
     */                                                               
    c = tty->device.pollRead(tty->minor);                             
    5af0:	e1a03000 	mov	r3, r0                                        <== NOT EXECUTED
    if (c != EOF) {                                                   
    5af4:	0affffee 	beq	5ab4 <rtems_termios_rxdaemon+0x2c>            <== NOT EXECUTED
      /*                                                              
       * pollRead did call enqueue on its own                         
       */                                                             
      c_buf = c;                                                      
      rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);           
    5af8:	e1a00004 	mov	r0, r4                                        
    5afc:	e28d1007 	add	r1, sp, #7                                    
    5b00:	e3a02001 	mov	r2, #1                                        
    c = tty->device.pollRead(tty->minor);                             
    if (c != EOF) {                                                   
      /*                                                              
       * pollRead did call enqueue on its own                         
       */                                                             
      c_buf = c;                                                      
    5b04:	e5cd3007 	strb	r3, [sp, #7]                                 
      rtems_termios_enqueue_raw_characters ( tty,&c_buf,1);           
    5b08:	ebffff26 	bl	57a8 <rtems_termios_enqueue_raw_characters>    
    5b0c:	eaffffe8 	b	5ab4 <rtems_termios_rxdaemon+0x2c>              
                                                                      

0000403c <rtems_termios_txdaemon>: /* * this task actually processes any transmit events */ static rtems_task rtems_termios_txdaemon(rtems_task_argument argument) {
    403c:	e92d4070 	push	{r4, r5, r6, lr}                             
    4040:	e59f5060 	ldr	r5, [pc, #96]	; 40a8 <rtems_termios_txdaemon+0x6c>
    4044:	e24dd004 	sub	sp, sp, #4                                    
    4048:	e1a04000 	mov	r4, r0                                        
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
    404c:	e3a06000 	mov	r6, #0                                        
    4050:	ea000008 	b	4078 <rtems_termios_txdaemon+0x3c>              
    }                                                                 
                                                                      
    /*                                                                
     * call any line discipline start function                        
     */                                                               
    if (rtems_termios_linesw[tty->t_line].l_start != NULL) {          
    4054:	e59430cc 	ldr	r3, [r4, #204]	; 0xcc                         
    4058:	e0853283 	add	r3, r5, r3, lsl #5                            
    405c:	e5933014 	ldr	r3, [r3, #20]                                 
    4060:	e3530000 	cmp	r3, #0                                        
      rtems_termios_linesw[tty->t_line].l_start(tty);                 
    4064:	e1a00004 	mov	r0, r4                                        
    4068:	11a0e00f 	movne	lr, pc                                      
    406c:	112fff13 	bxne	r3                                           
    }                                                                 
                                                                      
    /*                                                                
     * try to push further characters to device                       
     */                                                               
    rtems_termios_refill_transmitter(tty);                            
    4070:	e1a00004 	mov	r0, r4                                        
    4074:	ebffff74 	bl	3e4c <rtems_termios_refill_transmitter>        
                                                                      
  while (1) {                                                         
    /*                                                                
     * wait for rtems event                                           
     */                                                               
    rtems_event_receive(                                              
    4078:	e1a0300d 	mov	r3, sp                                        
    407c:	e3a01002 	mov	r1, #2                                        
    4080:	e3a02000 	mov	r2, #0                                        
    4084:	e3a00003 	mov	r0, #3                                        
    4088:	eb0007dc 	bl	6000 <rtems_event_receive>                     
       (TERMIOS_TX_START_EVENT | TERMIOS_TX_TERMINATE_EVENT),         
       RTEMS_EVENT_ANY | RTEMS_WAIT,                                  
       RTEMS_NO_TIMEOUT,                                              
       &the_event                                                     
    );                                                                
    if ((the_event & TERMIOS_TX_TERMINATE_EVENT) != 0) {              
    408c:	e59d3000 	ldr	r3, [sp]                                      
    4090:	e3130001 	tst	r3, #1                                        
    4094:	0affffee 	beq	4054 <rtems_termios_txdaemon+0x18>            
      tty->txTaskId = 0;                                              
    4098:	e58460c8 	str	r6, [r4, #200]	; 0xc8                         <== NOT EXECUTED
      rtems_task_delete(RTEMS_SELF);                                  
    409c:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    40a0:	eb000a2d 	bl	695c <rtems_task_delete>                       <== NOT EXECUTED
    40a4:	eaffffea 	b	4054 <rtems_termios_txdaemon+0x18>              <== NOT EXECUTED
                                                                      

0000532c <rtems_termios_write>: rtems_status_code rtems_termios_write (void *arg) { rtems_libio_rw_args_t *args = arg; struct rtems_termios_tty *tty = args->iop->data1;
    532c:	e5903000 	ldr	r3, [r0]                                      
  rtems_termios_puts (&c, 1, tty);                                    
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_write (void *arg)                                       
{                                                                     
    5330:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
    5334:	e593402c 	ldr	r4, [r3, #44]	; 0x2c                          
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    5338:	e3a01000 	mov	r1, #0                                        
  rtems_termios_puts (&c, 1, tty);                                    
}                                                                     
                                                                      
rtems_status_code                                                     
rtems_termios_write (void *arg)                                       
{                                                                     
    533c:	e1a05000 	mov	r5, r0                                        
  rtems_libio_rw_args_t *args = arg;                                  
  struct rtems_termios_tty *tty = args->iop->data1;                   
  rtems_status_code sc;                                               
                                                                      
  sc = rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    5340:	e1a02001 	mov	r2, r1                                        
    5344:	e5940018 	ldr	r0, [r4, #24]                                 
    5348:	eb0004a9 	bl	65f4 <rtems_semaphore_obtain>                  
  if (sc != RTEMS_SUCCESSFUL)                                         
    534c:	e2506000 	subs	r6, r0, #0                                   
    5350:	1a00000c 	bne	5388 <rtems_termios_write+0x5c>               
    return sc;                                                        
  if (rtems_termios_linesw[tty->t_line].l_write != NULL) {            
    5354:	e59420cc 	ldr	r2, [r4, #204]	; 0xcc                         
    5358:	e59f3090 	ldr	r3, [pc, #144]	; 53f0 <rtems_termios_write+0xc4>
    535c:	e0833282 	add	r3, r3, r2, lsl #5                            
    5360:	e593300c 	ldr	r3, [r3, #12]                                 
    5364:	e3530000 	cmp	r3, #0                                        
    5368:	0a000008 	beq	5390 <rtems_termios_write+0x64>               
    sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);         
    536c:	e1a00004 	mov	r0, r4                                        
    5370:	e1a01005 	mov	r1, r5                                        
    5374:	e1a0e00f 	mov	lr, pc                                        
    5378:	e12fff13 	bx	r3                                             
    537c:	e1a06000 	mov	r6, r0                                        
    rtems_semaphore_release (tty->osem);                              
    5380:	e5940018 	ldr	r0, [r4, #24]                                 
    5384:	eb0004e3 	bl	6718 <rtems_semaphore_release>                 
    rtems_termios_puts (args->buffer, args->count, tty);              
    args->bytes_moved = args->count;                                  
  }                                                                   
  rtems_semaphore_release (tty->osem);                                
  return sc;                                                          
}                                                                     
    5388:	e1a00006 	mov	r0, r6                                        
    538c:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  if (rtems_termios_linesw[tty->t_line].l_write != NULL) {            
    sc = rtems_termios_linesw[tty->t_line].l_write(tty,args);         
    rtems_semaphore_release (tty->osem);                              
    return sc;                                                        
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    5390:	e5943034 	ldr	r3, [r4, #52]	; 0x34                          
    5394:	e3130001 	tst	r3, #1                                        
    5398:	0a00000f 	beq	53dc <rtems_termios_write+0xb0>               
    uint32_t   count = args->count;                                   
    539c:	e5957010 	ldr	r7, [r5, #16]                                 
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
    53a0:	e3570000 	cmp	r7, #0                                        
    rtems_semaphore_release (tty->osem);                              
    return sc;                                                        
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    uint32_t   count = args->count;                                   
    char      *buffer = args->buffer;                                 
    53a4:	e595800c 	ldr	r8, [r5, #12]                                 
    while (count--)                                                   
    53a8:	01a03006 	moveq	r3, r6                                      
    53ac:	0a000005 	beq	53c8 <rtems_termios_write+0x9c>               
      oproc (*buffer++, tty);                                         
    53b0:	e4d80001 	ldrb	r0, [r8], #1                                 
    53b4:	e1a01004 	mov	r1, r4                                        
    53b8:	ebfffe4d 	bl	4cf4 <oproc>                                   
    return sc;                                                        
  }                                                                   
  if (tty->termios.c_oflag & OPOST) {                                 
    uint32_t   count = args->count;                                   
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
    53bc:	e2577001 	subs	r7, r7, #1                                   
    53c0:	1afffffa 	bne	53b0 <rtems_termios_write+0x84>               
      oproc (*buffer++, tty);                                         
    args->bytes_moved = args->count;                                  
  } else {                                                            
    rtems_termios_puts (args->buffer, args->count, tty);              
    args->bytes_moved = args->count;                                  
    53c4:	e5953010 	ldr	r3, [r5, #16]                                 
    53c8:	e5853018 	str	r3, [r5, #24]                                 
  }                                                                   
  rtems_semaphore_release (tty->osem);                                
    53cc:	e5940018 	ldr	r0, [r4, #24]                                 
    53d0:	eb0004d0 	bl	6718 <rtems_semaphore_release>                 
  return sc;                                                          
}                                                                     
    53d4:	e1a00006 	mov	r0, r6                                        
    53d8:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
    char      *buffer = args->buffer;                                 
    while (count--)                                                   
      oproc (*buffer++, tty);                                         
    args->bytes_moved = args->count;                                  
  } else {                                                            
    rtems_termios_puts (args->buffer, args->count, tty);              
    53dc:	e285000c 	add	r0, r5, #12                                   <== NOT EXECUTED
    53e0:	e8900003 	ldm	r0, {r0, r1}                                  <== NOT EXECUTED
    53e4:	e1a02004 	mov	r2, r4                                        <== NOT EXECUTED
    53e8:	ebfffdfb 	bl	4bdc <rtems_termios_puts>                      <== NOT EXECUTED
    53ec:	eafffff4 	b	53c4 <rtems_termios_write+0x98>                 <== NOT EXECUTED
                                                                      

000022f8 <rtems_verror>: { int local_errno = 0; int chars_written = 0; rtems_status_code status; if (error_flag & RTEMS_ERROR_PANIC) {
    22f8:	e3100202 	tst	r0, #536870912	; 0x20000000                   
static int rtems_verror(                                              
  rtems_error_code_t  error_flag,                                     
  const char         *printf_format,                                  
  va_list             arglist                                         
)                                                                     
{                                                                     
    22fc:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    2300:	e1a04000 	mov	r4, r0                                        
    2304:	e1a08001 	mov	r8, r1                                        
    2308:	e1a06002 	mov	r6, r2                                        
  int               local_errno = 0;                                  
  int               chars_written = 0;                                
  rtems_status_code status;                                           
                                                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
    230c:	0a00000d 	beq	2348 <rtems_verror+0x50>                      
    if (rtems_panic_in_progress++)                                    
    2310:	e59f212c 	ldr	r2, [pc, #300]	; 2444 <rtems_verror+0x14c>    
    2314:	e5921000 	ldr	r1, [r2]                                      
    2318:	e2813001 	add	r3, r1, #1                                    
    231c:	e3510000 	cmp	r1, #0                                        
    2320:	e5823000 	str	r3, [r2]                                      
    2324:	0a000004 	beq	233c <rtems_verror+0x44>                      
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    uint32_t level = _Thread_Dispatch_disable_level;                  
    2328:	e59f3118 	ldr	r3, [pc, #280]	; 2448 <rtems_verror+0x150>    <== NOT EXECUTED
    232c:	e5931000 	ldr	r1, [r3]                                      <== NOT EXECUTED
                                                                      
    ++level;                                                          
    2330:	e2811001 	add	r1, r1, #1                                    <== NOT EXECUTED
    _Thread_Dispatch_disable_level = level;                           
    2334:	e5831000 	str	r1, [r3]                                      <== NOT EXECUTED
void _Thread_Disable_dispatch( void );                                
#else                                                                 
RTEMS_INLINE_ROUTINE void _Thread_Disable_dispatch( void )            
{                                                                     
  _Thread_Dispatch_increment_disable_level();                         
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
    2338:	e5923000 	ldr	r3, [r2]                                      <== NOT EXECUTED
      _Thread_Disable_dispatch();       /* disable task switches */   
                                                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
    233c:	e3530002 	cmp	r3, #2                                        
      return 0;                                                       
    2340:	c3a06000 	movgt	r6, #0                                      
  if (error_flag & RTEMS_ERROR_PANIC) {                               
    if (rtems_panic_in_progress++)                                    
      _Thread_Disable_dispatch();       /* disable task switches */   
                                                                      
    /* don't aggravate things */                                      
    if (rtems_panic_in_progress > 2)                                  
    2344:	ca000024 	bgt	23dc <rtems_verror+0xe4>                      
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
    2348:	e59f50fc 	ldr	r5, [pc, #252]	; 244c <rtems_verror+0x154>    
    234c:	e5953000 	ldr	r3, [r5]                                      
    2350:	e5930008 	ldr	r0, [r3, #8]                                  
    2354:	eb002e20 	bl	dbdc <fflush>                                  
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
    2358:	e2147101 	ands	r7, r4, #1073741824	; 0x40000000             
      return 0;                                                       
  }                                                                   
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
    235c:	e3c44207 	bic	r4, r4, #1879048192	; 0x70000000              
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
    2360:	1a00002a 	bne	2410 <rtems_verror+0x118>                     
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if (_System_state_Is_multiprocessing)                             
      fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
    2364:	e5953000 	ldr	r3, [r5]                                      
    2368:	e1a02006 	mov	r2, r6                                        
    236c:	e1a01008 	mov	r1, r8                                        
    2370:	e593000c 	ldr	r0, [r3, #12]                                 
    2374:	eb0042e9 	bl	12f20 <vfprintf>                               
                                                                      
  if (status)                                                         
    2378:	e3540000 	cmp	r4, #0                                        
  #if defined(RTEMS_MULTIPROCESSING)                                  
    if (_System_state_Is_multiprocessing)                             
      fprintf(stderr, "[%" PRIu32 "] ", _Configuration_MP_table->node);
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
    237c:	e1a06000 	mov	r6, r0                                        
                                                                      
  if (status)                                                         
    2380:	1a000017 	bne	23e4 <rtems_verror+0xec>                      
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
    2384:	e3570000 	cmp	r7, #0                                        
    2388:	0a00000b 	beq	23bc <rtems_verror+0xc4>                      
    if ((local_errno > 0) && *strerror(local_errno))                  
    238c:	da000004 	ble	23a4 <rtems_verror+0xac>                      
    2390:	e1a00007 	mov	r0, r7                                        
    2394:	eb0032c8 	bl	eebc <strerror>                                
    2398:	e5d03000 	ldrb	r3, [r0]                                     
    239c:	e3530000 	cmp	r3, #0                                        
    23a0:	1a00001d 	bne	241c <rtems_verror+0x124>                     
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    else                                                              
      chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
    23a4:	e5953000 	ldr	r3, [r5]                                      
    23a8:	e59f10a0 	ldr	r1, [pc, #160]	; 2450 <rtems_verror+0x158>    
    23ac:	e593000c 	ldr	r0, [r3, #12]                                 
    23b0:	e1a02007 	mov	r2, r7                                        
    23b4:	eb002ef5 	bl	df90 <fprintf>                                 
    23b8:	e0866000 	add	r6, r6, r0                                    
  }                                                                   
                                                                      
  chars_written += fprintf(stderr, "\n");                             
    23bc:	e5953000 	ldr	r3, [r5]                                      
    23c0:	e59f108c 	ldr	r1, [pc, #140]	; 2454 <rtems_verror+0x15c>    
    23c4:	e593000c 	ldr	r0, [r3, #12]                                 
    23c8:	eb002ef0 	bl	df90 <fprintf>                                 
                                                                      
  (void) fflush(stderr);                                              
    23cc:	e5953000 	ldr	r3, [r5]                                      
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    else                                                              
      chars_written += fprintf(stderr, " (unknown errno=%d)", local_errno);
  }                                                                   
                                                                      
  chars_written += fprintf(stderr, "\n");                             
    23d0:	e0806006 	add	r6, r0, r6                                    
                                                                      
  (void) fflush(stderr);                                              
    23d4:	e593000c 	ldr	r0, [r3, #12]                                 
    23d8:	eb002dff 	bl	dbdc <fflush>                                  
                                                                      
  return chars_written;                                               
}                                                                     
    23dc:	e1a00006 	mov	r0, r6                                        
    23e0:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
                                                                      
  if (status)                                                         
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
    23e4:	e59f3060 	ldr	r3, [pc, #96]	; 244c <rtems_verror+0x154>     
    23e8:	e5933000 	ldr	r3, [r3]                                      
    23ec:	e1a00004 	mov	r0, r4                                        
    23f0:	e593400c 	ldr	r4, [r3, #12]                                 
    23f4:	ebffffbb 	bl	22e8 <rtems_status_text>                       
    23f8:	e59f1058 	ldr	r1, [pc, #88]	; 2458 <rtems_verror+0x160>     
    23fc:	e1a02000 	mov	r2, r0                                        
    2400:	e1a00004 	mov	r0, r4                                        
    2404:	eb002ee1 	bl	df90 <fprintf>                                 
  #endif                                                              
                                                                      
  chars_written += vfprintf(stderr, printf_format, arglist);          
                                                                      
  if (status)                                                         
    chars_written +=                                                  
    2408:	e0866000 	add	r6, r6, r0                                    
    240c:	eaffffdc 	b	2384 <rtems_verror+0x8c>                        
                                                                      
  (void) fflush(stdout);            /* in case stdout/stderr same */  
                                                                      
  status = error_flag & ~RTEMS_ERROR_MASK;                            
  if (error_flag & RTEMS_ERROR_ERRNO)     /* include errno? */        
    local_errno = errno;                                              
    2410:	eb002cf4 	bl	d7e8 <__errno>                                 
    2414:	e5907000 	ldr	r7, [r0]                                      
    2418:	eaffffd1 	b	2364 <rtems_verror+0x6c>                        
    chars_written +=                                                  
      fprintf(stderr, " (status: %s)", rtems_status_text(status));    
                                                                      
  if (local_errno) {                                                  
    if ((local_errno > 0) && *strerror(local_errno))                  
      chars_written += fprintf(stderr, " (errno: %s)", strerror(local_errno));
    241c:	e5953000 	ldr	r3, [r5]                                      
    2420:	e1a00007 	mov	r0, r7                                        
    2424:	e593400c 	ldr	r4, [r3, #12]                                 
    2428:	eb0032a3 	bl	eebc <strerror>                                
    242c:	e59f1028 	ldr	r1, [pc, #40]	; 245c <rtems_verror+0x164>     
    2430:	e1a02000 	mov	r2, r0                                        
    2434:	e1a00004 	mov	r0, r4                                        
    2438:	eb002ed4 	bl	df90 <fprintf>                                 
    243c:	e0866000 	add	r6, r6, r0                                    
    2440:	eaffffdd 	b	23bc <rtems_verror+0xc4>                        
                                                                      

00023434 <scanInt>: /** * Extract an integer value from the database */ static int scanInt(FILE *fp, int *val) {
   23434:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  int c;                                                              
  unsigned int i = 0;                                                 
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
   23438:	e3a06000 	mov	r6, #0                                        
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
   2343c:	e59f90f4 	ldr	r9, [pc, #244]	; 23538 <scanInt+0x104>        
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
   23440:	e59f80f4 	ldr	r8, [pc, #244]	; 2353c <scanInt+0x108>        
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
   23444:	e59fa0f4 	ldr	sl, [pc, #244]	; 23540 <scanInt+0x10c>        
/**                                                                   
 *  Extract an integer value from the database                        
 */                                                                   
static int                                                            
scanInt(FILE *fp, int *val)                                           
{                                                                     
   23448:	e1a04000 	mov	r4, r0                                        
   2344c:	e1a0b001 	mov	fp, r1                                        
  int c;                                                              
  unsigned int i = 0;                                                 
  unsigned int limit = INT_MAX;                                       
   23450:	e3e07102 	mvn	r7, #-2147483648	; 0x80000000                 
 */                                                                   
static int                                                            
scanInt(FILE *fp, int *val)                                           
{                                                                     
  int c;                                                              
  unsigned int i = 0;                                                 
   23454:	e1a05006 	mov	r5, r6                                        
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
   23458:	e5943004 	ldr	r3, [r4, #4]                                  
   2345c:	e2433001 	sub	r3, r3, #1                                    
   23460:	e3530000 	cmp	r3, #0                                        
   23464:	e5843004 	str	r3, [r4, #4]                                  
   23468:	ba00001d 	blt	234e4 <scanInt+0xb0>                          
   2346c:	e5943000 	ldr	r3, [r4]                                      
   23470:	e4d30001 	ldrb	r0, [r3], #1                                 
    if (c == ':')                                                     
   23474:	e350003a 	cmp	r0, #58	; 0x3a                                
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
   23478:	e5843000 	str	r3, [r4]                                      
    if (c == ':')                                                     
   2347c:	0a00001d 	beq	234f8 <scanInt+0xc4>                          
      break;                                                          
    if (sign == 0) {                                                  
   23480:	e3560000 	cmp	r6, #0                                        
   23484:	1a000004 	bne	2349c <scanInt+0x68>                          
      if (c == '-') {                                                 
   23488:	e350002d 	cmp	r0, #45	; 0x2d                                
        sign = -1;                                                    
        limit++;                                                      
   2348c:	02877001 	addeq	r7, r7, #1                                  
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
        sign = -1;                                                    
   23490:	03e06000 	mvneq	r6, #0                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
    if (c == ':')                                                     
      break;                                                          
    if (sign == 0) {                                                  
      if (c == '-') {                                                 
   23494:	0affffef 	beq	23458 <scanInt+0x24>                          
        sign = -1;                                                    
        limit++;                                                      
        continue;                                                     
      }                                                               
      sign = 1;                                                       
   23498:	e3a06001 	mov	r6, #1                                        
    }                                                                 
    if (!isdigit(c))                                                  
   2349c:	e5983000 	ldr	r3, [r8]                                      
   234a0:	e0833000 	add	r3, r3, r0                                    
   234a4:	e5d33001 	ldrb	r3, [r3, #1]                                 
   234a8:	e2133004 	ands	r3, r3, #4                                   
   234ac:	0a00001d 	beq	23528 <scanInt+0xf4>                          
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
   234b0:	e083279a 	umull	r2, r3, sl, r7                              
   234b4:	e15501a3 	cmp	r5, r3, lsr #3                                
   234b8:	8a000018 	bhi	23520 <scanInt+0xec>                          
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
    d = c - '0';                                                      
   234bc:	e2400030 	sub	r0, r0, #48	; 0x30                            
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
   234c0:	e1a03105 	lsl	r3, r5, #2                                    
   234c4:	0a000011 	beq	23510 <scanInt+0xdc>                          
      return 0;                                                       
    i = i * 10 + d;                                                   
   234c8:	e0835005 	add	r5, r3, r5                                    
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
   234cc:	e5943004 	ldr	r3, [r4, #4]                                  
   234d0:	e2433001 	sub	r3, r3, #1                                    
   234d4:	e3530000 	cmp	r3, #0                                        
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
   234d8:	e0805085 	add	r5, r0, r5, lsl #1                            
  unsigned int limit = INT_MAX;                                       
  int sign = 0;                                                       
  int d;                                                              
                                                                      
  for (;;) {                                                          
    c = getc(fp);                                                     
   234dc:	e5843004 	str	r3, [r4, #4]                                  
   234e0:	aaffffe1 	bge	2346c <scanInt+0x38>                          
   234e4:	e5990000 	ldr	r0, [r9]                                      <== NOT EXECUTED
   234e8:	e1a01004 	mov	r1, r4                                        <== NOT EXECUTED
   234ec:	eb005fa9 	bl	3b398 <__srget_r>                              <== NOT EXECUTED
    if (c == ':')                                                     
   234f0:	e350003a 	cmp	r0, #58	; 0x3a                                <== NOT EXECUTED
   234f4:	1affffe1 	bne	23480 <scanInt+0x4c>                          <== NOT EXECUTED
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
   234f8:	e3560000 	cmp	r6, #0                                        
   234fc:	0a00000b 	beq	23530 <scanInt+0xfc>                          
    return 0;                                                         
  *val = i * sign;                                                    
   23500:	e0050596 	mul	r5, r6, r5                                    
  return 1;                                                           
   23504:	e3a00001 	mov	r0, #1                                        
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
    return 0;                                                         
  *val = i * sign;                                                    
   23508:	e58b5000 	str	r5, [fp]                                      
  return 1;                                                           
   2350c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
    d = c - '0';                                                      
    if ((i > (limit / 10))                                            
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
   23510:	e0832005 	add	r2, r3, r5                                    
   23514:	e0472082 	sub	r2, r7, r2, lsl #1                            
   23518:	e1500002 	cmp	r0, r2                                        
   2351c:	9affffe9 	bls	234c8 <scanInt+0x94>                          
      return 0;                                                       
   23520:	e3a00000 	mov	r0, #0                                        
   23524:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
        continue;                                                     
      }                                                               
      sign = 1;                                                       
    }                                                                 
    if (!isdigit(c))                                                  
      return 0;                                                       
   23528:	e1a00003 	mov	r0, r3                                        
   2352c:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
     || ((i == (limit / 10)) && (d > (limit % 10))))                  
      return 0;                                                       
    i = i * 10 + d;                                                   
  }                                                                   
  if (sign == 0)                                                      
    return 0;                                                         
   23530:	e1a00006 	mov	r0, r6                                        <== NOT EXECUTED
  *val = i * sign;                                                    
  return 1;                                                           
}                                                                     
   23534:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          <== NOT EXECUTED
                                                                      

00023638 <scangr>: FILE *fp, struct group *grp, char *buffer, size_t bufsize ) {
   23638:	e92d4070 	push	{r4, r5, r6, lr}                             
   2363c:	e24dd014 	sub	sp, sp, #20                                   
   23640:	e58d2008 	str	r2, [sp, #8]                                  
   23644:	e58d3004 	str	r3, [sp, #4]                                  
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   23648:	e3a04000 	mov	r4, #0                                        
   2364c:	e28d2008 	add	r2, sp, #8                                    
   23650:	e28d3004 	add	r3, sp, #4                                    
  FILE *fp,                                                           
  struct group *grp,                                                  
  char *buffer,                                                       
  size_t bufsize                                                      
)                                                                     
{                                                                     
   23654:	e1a05000 	mov	r5, r0                                        
   23658:	e1a06001 	mov	r6, r1                                        
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   2365c:	e58d4000 	str	r4, [sp]                                      
   23660:	ebffffb7 	bl	23544 <scanString>                             
   23664:	e3500000 	cmp	r0, #0                                        
   23668:	1a000001 	bne	23674 <scangr+0x3c>                           
      grp->gr_mem[memcount++] = cp + 1;                               
    }                                                                 
  }                                                                   
  grp->gr_mem[memcount] = NULL;                                       
  return 1;                                                           
}                                                                     
   2366c:	e28dd014 	add	sp, sp, #20                                   
   23670:	e8bd8070 	pop	{r4, r5, r6, pc}                              
  int grgid;                                                          
  char *grmem, *cp;                                                   
  int memcount;                                                       
                                                                      
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
   23674:	e1a00005 	mov	r0, r5                                        
   23678:	e2861004 	add	r1, r6, #4                                    
   2367c:	e28d2008 	add	r2, sp, #8                                    
   23680:	e28d3004 	add	r3, sp, #4                                    
   23684:	e58d4000 	str	r4, [sp]                                      
   23688:	ebffffad 	bl	23544 <scanString>                             
   2368c:	e3500000 	cmp	r0, #0                                        
   23690:	0afffff5 	beq	2366c <scangr+0x34>                           
   || !scanInt(fp, &grgid)                                            
   23694:	e1a00005 	mov	r0, r5                                        
   23698:	e28d100c 	add	r1, sp, #12                                   
   2369c:	ebffff64 	bl	23434 <scanInt>                                
   236a0:	e3500000 	cmp	r0, #0                                        
   236a4:	0afffff0 	beq	2366c <scangr+0x34>                           
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
   236a8:	e3a04001 	mov	r4, #1                                        
   236ac:	e1a00005 	mov	r0, r5                                        
   236b0:	e28d1010 	add	r1, sp, #16                                   
   236b4:	e28d2008 	add	r2, sp, #8                                    
   236b8:	e28d3004 	add	r3, sp, #4                                    
   236bc:	e58d4000 	str	r4, [sp]                                      
   236c0:	ebffff9f 	bl	23544 <scanString>                             
   236c4:	e3500000 	cmp	r0, #0                                        
   236c8:	0affffe7 	beq	2366c <scangr+0x34>                           
    return 0;                                                         
  grp->gr_gid = grgid;                                                
   236cc:	e59d300c 	ldr	r3, [sp, #12]                                 
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   236d0:	e59d1010 	ldr	r1, [sp, #16]                                 
  if (!scanString(fp, &grp->gr_name, &buffer, &bufsize, 0)            
   || !scanString(fp, &grp->gr_passwd, &buffer, &bufsize, 0)          
   || !scanInt(fp, &grgid)                                            
   || !scanString(fp, &grmem, &buffer, &bufsize, 1))                  
    return 0;                                                         
  grp->gr_gid = grgid;                                                
   236d4:	e1c630b8 	strh	r3, [r6, #8]                                 
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   236d8:	e5d13000 	ldrb	r3, [r1]                                     
   236dc:	e3530000 	cmp	r3, #0                                        
   236e0:	03a04017 	moveq	r4, #23                                     
   236e4:	0a000007 	beq	23708 <scangr+0xd0>                           
   236e8:	e1a02001 	mov	r2, r1                                        
    if(*cp == ',')                                                    
   236ec:	e353002c 	cmp	r3, #44	; 0x2c                                
  grp->gr_gid = grgid;                                                
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   236f0:	e5f23001 	ldrb	r3, [r2, #1]!                                
    if(*cp == ',')                                                    
      memcount++;                                                     
   236f4:	02844001 	addeq	r4, r4, #1                                  
  grp->gr_gid = grgid;                                                
                                                                      
  /*                                                                  
   * Determine number of members                                      
   */                                                                 
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   236f8:	e3530000 	cmp	r3, #0                                        
   236fc:	1afffffa 	bne	236ec <scangr+0xb4>                           
   23700:	e1a04104 	lsl	r4, r4, #2                                    
   23704:	e2844013 	add	r4, r4, #19                                   
  }                                                                   
                                                                      
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
   23708:	e59d3004 	ldr	r3, [sp, #4]                                  
   2370c:	e1530004 	cmp	r3, r4                                        
    return 0;                                                         
   23710:	33a00000 	movcc	r0, #0                                      
  }                                                                   
                                                                      
  /*                                                                  
   * Hack to produce (hopefully) a suitably-aligned array of pointers 
   */                                                                 
  if (bufsize < (((memcount+1)*sizeof(char *)) + 15))                 
   23714:	3affffd4 	bcc	2366c <scangr+0x34>                           
    return 0;                                                         
  grp->gr_mem = (char **)(((uintptr_t)buffer + 15) & ~15);            
   23718:	e59d3008 	ldr	r3, [sp, #8]                                  
   2371c:	e283300f 	add	r3, r3, #15                                   
   23720:	e3c3300f 	bic	r3, r3, #15                                   
   23724:	e586300c 	str	r3, [r6, #12]                                 
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
   23728:	e5831000 	str	r1, [r3]                                      
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   2372c:	e59d1010 	ldr	r1, [sp, #16]                                 
   23730:	e5d13000 	ldrb	r3, [r1]                                     
   23734:	e3530000 	cmp	r3, #0                                        
   23738:	0a000011 	beq	23784 <scangr+0x14c>                          
}                                                                     
                                                                      
/**                                                                   
 *  Extract a single group record from the database                   
 */                                                                   
static int scangr(                                                    
   2373c:	e2812001 	add	r2, r1, #1                                    
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   23740:	e3a00001 	mov	r0, #1                                        
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
   23744:	e3a0c000 	mov	ip, #0                                        
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
    if(*cp == ',') {                                                  
   23748:	e353002c 	cmp	r3, #44	; 0x2c                                
      *cp = '\0';                                                     
   2374c:	0542c001 	strbeq	ip, [r2, #-1]                              
      grp->gr_mem[memcount++] = cp + 1;                               
   23750:	0596300c 	ldreq	r3, [r6, #12]                               
   23754:	07832100 	streq	r2, [r3, r0, lsl #2]                        
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   23758:	e5f13001 	ldrb	r3, [r1, #1]!                                
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
      grp->gr_mem[memcount++] = cp + 1;                               
   2375c:	02800001 	addeq	r0, r0, #1                                  
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   23760:	e3530000 	cmp	r3, #0                                        
   23764:	e2822001 	add	r2, r2, #1                                    
   23768:	1afffff6 	bne	23748 <scangr+0x110>                          
   2376c:	e1a00100 	lsl	r0, r0, #2                                    
    if(*cp == ',') {                                                  
      *cp = '\0';                                                     
      grp->gr_mem[memcount++] = cp + 1;                               
    }                                                                 
  }                                                                   
  grp->gr_mem[memcount] = NULL;                                       
   23770:	e596300c 	ldr	r3, [r6, #12]                                 
   23774:	e3a02000 	mov	r2, #0                                        
   23778:	e7832000 	str	r2, [r3, r0]                                  
  return 1;                                                           
   2377c:	e3a00001 	mov	r0, #1                                        
   23780:	eaffffb9 	b	2366c <scangr+0x34>                             
                                                                      
  /*                                                                  
   * Fill in pointer array                                            
   */                                                                 
  grp->gr_mem[0] = grmem;                                             
  for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {                  
   23784:	e3a00004 	mov	r0, #4                                        <== NOT EXECUTED
   23788:	eafffff8 	b	23770 <scangr+0x138>                            <== NOT EXECUTED
                                                                      

000052d0 <siproc>: int i; /* * Obtain output semaphore if character will be echoed */ if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
    52d0:	e591203c 	ldr	r2, [r1, #60]	; 0x3c                          
    52d4:	e59f304c 	ldr	r3, [pc, #76]	; 5328 <siproc+0x58>            
    52d8:	e0023003 	and	r3, r2, r3                                    
    52dc:	e3530000 	cmp	r3, #0                                        
/*                                                                    
 * Process input character, with semaphore.                           
 */                                                                   
static int                                                            
siproc (unsigned char c, struct rtems_termios_tty *tty)               
{                                                                     
    52e0:	e92d4030 	push	{r4, r5, lr}                                 
    52e4:	e1a04001 	mov	r4, r1                                        
    52e8:	e1a05000 	mov	r5, r0                                        
  int i;                                                              
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
    52ec:	1a000001 	bne	52f8 <siproc+0x28>                            
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
  }                                                                   
  return i;                                                           
}                                                                     
    52f0:	e8bd4030 	pop	{r4, r5, lr}                                  <== NOT EXECUTED
    rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT); 
    i = iproc (c, tty);                                               
    rtems_semaphore_release (tty->osem);                              
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
    52f4:	eaffff81 	b	5100 <iproc>                                    <== NOT EXECUTED
                                                                      
  /*                                                                  
   * Obtain output semaphore if character will be echoed              
   */                                                                 
  if (tty->termios.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ECHOPRT|ECHOCTL|ECHOKE)) {
    rtems_semaphore_obtain (tty->osem, RTEMS_WAIT, RTEMS_NO_TIMEOUT); 
    52f8:	e3a01000 	mov	r1, #0                                        
    52fc:	e1a02001 	mov	r2, r1                                        
    5300:	e5940018 	ldr	r0, [r4, #24]                                 
    5304:	eb0004ba 	bl	65f4 <rtems_semaphore_obtain>                  
    i = iproc (c, tty);                                               
    5308:	e1a01004 	mov	r1, r4                                        
    530c:	e1a00005 	mov	r0, r5                                        
    5310:	ebffff7a 	bl	5100 <iproc>                                   
    5314:	e1a05000 	mov	r5, r0                                        
    rtems_semaphore_release (tty->osem);                              
    5318:	e5940018 	ldr	r0, [r4, #24]                                 
    531c:	eb0004fd 	bl	6718 <rtems_semaphore_release>                 
  }                                                                   
  else {                                                              
    i = iproc (c, tty);                                               
  }                                                                   
  return i;                                                           
}                                                                     
    5320:	e1a00005 	mov	r0, r5                                        
    5324:	e8bd8030 	pop	{r4, r5, pc}                                  
                                                                      

0000db24 <sparse_disk_ioctl>: /* * ioctl handler to be passed to the block device handler */ static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp ) {
    db24:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  rtems_status_code  sc;                                              
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
    db28:	e59fc2b8 	ldr	ip, [pc, #696]	; dde8 <sparse_disk_ioctl+0x2c4>
                                                                      
/*                                                                    
 * ioctl handler to be passed to the block device handler             
 */                                                                   
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
{                                                                     
    db2c:	e24dd018 	sub	sp, sp, #24                                   
  rtems_status_code  sc;                                              
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
    db30:	e151000c 	cmp	r1, ip                                        
                                                                      
/*                                                                    
 * ioctl handler to be passed to the block device handler             
 */                                                                   
static int sparse_disk_ioctl( rtems_disk_device *dd, uint32_t req, void *argp )
{                                                                     
    db34:	e58d200c 	str	r2, [sp, #12]                                 
                                                                      
static inline void *rtems_disk_get_driver_data(                       
  const rtems_disk_device *dd                                         
)                                                                     
{                                                                     
  return dd->driver_data;                                             
    db38:	e590503c 	ldr	r5, [r0, #60]	; 0x3c                          
  rtems_status_code  sc;                                              
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
    db3c:	0a000013 	beq	db90 <sparse_disk_ioctl+0x6c>                 
      case RTEMS_BLKDEV_REQ_WRITE:                                    
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
      default:                                                        
        break;                                                        
    }                                                                 
  } else if ( RTEMS_BLKIO_DELETED == req ) {                          
    db40:	e59fc2a4 	ldr	ip, [pc, #676]	; ddec <sparse_disk_ioctl+0x2c8>
    db44:	e151000c 	cmp	r1, ip                                        
    db48:	0a000002 	beq	db58 <sparse_disk_ioctl+0x34>                 
    if ( NULL != sd->delete_handler )                                 
      ( *sd->delete_handler )( sd );                                  
                                                                      
    return 0;                                                         
  } else {                                                            
    return rtems_blkdev_ioctl( dd, req, argp );                       
    db4c:	eb000c22 	bl	10bdc <rtems_blkdev_ioctl>                     
  }                                                                   
                                                                      
  errno = EINVAL;                                                     
  return -1;                                                          
}                                                                     
    db50:	e28dd018 	add	sp, sp, #24                                   
    db54:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
      default:                                                        
        break;                                                        
    }                                                                 
  } else if ( RTEMS_BLKIO_DELETED == req ) {                          
    sc = rtems_semaphore_delete( sd->mutex );                         
    db58:	e5950000 	ldr	r0, [r5]                                      
    db5c:	ebffeb0c 	bl	8794 <rtems_semaphore_delete>                  
                                                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
    db60:	e2504000 	subs	r4, r0, #0                                   
    db64:	1a00009d 	bne	dde0 <sparse_disk_ioctl+0x2bc>                
      rtems_fatal_error_occurred( 0xdeadbeef );                       
                                                                      
    sd->mutex = RTEMS_ID_NONE;                                        
                                                                      
    if ( NULL != sd->delete_handler )                                 
    db68:	e5953010 	ldr	r3, [r5, #16]                                 
    db6c:	e3530000 	cmp	r3, #0                                        
    sc = rtems_semaphore_delete( sd->mutex );                         
                                                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
      rtems_fatal_error_occurred( 0xdeadbeef );                       
                                                                      
    sd->mutex = RTEMS_ID_NONE;                                        
    db70:	e5854000 	str	r4, [r5]                                      
                                                                      
    if ( NULL != sd->delete_handler )                                 
      ( *sd->delete_handler )( sd );                                  
                                                                      
    return 0;                                                         
    db74:	01a00003 	moveq	r0, r3                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
      rtems_fatal_error_occurred( 0xdeadbeef );                       
                                                                      
    sd->mutex = RTEMS_ID_NONE;                                        
                                                                      
    if ( NULL != sd->delete_handler )                                 
    db78:	0afffff4 	beq	db50 <sparse_disk_ioctl+0x2c>                 
      ( *sd->delete_handler )( sd );                                  
    db7c:	e1a00005 	mov	r0, r5                                        
    db80:	e1a0e00f 	mov	lr, pc                                        
    db84:	e12fff13 	bx	r3                                             
                                                                      
    return 0;                                                         
    db88:	e1a00004 	mov	r0, r4                                        
    db8c:	eaffffef 	b	db50 <sparse_disk_ioctl+0x2c>                   
  rtems_sparse_disk *sd = rtems_disk_get_driver_data( dd );           
                                                                      
  if ( RTEMS_BLKIO_REQUEST == req ) {                                 
    rtems_blkdev_request *r = argp;                                   
                                                                      
    switch ( r->req ) {                                               
    db90:	e592a000 	ldr	sl, [r2]                                      
    db94:	e35a0001 	cmp	sl, #1                                        
    db98:	8a00008b 	bhi	ddcc <sparse_disk_ioctl+0x2a8>                
  rtems_blkdev_bnum       block;                                      
  uint8_t                *buff;                                       
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
    db9c:	e3a01000 	mov	r1, #0                                        
    dba0:	e5950000 	ldr	r0, [r5]                                      
    dba4:	e1a02001 	mov	r2, r1                                        
static int sparse_disk_read_write(                                    
  rtems_sparse_disk    *sparse_disk,                                  
  rtems_blkdev_request *req,                                          
  const bool            read )                                        
{                                                                     
  int                     rv = 0;                                     
    dba8:	e3a07000 	mov	r7, #0                                        
  rtems_blkdev_bnum       block;                                      
  uint8_t                *buff;                                       
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
    dbac:	ebffeb21 	bl	8838 <rtems_semaphore_obtain>                  
                                                                      
  for ( req_buffer = 0;                                               
    dbb0:	e58d7008 	str	r7, [sp, #8]                                  
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
    dbb4:	e59dc00c 	ldr	ip, [sp, #12]                                 
    dbb8:	e59c3010 	ldr	r3, [ip, #16]                                 
    dbbc:	e59dc008 	ldr	ip, [sp, #8]                                  
    dbc0:	e153000c 	cmp	r3, ip                                        
    dbc4:	9a000078 	bls	ddac <sparse_disk_ioctl+0x288>                
        ++req_buffer ) {                                              
    scatter_gather = &req->bufs[req_buffer];                          
    dbc8:	e59dc008 	ldr	ip, [sp, #8]                                  
    dbcc:	e1a0320c 	lsl	r3, ip, #4                                    
    dbd0:	e59dc00c 	ldr	ip, [sp, #12]                                 
    dbd4:	e2833018 	add	r3, r3, #24                                   
    dbd8:	e08c2003 	add	r2, ip, r3                                    
                                                                      
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
    dbdc:	e5924004 	ldr	r4, [r2, #4]                                  
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
    dbe0:	e1e01007 	mvn	r1, r7                                        
    dbe4:	e3540000 	cmp	r4, #0                                        
    dbe8:	e1a01fa1 	lsr	r1, r1, #31                                   
    dbec:	03a01000 	moveq	r1, #0                                      
    dbf0:	e3510000 	cmp	r1, #0                                        
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
        ++req_buffer ) {                                              
    scatter_gather = &req->bufs[req_buffer];                          
                                                                      
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    dbf4:	e592b008 	ldr	fp, [r2, #8]                                  
    block          = scatter_gather->block;                           
    dbf8:	e79c8003 	ldr	r8, [ip, r3]                                  
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
    dbfc:	0a00003b 	beq	dcf0 <sparse_disk_ioctl+0x1cc>                
    dc00:	e3a06000 	mov	r6, #0                                        
  const size_t            buffer_size )                               
{                                                                     
  unsigned int           i;                                           
  bool                   block_needs_writing = false;                 
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
    dc04:	e1a0900a 	mov	r9, sl                                        
    dc08:	e1a0a006 	mov	sl, r6                                        
    dc0c:	ea00001b 	b	dc80 <sparse_disk_ioctl+0x15c>                  
  const rtems_blkdev_bnum  block,                                     
  uint8_t                 *buffer,                                    
  const size_t             buffer_size )                              
{                                                                     
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
    dc10:	e58d9014 	str	r9, [sp, #20]                                 
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
                                                                      
  if ( buffer_size < bytes_to_copy )                                  
    bytes_to_copy = buffer_size;                                      
                                                                      
  key = bsearch(                                                      
    dc14:	e59fc1d4 	ldr	ip, [pc, #468]	; ddf0 <sparse_disk_ioctl+0x2cc>
    dc18:	e5952008 	ldr	r2, [r5, #8]                                  
    dc1c:	e5951018 	ldr	r1, [r5, #24]                                 
    dc20:	e3a03008 	mov	r3, #8                                        
    dc24:	e28d0010 	add	r0, sp, #16                                   
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
    dc28:	e595700c 	ldr	r7, [r5, #12]                                 
                                                                      
  if ( buffer_size < bytes_to_copy )                                  
    bytes_to_copy = buffer_size;                                      
                                                                      
  key = bsearch(                                                      
    dc2c:	e58dc000 	str	ip, [sp]                                      
    dc30:	eb002f00 	bl	19838 <bsearch>                                
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
    dc34:	e1540007 	cmp	r4, r7                                        
    dc38:	31a07004 	movcc	r7, r4                                      
    sparse_disk->used_count,                                          
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL != key )                                                  
    dc3c:	e2503000 	subs	r3, r0, #0                                   
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
      if ( read )                                                     
        rv = sparse_disk_read_block( sparse_disk,                     
    dc40:	e08b000a 	add	r0, fp, sl                                    
    sparse_disk->used_count,                                          
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL != key )                                                  
    dc44:	0a000024 	beq	dcdc <sparse_disk_ioctl+0x1b8>                
    memcpy( buffer, key->data, bytes_to_copy );                       
    dc48:	e5931004 	ldr	r1, [r3, #4]                                  
    dc4c:	e1a02007 	mov	r2, r7                                        
    dc50:	eb0031be 	bl	1a350 <memcpy>                                 
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
  else if ( block_needs_writing )                                     
    return -1;                                                        
                                                                      
  return bytes_to_copy;                                               
    dc54:	e0544007 	subs	r4, r4, r7                                   
    dc58:	03a02000 	moveq	r2, #0                                      
    dc5c:	13a02001 	movne	r2, #1                                      
    dc60:	e1a03007 	mov	r3, r7                                        
    dc64:	e3570000 	cmp	r7, #0                                        
    dc68:	b3a02000 	movlt	r2, #0                                      
    dc6c:	a2022001 	andge	r2, r2, #1                                  
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
    dc70:	e3520000 	cmp	r2, #0                                        
        rv = sparse_disk_write_block( sparse_disk,                    
                                      block,                          
                                      &buff[bytes_handled],           
                                      buff_size );                    
                                                                      
      ++block;                                                        
    dc74:	e2888001 	add	r8, r8, #1                                    
      bytes_handled += rv;                                            
    dc78:	e08aa003 	add	sl, sl, r3                                    
    bytes_handled  = 0;                                               
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
    dc7c:	0a00001a 	beq	dcec <sparse_disk_ioctl+0x1c8>                
      if ( read )                                                     
    dc80:	e3590000 	cmp	r9, #0                                        
  const rtems_blkdev_bnum  block,                                     
  uint8_t                 *buffer,                                    
  const size_t             buffer_size )                              
{                                                                     
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key = {                                
    dc84:	e58d8010 	str	r8, [sp, #16]                                 
    buff           = (uint8_t *) scatter_gather->buffer;              
    block          = scatter_gather->block;                           
    buff_size      = scatter_gather->length;                          
                                                                      
    while ( ( 0 <= rv ) && ( 0 < buff_size ) ) {                      
      if ( read )                                                     
    dc88:	0affffe0 	beq	dc10 <sparse_disk_ioctl+0xec>                 
  const size_t            buffer_size )                               
{                                                                     
  unsigned int           i;                                           
  bool                   block_needs_writing = false;                 
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
    dc8c:	e3a01000 	mov	r1, #0                                        
    dc90:	e58d1014 	str	r1, [sp, #20]                                 
                                                                      
  /* we only need to write the block if it is different from the fill pattern.
   * If the read method does not find a block it will deliver the fill pattern anyway.
   */                                                                 
                                                                      
  key = bsearch(                                                      
    dc94:	e59fc154 	ldr	ip, [pc, #340]	; ddf0 <sparse_disk_ioctl+0x2cc>
    dc98:	e5952008 	ldr	r2, [r5, #8]                                  
    dc9c:	e5951018 	ldr	r1, [r5, #24]                                 
    dca0:	e28d0010 	add	r0, sp, #16                                   
    dca4:	e3a03008 	mov	r3, #8                                        
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
    dca8:	e595700c 	ldr	r7, [r5, #12]                                 
                                                                      
  /* we only need to write the block if it is different from the fill pattern.
   * If the read method does not find a block it will deliver the fill pattern anyway.
   */                                                                 
                                                                      
  key = bsearch(                                                      
    dcac:	e58dc000 	str	ip, [sp]                                      
    dcb0:	eb002ee0 	bl	19838 <bsearch>                                
  rtems_sparse_disk_key *key;                                         
  rtems_sparse_disk_key  block_key           = {                      
    .block = block,                                                   
    .data  = NULL                                                     
  };                                                                  
  size_t                 bytes_to_copy = sparse_disk->media_block_size;
    dcb4:	e1540007 	cmp	r4, r7                                        
    dcb8:	31a07004 	movcc	r7, r4                                      
    sparse_disk->used_count,                                          
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    dcbc:	e2506000 	subs	r6, r0, #0                                   
        rv = sparse_disk_read_block( sparse_disk,                     
                                     block,                           
                                     &buff[bytes_handled],            
                                     buff_size );                     
      else                                                            
        rv = sparse_disk_write_block( sparse_disk,                    
    dcc0:	e08bc00a 	add	ip, fp, sl                                    
    sparse_disk->used_count,                                          
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    dcc4:	0a000016 	beq	dd24 <sparse_disk_ioctl+0x200>                
      key = sparse_disk_get_new_block( sparse_disk, block );          
    }                                                                 
  }                                                                   
                                                                      
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
    dcc8:	e5960004 	ldr	r0, [r6, #4]                                  
    dccc:	e1a0100c 	mov	r1, ip                                        
    dcd0:	e1a02007 	mov	r2, r7                                        
    dcd4:	eb00319d 	bl	1a350 <memcpy>                                 
    dcd8:	eaffffdd 	b	dc54 <sparse_disk_ioctl+0x130>                  
    );                                                                
                                                                      
  if ( NULL != key )                                                  
    memcpy( buffer, key->data, bytes_to_copy );                       
  else                                                                
    memset( buffer, sparse_disk->fill_pattern, buffer_size );         
    dcdc:	e5d51014 	ldrb	r1, [r5, #20]                                
    dce0:	e1a02004 	mov	r2, r4                                        
    dce4:	eb0031cf 	bl	1a428 <memset>                                 
    dce8:	eaffffd9 	b	dc54 <sparse_disk_ioctl+0x130>                  
    dcec:	e1a0a009 	mov	sl, r9                                        
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
                                                                      
  for ( req_buffer = 0;                                               
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
        ++req_buffer ) {                                              
    dcf0:	e59dc008 	ldr	ip, [sp, #8]                                  
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
                                                                      
  for ( req_buffer = 0;                                               
    dcf4:	e3570000 	cmp	r7, #0                                        
        ( 0 <= rv ) && ( req_buffer < req->bufnum );                  
        ++req_buffer ) {                                              
    dcf8:	e28cc001 	add	ip, ip, #1                                    
    dcfc:	e58dc008 	str	ip, [sp, #8]                                  
  size_t                  buff_size;                                  
  unsigned int            bytes_handled;                              
                                                                      
  rtems_semaphore_obtain( sparse_disk->mutex, RTEMS_WAIT, RTEMS_NO_TIMEOUT );
                                                                      
  for ( req_buffer = 0;                                               
    dd00:	aaffffab 	bge	dbb4 <sparse_disk_ioctl+0x90>                 
      bytes_handled += rv;                                            
      buff_size     -= rv;                                            
    }                                                                 
  }                                                                   
                                                                      
  rtems_semaphore_release( sparse_disk->mutex );                      
    dd04:	e5950000 	ldr	r0, [r5]                                      <== NOT EXECUTED
    dd08:	ebffeb13 	bl	895c <rtems_semaphore_release>                 <== NOT EXECUTED
static inline void rtems_blkdev_request_done(                         
  rtems_blkdev_request *req,                                          
  rtems_status_code status                                            
)                                                                     
{                                                                     
  (*req->done)(req, status);                                          
    dd0c:	e59d000c 	ldr	r0, [sp, #12]                                 <== NOT EXECUTED
    dd10:	e3a0101b 	mov	r1, #27                                       <== NOT EXECUTED
    dd14:	e1a0e00f 	mov	lr, pc                                        <== NOT EXECUTED
    dd18:	e590f004 	ldr	pc, [r0, #4]                                  <== NOT EXECUTED
    rtems_blkdev_request *r = argp;                                   
                                                                      
    switch ( r->req ) {                                               
      case RTEMS_BLKDEV_REQ_READ:                                     
      case RTEMS_BLKDEV_REQ_WRITE:                                    
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
    dd1c:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
    dd20:	eaffff8a 	b	db50 <sparse_disk_ioctl+0x2c>                   <== NOT EXECUTED
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
    dd24:	e3570000 	cmp	r7, #0                                        
    dd28:	0affffc9 	beq	dc54 <sparse_disk_ioctl+0x130>                
    dd2c:	e5dc3000 	ldrb	r3, [ip]                                     
      if ( buffer[i] != sparse_disk->fill_pattern )                   
    dd30:	e5d50014 	ldrb	r0, [r5, #20]                                
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
    dd34:	e1530000 	cmp	r3, r0                                        
    dd38:	01a0200c 	moveq	r2, ip                                      
    dd3c:	03a03001 	moveq	r3, #1                                      
    dd40:	1a000005 	bne	dd5c <sparse_disk_ioctl+0x238>                
    dd44:	e1530007 	cmp	r3, r7                                        
    dd48:	0affffc1 	beq	dc54 <sparse_disk_ioctl+0x130>                
      if ( buffer[i] != sparse_disk->fill_pattern )                   
    dd4c:	e5f21001 	ldrb	r1, [r2, #1]!                                
    sizeof( rtems_sparse_disk_key ),                                  
    sparse_disk_compare                                               
    );                                                                
                                                                      
  if ( NULL == key ) {                                                
    for ( i = 0; ( !block_needs_writing ) && ( i < bytes_to_copy ); ++i ) {
    dd50:	e1510000 	cmp	r1, r0                                        
    dd54:	e2833001 	add	r3, r3, #1                                    
    dd58:	0afffff9 	beq	dd44 <sparse_disk_ioctl+0x220>                
  rtems_sparse_disk      *sparse_disk,                                
  const rtems_blkdev_bnum block )                                     
{                                                                     
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
    dd5c:	e9954008 	ldmib	r5, {r3, lr}                                
    dd60:	e15e0003 	cmp	lr, r3                                        
    dd64:	3a000004 	bcc	dd7c <sparse_disk_ioctl+0x258>                
    }                                                                 
  }                                                                   
                                                                      
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
  else if ( block_needs_writing )                                     
    dd68:	e3e03000 	mvn	r3, #0                                        <== NOT EXECUTED
      key = sparse_disk_get_new_block( sparse_disk, block );          
    }                                                                 
  }                                                                   
                                                                      
  if ( NULL != key )                                                  
    memcpy( key->data, buffer, bytes_to_copy );                       
    dd6c:	e2844001 	add	r4, r4, #1                                    <== NOT EXECUTED
  else if ( block_needs_writing )                                     
    dd70:	e3a02000 	mov	r2, #0                                        <== NOT EXECUTED
    return -1;                                                        
    dd74:	e1a07003 	mov	r7, r3                                        <== NOT EXECUTED
    dd78:	eaffffbc 	b	dc70 <sparse_disk_ioctl+0x14c>                  <== NOT EXECUTED
  const rtems_blkdev_bnum block )                                     
{                                                                     
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
    key        = &sparse_disk->key_table[sparse_disk->used_count];    
    dd7c:	e5956018 	ldr	r6, [r5, #24]                                 
    key->block = block;                                               
    ++sparse_disk->used_count;                                        
    dd80:	e28e1001 	add	r1, lr, #1                                    
{                                                                     
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
    key        = &sparse_disk->key_table[sparse_disk->used_count];    
    key->block = block;                                               
    dd84:	e786818e 	str	r8, [r6, lr, lsl #3]                          
    ++sparse_disk->used_count;                                        
    qsort( sparse_disk->key_table, sparse_disk->used_count,           
    dd88:	e1a00006 	mov	r0, r6                                        
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
    key        = &sparse_disk->key_table[sparse_disk->used_count];    
    key->block = block;                                               
    ++sparse_disk->used_count;                                        
    dd8c:	e5851008 	str	r1, [r5, #8]                                  
    qsort( sparse_disk->key_table, sparse_disk->used_count,           
    dd90:	e3a02008 	mov	r2, #8                                        
    dd94:	e59f3054 	ldr	r3, [pc, #84]	; ddf0 <sparse_disk_ioctl+0x2cc>
    dd98:	e58dc004 	str	ip, [sp, #4]                                  
  const rtems_blkdev_bnum block )                                     
{                                                                     
  rtems_sparse_disk_key *key;                                         
                                                                      
  if ( sparse_disk->used_count < sparse_disk->blocks_with_buffer ) {  
    key        = &sparse_disk->key_table[sparse_disk->used_count];    
    dd9c:	e086618e 	add	r6, r6, lr, lsl #3                            
    key->block = block;                                               
    ++sparse_disk->used_count;                                        
    qsort( sparse_disk->key_table, sparse_disk->used_count,           
    dda0:	eb0031dc 	bl	1a518 <qsort>                                  
    dda4:	e59dc004 	ldr	ip, [sp, #4]                                  
    dda8:	eaffffc6 	b	dcc8 <sparse_disk_ioctl+0x1a4>                  
      bytes_handled += rv;                                            
      buff_size     -= rv;                                            
    }                                                                 
  }                                                                   
                                                                      
  rtems_semaphore_release( sparse_disk->mutex );                      
    ddac:	e5950000 	ldr	r0, [r5]                                      
    ddb0:	ebffeae9 	bl	895c <rtems_semaphore_release>                 
    ddb4:	e59d000c 	ldr	r0, [sp, #12]                                 
    ddb8:	e3a01000 	mov	r1, #0                                        
    ddbc:	e1a0e00f 	mov	lr, pc                                        
    ddc0:	e590f004 	ldr	pc, [r0, #4]                                  
    rtems_blkdev_request *r = argp;                                   
                                                                      
    switch ( r->req ) {                                               
      case RTEMS_BLKDEV_REQ_READ:                                     
      case RTEMS_BLKDEV_REQ_WRITE:                                    
        return sparse_disk_read_write( sd, r, r->req == RTEMS_BLKDEV_REQ_READ );
    ddc4:	e3a00000 	mov	r0, #0                                        
    ddc8:	eaffff60 	b	db50 <sparse_disk_ioctl+0x2c>                   
    return 0;                                                         
  } else {                                                            
    return rtems_blkdev_ioctl( dd, req, argp );                       
  }                                                                   
                                                                      
  errno = EINVAL;                                                     
    ddcc:	eb002eb8 	bl	198b4 <__errno>                                <== NOT EXECUTED
    ddd0:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
    ddd4:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
  return -1;                                                          
    ddd8:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
    dddc:	eaffff5b 	b	db50 <sparse_disk_ioctl+0x2c>                   <== NOT EXECUTED
    }                                                                 
  } else if ( RTEMS_BLKIO_DELETED == req ) {                          
    sc = rtems_semaphore_delete( sd->mutex );                         
                                                                      
    if ( RTEMS_SUCCESSFUL != sc )                                     
      rtems_fatal_error_occurred( 0xdeadbeef );                       
    dde0:	e59f000c 	ldr	r0, [pc, #12]	; ddf4 <sparse_disk_ioctl+0x2d0><== NOT EXECUTED
    dde4:	ebffec7c 	bl	8fdc <rtems_fatal_error_occurred>              <== NOT EXECUTED
                                                                      

00005f3c <unmount>: * in some form is supported on most UNIX and POSIX systems. This * routine is necessary to mount instantiations of a file system * into the file system name space. */ int unmount( const char *path ) {
    5f3c:	e92d4030 	push	{r4, r5, lr}                                 
    5f40:	e24dd03c 	sub	sp, sp, #60	; 0x3c                            
    5f44:	e1a01000 	mov	r1, r0                                        
  int rv = 0;                                                         
  rtems_filesystem_eval_path_context_t ctx;                           
  int eval_flags = RTEMS_FS_FOLLOW_LINK;                              
  const rtems_filesystem_location_info_t *currentloc =                
    5f48:	e3a02018 	mov	r2, #24                                       
    5f4c:	e1a0000d 	mov	r0, sp                                        
    5f50:	ebfff734 	bl	3c28 <rtems_filesystem_eval_path_start>        
    rtems_filesystem_eval_path_start( &ctx, path, eval_flags );       
  rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
    5f54:	e5905014 	ldr	r5, [r0, #20]                                 
  const rtems_filesystem_location_info_t *loc                         
)                                                                     
{                                                                     
  const rtems_filesystem_mount_table_entry_t *mt_entry = loc->mt_entry;
                                                                      
  return (*mt_entry->ops->are_nodes_equal_h)(                         
    5f58:	e595300c 	ldr	r3, [r5, #12]                                 
    5f5c:	e5951024 	ldr	r1, [r5, #36]	; 0x24                          
    5f60:	e1a0e00f 	mov	lr, pc                                        
    5f64:	e593f010 	ldr	pc, [r3, #16]                                 
                                                                      
  if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {   
    5f68:	e3500000 	cmp	r0, #0                                        
    5f6c:	0a00002d 	beq	6028 <unmount+0xec>                           
static bool contains_root_or_current_directory(                       
  const rtems_filesystem_mount_table_entry_t *mt_entry                
)                                                                     
{                                                                     
  const rtems_filesystem_location_info_t *root =                      
    &rtems_filesystem_root->location;                                 
    5f70:	e59f30c4 	ldr	r3, [pc, #196]	; 603c <unmount+0x100>         
    5f74:	e5933000 	ldr	r3, [r3]                                      
  const rtems_filesystem_location_info_t *current =                   
    &rtems_filesystem_current->location;                              
                                                                      
  return mt_entry == root->mt_entry || mt_entry == current->mt_entry; 
    5f78:	e5932004 	ldr	r2, [r3, #4]                                  
    5f7c:	e5922014 	ldr	r2, [r2, #20]                                 
    5f80:	e1550002 	cmp	r5, r2                                        
)                                                                     
{                                                                     
  const rtems_filesystem_location_info_t *root =                      
    &rtems_filesystem_root->location;                                 
  const rtems_filesystem_location_info_t *current =                   
    &rtems_filesystem_current->location;                              
    5f84:	e5933000 	ldr	r3, [r3]                                      
                                                                      
  return mt_entry == root->mt_entry || mt_entry == current->mt_entry; 
    5f88:	0a000021 	beq	6014 <unmount+0xd8>                           
    5f8c:	e5933014 	ldr	r3, [r3, #20]                                 
    5f90:	e1550003 	cmp	r5, r3                                        
    5f94:	0a00001e 	beq	6014 <unmount+0xd8>                           
  rtems_filesystem_mount_table_entry_t *mt_entry = currentloc->mt_entry;
                                                                      
  if ( rtems_filesystem_location_is_instance_root( currentloc ) ) {   
    if ( !contains_root_or_current_directory( mt_entry ) ) {          
      const rtems_filesystem_operations_table *mt_point_ops =         
        mt_entry->mt_point_node->location.mt_entry->ops;              
    5f98:	e5953020 	ldr	r3, [r5, #32]                                 
    5f9c:	e5933014 	ldr	r3, [r3, #20]                                 
                                                                      
      rv = (*mt_point_ops->unmount_h)( mt_entry );                    
    5fa0:	e1a00005 	mov	r0, r5                                        
    5fa4:	e593300c 	ldr	r3, [r3, #12]                                 
    5fa8:	e1a0e00f 	mov	lr, pc                                        
    5fac:	e593f038 	ldr	pc, [r3, #56]	; 0x38                          
      if ( rv == 0 ) {                                                
    5fb0:	e2504000 	subs	r4, r0, #0                                   
    5fb4:	0a000004 	beq	5fcc <unmount+0x90>                           
  } else {                                                            
    errno = EACCES;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
    5fb8:	e1a0000d 	mov	r0, sp                                        
    5fbc:	ebfff723 	bl	3c50 <rtems_filesystem_eval_path_cleanup>      
      rtems_fatal_error_occurred( 0xdeadbeef );                       
    }                                                                 
  }                                                                   
                                                                      
  return rv;                                                          
}                                                                     
    5fc0:	e1a00004 	mov	r0, r4                                        
    5fc4:	e28dd03c 	add	sp, sp, #60	; 0x3c                            
    5fc8:	e8bd8030 	pop	{r4, r5, pc}                                  
      const rtems_filesystem_operations_table *mt_point_ops =         
        mt_entry->mt_point_node->location.mt_entry->ops;              
                                                                      
      rv = (*mt_point_ops->unmount_h)( mt_entry );                    
      if ( rv == 0 ) {                                                
        rtems_id self_task_id = rtems_task_self();                    
    5fcc:	eb0003f7 	bl	6fb0 <rtems_task_self>                         
  uint32_t level;                                                     
                                                                      
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  __asm__ volatile (                                                  
    5fd0:	e10f3000 	mrs	r3, CPSR                                      
    5fd4:	e3832080 	orr	r2, r3, #128	; 0x80                           
    5fd8:	e129f002 	msr	CPSR_fc, r2                                   
        rtems_filesystem_mt_entry_declare_lock_context( lock_context );
                                                                      
        rtems_filesystem_mt_entry_lock( lock_context );               
        mt_entry->unmount_task = self_task_id;                        
    5fdc:	e585003c 	str	r0, [r5, #60]	; 0x3c                          
        mt_entry->mounted = false;                                    
    5fe0:	e5c54028 	strb	r4, [r5, #40]	; 0x28                         
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
#if defined(ARM_MULTILIB_ARCH_V4)                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  __asm__ volatile (                                                  
    5fe4:	e129f003 	msr	CPSR_fc, r3                                   
  } else {                                                            
    errno = EACCES;                                                   
    rv = -1;                                                          
  }                                                                   
                                                                      
  rtems_filesystem_eval_path_cleanup( &ctx );                         
    5fe8:	e1a0000d 	mov	r0, sp                                        
    5fec:	ebfff717 	bl	3c50 <rtems_filesystem_eval_path_cleanup>      
  rtems_interval ticks                                                
)                                                                     
{                                                                     
  rtems_event_set event_out;                                          
                                                                      
  return rtems_event_system_receive(                                  
    5ff0:	e3a01000 	mov	r1, #0                                        
    5ff4:	e3a00102 	mov	r0, #-2147483648	; 0x80000000                 
    5ff8:	e1a02001 	mov	r2, r1                                        
    5ffc:	e28d3038 	add	r3, sp, #56	; 0x38                            
    6000:	eb00031c 	bl	6c78 <rtems_event_system_receive>              
    rtems_status_code sc = rtems_event_transient_receive(             
      RTEMS_WAIT,                                                     
      RTEMS_NO_TIMEOUT                                                
    );                                                                
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
    6004:	e3500000 	cmp	r0, #0                                        
    6008:	0affffec 	beq	5fc0 <unmount+0x84>                           
      rtems_fatal_error_occurred( 0xdeadbeef );                       
    600c:	e59f002c 	ldr	r0, [pc, #44]	; 6040 <unmount+0x104>          <== NOT EXECUTED
    6010:	eb00048f 	bl	7254 <rtems_fatal_error_occurred>              <== NOT EXECUTED
        mt_entry->unmount_task = self_task_id;                        
        mt_entry->mounted = false;                                    
        rtems_filesystem_mt_entry_unlock( lock_context );             
      }                                                               
    } else {                                                          
      errno = EBUSY;                                                  
    6014:	eb001f3e 	bl	dd14 <__errno>                                 
    6018:	e3a03010 	mov	r3, #16                                       
    601c:	e5803000 	str	r3, [r0]                                      
      rv = -1;                                                        
    6020:	e3e04000 	mvn	r4, #0                                        
    6024:	eaffffe3 	b	5fb8 <unmount+0x7c>                             
    }                                                                 
  } else {                                                            
    errno = EACCES;                                                   
    6028:	eb001f39 	bl	dd14 <__errno>                                 
    602c:	e3a0300d 	mov	r3, #13                                       
    6030:	e5803000 	str	r3, [r0]                                      
    rv = -1;                                                          
    6034:	e3e04000 	mvn	r4, #0                                        
    6038:	eaffffde 	b	5fb8 <unmount+0x7c>                             
                                                                      

00005c10 <vprintk>: */ void vprintk( const char *fmt, va_list ap ) {
    5c10:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
    5c14:	e1a07000 	mov	r7, r0                                        
  for (; *fmt != '\0'; fmt++) {                                       
    5c18:	e5d00000 	ldrb	r0, [r0]                                     
 */                                                                   
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
    5c1c:	e24dd01c 	sub	sp, sp, #28                                   
  for (; *fmt != '\0'; fmt++) {                                       
    5c20:	e3500000 	cmp	r0, #0                                        
 */                                                                   
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
    5c24:	e58d1004 	str	r1, [sp, #4]                                  
  for (; *fmt != '\0'; fmt++) {                                       
    5c28:	0a00006a 	beq	5dd8 <vprintk+0x1c8>                          
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
    5c2c:	e28d8008 	add	r8, sp, #8                                    
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    char c;                                                           
                                                                      
    if (*fmt != '%') {                                                
    5c30:	e3500025 	cmp	r0, #37	; 0x25                                
    5c34:	1a000069 	bne	5de0 <vprintk+0x1d0>                          
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
    5c38:	e5d70001 	ldrb	r0, [r7, #1]                                 
    5c3c:	e3500030 	cmp	r0, #48	; 0x30                                
      lead = '0';                                                     
      fmt++;                                                          
    5c40:	05d70002 	ldrbeq	r0, [r7, #2]                               
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
    5c44:	03a03030 	moveq	r3, #48	; 0x30                              
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    5c48:	13a02020 	movne	r2, #32                                     
                                                                      
    if (*fmt != '%') {                                                
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    5c4c:	12877001 	addne	r7, r7, #1                                  
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    5c50:	02877002 	addeq	r7, r7, #2                                  
      rtems_putc(*fmt);                                               
      continue;                                                       
    }                                                                 
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
    5c54:	058d3000 	streq	r3, [sp]                                    
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
    bool sign = false;                                                
    char lead = ' ';                                                  
    5c58:	158d2000 	strne	r2, [sp]                                    
    fmt++;                                                            
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
    5c5c:	e350002d 	cmp	r0, #45	; 0x2d                                
      minus = true;                                                   
      fmt++;                                                          
    5c60:	05d70001 	ldrbeq	r0, [r7, #1]                               
    if (*fmt == '0' ) {                                               
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
    5c64:	03a0a001 	moveq	sl, #1                                      
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
    5c68:	e2403030 	sub	r3, r0, #48	; 0x30                            
      lead = '0';                                                     
      fmt++;                                                          
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    5c6c:	0087700a 	addeq	r7, r7, sl                                  
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    unsigned base = 0;                                                
    unsigned width = 0;                                               
    bool lflag = false;                                               
    bool minus = false;                                               
    5c70:	13a0a000 	movne	sl, #0                                      
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
    5c74:	e3530009 	cmp	r3, #9                                        
    5c78:	83a04000 	movhi	r4, #0                                      
    5c7c:	8a000009 	bhi	5ca8 <vprintk+0x98>                           
    5c80:	e1a03007 	mov	r3, r7                                        
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
    5c84:	e3a04000 	mov	r4, #0                                        
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
      width *= 10;                                                    
    5c88:	e0844104 	add	r4, r4, r4, lsl #2                            
      width += ((unsigned) *fmt - '0');                               
    5c8c:	e0804084 	add	r4, r0, r4, lsl #1                            
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
    5c90:	e5f30001 	ldrb	r0, [r3, #1]!                                
    5c94:	e2402030 	sub	r2, r0, #48	; 0x30                            
    5c98:	e3520009 	cmp	r2, #9                                        
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
    5c9c:	e2444030 	sub	r4, r4, #48	; 0x30                            
      fmt++;                                                          
    5ca0:	e2877001 	add	r7, r7, #1                                    
    }                                                                 
    if (*fmt == '-' ) {                                               
      minus = true;                                                   
      fmt++;                                                          
    }                                                                 
    while (*fmt >= '0' && *fmt <= '9' ) {                             
    5ca4:	9afffff7 	bls	5c88 <vprintk+0x78>                           
      width *= 10;                                                    
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
    5ca8:	e350006c 	cmp	r0, #108	; 0x6c                               
      lflag = true;                                                   
      c = *++fmt;                                                     
    5cac:	05d70001 	ldrbeq	r0, [r7, #1]                               
      width += ((unsigned) *fmt - '0');                               
      fmt++;                                                          
    }                                                                 
                                                                      
    if ((c = *fmt) == 'l') {                                          
      lflag = true;                                                   
    5cb0:	03a03001 	moveq	r3, #1                                      
      c = *++fmt;                                                     
    5cb4:	00877003 	addeq	r7, r7, r3                                  
    }                                                                 
    if ( c == 'c' ) {                                                 
    5cb8:	e3500063 	cmp	r0, #99	; 0x63                                
    5cbc:	0a000081 	beq	5ec8 <vprintk+0x2b8>                          
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
      rtems_putc(chr);                                                
      continue;                                                       
    }                                                                 
    if ( c == 's' ) {                                                 
    5cc0:	e3500073 	cmp	r0, #115	; 0x73                               
    5cc4:	0a00004b 	beq	5df8 <vprintk+0x1e8>                          
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
    5cc8:	e350006f 	cmp	r0, #111	; 0x6f                               
    5ccc:	1350004f 	cmpne	r0, #79	; 0x4f                              
      base = 8; sign = false;                                         
    5cd0:	03a02000 	moveq	r2, #0                                      
    5cd4:	03a09008 	moveq	r9, #8                                      
                                                                      
      continue;                                                       
    }                                                                 
                                                                      
    /* must be a numeric format or something unsupported */           
    if ( c == 'o' || c == 'O' ) {                                     
    5cd8:	0a000009 	beq	5d04 <vprintk+0xf4>                           
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
    5cdc:	e3500069 	cmp	r0, #105	; 0x69                               
    5ce0:	13500049 	cmpne	r0, #73	; 0x49                              
    5ce4:	0a000004 	beq	5cfc <vprintk+0xec>                           
                c == 'd' || c == 'D' ) {                              
    5ce8:	e3500064 	cmp	r0, #100	; 0x64                               
    5cec:	13500044 	cmpne	r0, #68	; 0x44                              
    5cf0:	13a02000 	movne	r2, #0                                      
    5cf4:	03a02001 	moveq	r2, #1                                      
    5cf8:	1a00007c 	bne	5ef0 <vprintk+0x2e0>                          
      base = 10; sign = true;                                         
    5cfc:	e3a02001 	mov	r2, #1                                        
    5d00:	e3a0900a 	mov	r9, #10                                       
    } else {                                                          
      rtems_putc(c);                                                  
      continue;                                                       
    }                                                                 
                                                                      
    printNum(                                                         
    5d04:	e59d3004 	ldr	r3, [sp, #4]                                  
  unsigned long unsigned_num;                                         
  unsigned long n;                                                    
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
    5d08:	e3520000 	cmp	r2, #0                                        
    } else {                                                          
      rtems_putc(c);                                                  
      continue;                                                       
    }                                                                 
                                                                      
    printNum(                                                         
    5d0c:	e593a000 	ldr	sl, [r3]                                      
      lflag ? va_arg(ap, long) : (long) va_arg(ap, int),              
    5d10:	e2833004 	add	r3, r3, #4                                    
    5d14:	e58d3004 	str	r3, [sp, #4]                                  
  unsigned long unsigned_num;                                         
  unsigned long n;                                                    
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
    5d18:	0a000001 	beq	5d24 <vprintk+0x114>                          
    5d1c:	e35a0000 	cmp	sl, #0                                        
    5d20:	ba000083 	blt	5f34 <vprintk+0x324>                          
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    5d24:	e1a0000a 	mov	r0, sl                                        
    5d28:	e1a01009 	mov	r1, r9                                        
    5d2c:	eb00429e 	bl	167ac <__aeabi_uidiv>                          
    5d30:	e3500000 	cmp	r0, #0                                        
    5d34:	e1a06000 	mov	r6, r0                                        
    5d38:	e1a05000 	mov	r5, r0                                        
    5d3c:	1209b0ff 	andne	fp, r9, #255	; 0xff                         
    if (maxwidth) maxwidth--;                                         
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
    5d40:	13a06000 	movne	r6, #0                                      
  while ((n = unsigned_num / base) > 0) {                             
    5d44:	1a000002 	bne	5d54 <vprintk+0x144>                          
    5d48:	ea00007f 	b	5f4c <vprintk+0x33c>                            
    5d4c:	e1a0a005 	mov	sl, r5                                        
    5d50:	e1a05000 	mov	r5, r0                                        
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    5d54:	e0030b95 	mul	r3, r5, fp                                    
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    5d58:	e1a00005 	mov	r0, r5                                        
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    5d5c:	e063a00a 	rsb	sl, r3, sl                                    
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    5d60:	e1a01009 	mov	r1, r9                                        
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    5d64:	e7c8a006 	strb	sl, [r8, r6]                                 
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    5d68:	eb00428f 	bl	167ac <__aeabi_uidiv>                          
    5d6c:	e3500000 	cmp	r0, #0                                        
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    5d70:	e2866001 	add	r6, r6, #1                                    
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    5d74:	1afffff4 	bne	5d4c <vprintk+0x13c>                          
    5d78:	e286a001 	add	sl, r6, #1                                    
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
    5d7c:	e28d201c 	add	r2, sp, #28                                   
    5d80:	e0826006 	add	r6, r2, r6                                    
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    5d84:	e154000a 	cmp	r4, sl                                        
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
    5d88:	e5465014 	strb	r5, [r6, #-20]                               
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    5d8c:	9a000004 	bls	5da4 <vprintk+0x194>                          
    rtems_putc(lead);                                                 
    5d90:	e59d0000 	ldr	r0, [sp]                                      
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    5d94:	e2444001 	sub	r4, r4, #1                                    
    rtems_putc(lead);                                                 
    5d98:	eb0014be 	bl	b098 <rtems_putc>                              
    toPrint[count++] = (char) (unsigned_num - (n * base));            
    unsigned_num = n;                                                 
  }                                                                   
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    5d9c:	e154000a 	cmp	r4, sl                                        
    5da0:	8afffffa 	bhi	5d90 <vprintk+0x180>                          
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
    5da4:	e35a0000 	cmp	sl, #0                                        
    5da8:	0a000006 	beq	5dc8 <vprintk+0x1b8>                          
 *  console is not yet initialized or in ISR's.                       
 *                                                                    
 * Arguments:                                                         
 *    as in printf: fmt - format string, ... - unnamed arguments.     
 */                                                                   
void vprintk(                                                         
    5dac:	e088400a 	add	r4, r8, sl                                    
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
    rtems_putc("0123456789ABCDEF"[(int)(toPrint[count-(n+1)])]);      
    5db0:	e5743001 	ldrb	r3, [r4, #-1]!                               
    5db4:	e59f219c 	ldr	r2, [pc, #412]	; 5f58 <vprintk+0x348>         
    5db8:	e7d20003 	ldrb	r0, [r2, r3]                                 
    5dbc:	eb0014b5 	bl	b098 <rtems_putc>                              
  toPrint[count++] = (char) unsigned_num;                             
                                                                      
  for (n=maxwidth ; n > count; n-- )                                  
    rtems_putc(lead);                                                 
                                                                      
  for (n = 0; n < count; n++) {                                       
    5dc0:	e1540008 	cmp	r4, r8                                        
    5dc4:	1afffff9 	bne	5db0 <vprintk+0x1a0>                          
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    5dc8:	e5d70001 	ldrb	r0, [r7, #1]                                 
    5dcc:	e3500000 	cmp	r0, #0                                        
    5dd0:	e2877001 	add	r7, r7, #1                                    
    5dd4:	1affff95 	bne	5c30 <vprintk+0x20>                           
      sign,                                                           
      width,                                                          
      lead                                                            
    );                                                                
  }                                                                   
}                                                                     
    5dd8:	e28dd01c 	add	sp, sp, #28                                   
    5ddc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
    } else if ( c == 'x' || c == 'X' ) {                              
      base = 16; sign = false;                                        
    } else if ( c == 'p' ) {                                          
      base = 16; sign = false; lflag = true;                          
    } else {                                                          
      rtems_putc(c);                                                  
    5de0:	eb0014ac 	bl	b098 <rtems_putc>                              
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    5de4:	e5d70001 	ldrb	r0, [r7, #1]                                 
    5de8:	e3500000 	cmp	r0, #0                                        
    5dec:	e2877001 	add	r7, r7, #1                                    
    5df0:	1affff8e 	bne	5c30 <vprintk+0x20>                           
    5df4:	eafffff7 	b	5dd8 <vprintk+0x1c8>                            
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
    5df8:	e59d3004 	ldr	r3, [sp, #4]                                  
    5dfc:	e5936000 	ldr	r6, [r3]                                      
                                                                      
      if ( str == NULL ) {                                            
        str = "";                                                     
    5e00:	e59f2154 	ldr	r2, [pc, #340]	; 5f5c <vprintk+0x34c>         
    5e04:	e3560000 	cmp	r6, #0                                        
    5e08:	01a06002 	moveq	r6, r2                                      
      }                                                               
                                                                      
      /* calculate length of string */                                
      for ( len=0, s=str ; *s ; len++, s++ )                          
    5e0c:	e5d65000 	ldrb	r5, [r6]                                     
    5e10:	e3550000 	cmp	r5, #0                                        
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
    5e14:	e2839004 	add	r9, r3, #4                                    
      if ( str == NULL ) {                                            
        str = "";                                                     
      }                                                               
                                                                      
      /* calculate length of string */                                
      for ( len=0, s=str ; *s ; len++, s++ )                          
    5e18:	0a000005 	beq	5e34 <vprintk+0x224>                          
    5e1c:	e1a03006 	mov	r3, r6                                        
    5e20:	e3a05000 	mov	r5, #0                                        
    5e24:	e5f32001 	ldrb	r2, [r3, #1]!                                
    5e28:	e3520000 	cmp	r2, #0                                        
    5e2c:	e2855001 	add	r5, r5, #1                                    
    5e30:	1afffffb 	bne	5e24 <vprintk+0x214>                          
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
    5e34:	e35a0000 	cmp	sl, #0                                        
    5e38:	1a000007 	bne	5e5c <vprintk+0x24c>                          
        for ( i=len ; i<width ; i++ )                                 
    5e3c:	e1550004 	cmp	r5, r4                                        
    5e40:	2a000005 	bcs	5e5c <vprintk+0x24c>                          
    5e44:	e1a0b005 	mov	fp, r5                                        <== NOT EXECUTED
          rtems_putc(' ');                                            
    5e48:	e3a00020 	mov	r0, #32                                       <== NOT EXECUTED
      for ( len=0, s=str ; *s ; len++, s++ )                          
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
        for ( i=len ; i<width ; i++ )                                 
    5e4c:	e28bb001 	add	fp, fp, #1                                    <== NOT EXECUTED
          rtems_putc(' ');                                            
    5e50:	eb001490 	bl	b098 <rtems_putc>                              <== NOT EXECUTED
      for ( len=0, s=str ; *s ; len++, s++ )                          
        ;                                                             
                                                                      
      /* leading spaces */                                            
      if ( !minus )                                                   
        for ( i=len ; i<width ; i++ )                                 
    5e54:	e15b0004 	cmp	fp, r4                                        <== NOT EXECUTED
    5e58:	3afffffa 	bcc	5e48 <vprintk+0x238>                          <== NOT EXECUTED
          rtems_putc(' ');                                            
                                                                      
      /* no width option */                                           
      if (width == 0) {                                               
    5e5c:	e3540000 	cmp	r4, #0                                        
    5e60:	1a000002 	bne	5e70 <vprintk+0x260>                          
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
    5e64:	e3550000 	cmp	r5, #0                                        
    5e68:	0a000007 	beq	5e8c <vprintk+0x27c>                          
    5e6c:	e1a04005 	mov	r4, r5                                        
    5e70:	e5d60000 	ldrb	r0, [r6]                                     
    5e74:	e3500000 	cmp	r0, #0                                        
    5e78:	0a000003 	beq	5e8c <vprintk+0x27c>                          
        rtems_putc(*str);                                             
    5e7c:	eb001485 	bl	b098 <rtems_putc>                              
      if (width == 0) {                                               
          width = len;                                                
      }                                                               
                                                                      
      /* output the string */                                         
      for ( i=0 ; i<width && *str ; str++ )                           
    5e80:	e5f60001 	ldrb	r0, [r6, #1]!                                
    5e84:	e3500000 	cmp	r0, #0                                        
    5e88:	1afffffb 	bne	5e7c <vprintk+0x26c>                          
        rtems_putc(*str);                                             
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
    5e8c:	e35a0000 	cmp	sl, #0                                        
    5e90:	0a000006 	beq	5eb0 <vprintk+0x2a0>                          
        for ( i=len ; i<width ; i++ )                                 
    5e94:	e1550004 	cmp	r5, r4                                        
    5e98:	2a000004 	bcs	5eb0 <vprintk+0x2a0>                          
          rtems_putc(' ');                                            
    5e9c:	e3a00020 	mov	r0, #32                                       
      for ( i=0 ; i<width && *str ; str++ )                           
        rtems_putc(*str);                                             
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
        for ( i=len ; i<width ; i++ )                                 
    5ea0:	e2855001 	add	r5, r5, #1                                    
          rtems_putc(' ');                                            
    5ea4:	eb00147b 	bl	b098 <rtems_putc>                              
      for ( i=0 ; i<width && *str ; str++ )                           
        rtems_putc(*str);                                             
                                                                      
      /* trailing spaces */                                           
      if ( minus )                                                    
        for ( i=len ; i<width ; i++ )                                 
    5ea8:	e1550004 	cmp	r5, r4                                        
    5eac:	3afffffa 	bcc	5e9c <vprintk+0x28c>                          
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    5eb0:	e5d70001 	ldrb	r0, [r7, #1]                                 
    5eb4:	e3500000 	cmp	r0, #0                                        
    }                                                                 
    if ( c == 's' ) {                                                 
      unsigned i, len;                                                
      char *s, *str;                                                  
                                                                      
      str = va_arg(ap, char *);                                       
    5eb8:	e58d9004 	str	r9, [sp, #4]                                  
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    5ebc:	e2877001 	add	r7, r7, #1                                    
    5ec0:	1affff5a 	bne	5c30 <vprintk+0x20>                           
    5ec4:	eaffffc3 	b	5dd8 <vprintk+0x1c8>                            
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
      rtems_putc(chr);                                                
    5ec8:	e59d2004 	ldr	r2, [sp, #4]                                  
    5ecc:	e5d20000 	ldrb	r0, [r2]                                     
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
    5ed0:	e2824004 	add	r4, r2, #4                                    
      rtems_putc(chr);                                                
    5ed4:	eb00146f 	bl	b098 <rtems_putc>                              
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    5ed8:	e5d70001 	ldrb	r0, [r7, #1]                                 
    5edc:	e3500000 	cmp	r0, #0                                        
      lflag = true;                                                   
      c = *++fmt;                                                     
    }                                                                 
    if ( c == 'c' ) {                                                 
      /* need a cast here since va_arg() only takes fully promoted types */
      char chr = (char) va_arg(ap, int);                              
    5ee0:	e58d4004 	str	r4, [sp, #4]                                  
void vprintk(                                                         
  const char *fmt,                                                    
  va_list     ap                                                      
)                                                                     
{                                                                     
  for (; *fmt != '\0'; fmt++) {                                       
    5ee4:	e2877001 	add	r7, r7, #1                                    
    5ee8:	1affff50 	bne	5c30 <vprintk+0x20>                           
    5eec:	eaffffb9 	b	5dd8 <vprintk+0x1c8>                            
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
    5ef0:	e3500075 	cmp	r0, #117	; 0x75                               
    5ef4:	13500055 	cmpne	r0, #85	; 0x55                              
    5ef8:	13a01000 	movne	r1, #0                                      
    5efc:	03a01001 	moveq	r1, #1                                      
      base = 10; sign = false;                                        
    5f00:	03a0900a 	moveq	r9, #10                                     
    if ( c == 'o' || c == 'O' ) {                                     
      base = 8; sign = false;                                         
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
    5f04:	0affff7e 	beq	5d04 <vprintk+0xf4>                           
      base = 10; sign = false;                                        
    } else if ( c == 'x' || c == 'X' ) {                              
    5f08:	e3500078 	cmp	r0, #120	; 0x78                               
    5f0c:	13500058 	cmpne	r0, #88	; 0x58                              
    5f10:	13a02000 	movne	r2, #0                                      
    5f14:	03a02001 	moveq	r2, #1                                      
      base = 16; sign = false;                                        
    5f18:	03a09010 	moveq	r9, #16                                     
    5f1c:	01a02001 	moveq	r2, r1                                      
    } else if ( c == 'i' || c == 'I' ||                               
                c == 'd' || c == 'D' ) {                              
      base = 10; sign = true;                                         
    } else if ( c == 'u' || c == 'U' ) {                              
      base = 10; sign = false;                                        
    } else if ( c == 'x' || c == 'X' ) {                              
    5f20:	0affff77 	beq	5d04 <vprintk+0xf4>                           
      base = 16; sign = false;                                        
    } else if ( c == 'p' ) {                                          
    5f24:	e3500070 	cmp	r0, #112	; 0x70                               
    5f28:	1affffac 	bne	5de0 <vprintk+0x1d0>                          
      base = 16; sign = false; lflag = true;                          
    5f2c:	e3a09010 	mov	r9, #16                                       
    5f30:	eaffff73 	b	5d04 <vprintk+0xf4>                             
  unsigned long n;                                                    
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
    rtems_putc('-');                                                  
    5f34:	e3a0002d 	mov	r0, #45	; 0x2d                                <== NOT EXECUTED
    5f38:	eb001456 	bl	b098 <rtems_putc>                              <== NOT EXECUTED
    unsigned_num = (unsigned long) -num;                              
    if (maxwidth) maxwidth--;                                         
    5f3c:	e3540000 	cmp	r4, #0                                        <== NOT EXECUTED
  unsigned count;                                                     
  char toPrint[20];                                                   
                                                                      
  if ( sign && (num <  0) ) {                                         
    rtems_putc('-');                                                  
    unsigned_num = (unsigned long) -num;                              
    5f40:	e26aa000 	rsb	sl, sl, #0                                    <== NOT EXECUTED
    if (maxwidth) maxwidth--;                                         
    5f44:	12444001 	subne	r4, r4, #1                                  <== NOT EXECUTED
    5f48:	eaffff75 	b	5d24 <vprintk+0x114>                            <== NOT EXECUTED
  } else {                                                            
    unsigned_num = (unsigned long) num;                               
  }                                                                   
                                                                      
  count = 0;                                                          
  while ((n = unsigned_num / base) > 0) {                             
    5f4c:	e1a0500a 	mov	r5, sl                                        
    5f50:	e3a0a001 	mov	sl, #1                                        
    5f54:	eaffff88 	b	5d7c <vprintk+0x16c>                            
                                                                      

00018cd0 <write>: size_t count ) { rtems_libio_t *iop; rtems_libio_check_fd( fd );
   18cd0:	e59f3080 	ldr	r3, [pc, #128]	; 18d58 <write+0x88>           
   18cd4:	e5933000 	ldr	r3, [r3]                                      
   18cd8:	e1500003 	cmp	r0, r3                                        
ssize_t write(                                                        
  int         fd,                                                     
  const void *buffer,                                                 
  size_t      count                                                   
)                                                                     
{                                                                     
   18cdc:	e92d4010 	push	{r4, lr}                                     
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
   18ce0:	2a000012 	bcs	18d30 <write+0x60>                            
  iop = rtems_libio_iop( fd );                                        
   18ce4:	e59f4070 	ldr	r4, [pc, #112]	; 18d5c <write+0x8c>           
   18ce8:	e5944000 	ldr	r4, [r4]                                      
   18cec:	e0800080 	add	r0, r0, r0, lsl #1                            
   18cf0:	e0840200 	add	r0, r4, r0, lsl #4                            
  rtems_libio_check_is_open( iop );                                   
   18cf4:	e590400c 	ldr	r4, [r0, #12]                                 
   18cf8:	e3140c01 	tst	r4, #256	; 0x100                              
   18cfc:	0a00000b 	beq	18d30 <write+0x60>                            
  rtems_libio_check_buffer( buffer );                                 
   18d00:	e3510000 	cmp	r1, #0                                        
   18d04:	0a00000e 	beq	18d44 <write+0x74>                            
  rtems_libio_check_count( count );                                   
   18d08:	e3520000 	cmp	r2, #0                                        
   18d0c:	0a000005 	beq	18d28 <write+0x58>                            
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
   18d10:	e3140004 	tst	r4, #4                                        
   18d14:	0a000005 	beq	18d30 <write+0x60>                            
                                                                      
  /*                                                                  
   *  Now process the write() request.                                
   */                                                                 
  return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );    
   18d18:	e5903020 	ldr	r3, [r0, #32]                                 
   18d1c:	e1a0e00f 	mov	lr, pc                                        
   18d20:	e593f00c 	ldr	pc, [r3, #12]                                 
   18d24:	e8bd8010 	pop	{r4, pc}                                      
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
  rtems_libio_check_count( count );                                   
   18d28:	e1a00002 	mov	r0, r2                                        
                                                                      
  /*                                                                  
   *  Now process the write() request.                                
   */                                                                 
  return (*iop->pathinfo.handlers->write_h)( iop, buffer, count );    
}                                                                     
   18d2c:	e8bd8010 	pop	{r4, pc}                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
  rtems_libio_check_count( count );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
   18d30:	ebffd2ac 	bl	d7e8 <__errno>                                 
   18d34:	e3a03009 	mov	r3, #9                                        
   18d38:	e5803000 	str	r3, [r0]                                      
   18d3c:	e3e00000 	mvn	r0, #0                                        
   18d40:	e8bd8010 	pop	{r4, pc}                                      
  rtems_libio_t     *iop;                                             
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_buffer( buffer );                                 
   18d44:	ebffd2a7 	bl	d7e8 <__errno>                                 <== NOT EXECUTED
   18d48:	e3a03016 	mov	r3, #22                                       <== NOT EXECUTED
   18d4c:	e5803000 	str	r3, [r0]                                      <== NOT EXECUTED
   18d50:	e3e00000 	mvn	r0, #0                                        <== NOT EXECUTED
   18d54:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
                                                                      

00006e14 <writev>: int bytes; rtems_libio_t *iop; ssize_t old; bool all_zeros; rtems_libio_check_fd( fd );
    6e14:	e59f3138 	ldr	r3, [pc, #312]	; 6f54 <writev+0x140>          
    6e18:	e5933000 	ldr	r3, [r3]                                      
    6e1c:	e1500003 	cmp	r0, r3                                        
ssize_t writev(                                                       
  int                 fd,                                             
  const struct iovec *iov,                                            
  int                 iovcnt                                          
)                                                                     
{                                                                     
    6e20:	e92d41f0 	push	{r4, r5, r6, r7, r8, lr}                     
    6e24:	e1a04002 	mov	r4, r2                                        
  int            bytes;                                               
  rtems_libio_t *iop;                                                 
  ssize_t        old;                                                 
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
    6e28:	2a000042 	bcs	6f38 <writev+0x124>                           
  iop = rtems_libio_iop( fd );                                        
    6e2c:	e59f3124 	ldr	r3, [pc, #292]	; 6f58 <writev+0x144>          
    6e30:	e5933000 	ldr	r3, [r3]                                      
    6e34:	e0800080 	add	r0, r0, r0, lsl #1                            
    6e38:	e0838200 	add	r8, r3, r0, lsl #4                            
  rtems_libio_check_is_open( iop );                                   
    6e3c:	e598300c 	ldr	r3, [r8, #12]                                 
    6e40:	e3130c01 	tst	r3, #256	; 0x100                              
    6e44:	0a00003b 	beq	6f38 <writev+0x124>                           
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
    6e48:	e3130004 	tst	r3, #4                                        
    6e4c:	0a000039 	beq	6f38 <writev+0x124>                           
                                                                      
  /*                                                                  
   *  Argument validation on IO vector                                
   */                                                                 
  if ( !iov )                                                         
    6e50:	e3510000 	cmp	r1, #0                                        
    6e54:	0a000031 	beq	6f20 <writev+0x10c>                           
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    6e58:	e3520000 	cmp	r2, #0                                        
    6e5c:	da00002f 	ble	6f20 <writev+0x10c>                           
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
    6e60:	e3520b01 	cmp	r2, #1024	; 0x400                             
    6e64:	ca00002d 	bgt	6f20 <writev+0x10c>                           
    rtems_set_errno_and_return_minus_one( EINVAL );                   
    6e68:	e1a05001 	mov	r5, r1                                        
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt <= 0 )                                                  
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( iovcnt > IOV_MAX )                                             
    6e6c:	e3a01000 	mov	r1, #0                                        
    6e70:	e1a02005 	mov	r2, r5                                        
    6e74:	e3a06001 	mov	r6, #1                                        
    6e78:	e1a07001 	mov	r7, r1                                        
    6e7c:	ea000000 	b	6e84 <writev+0x70>                              
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    6e80:	e1a07003 	mov	r7, r3                                        
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
    6e84:	e5923000 	ldr	r3, [r2]                                      
    6e88:	e3530000 	cmp	r3, #0                                        
   *  this loop does that check as well and sets "all-zero" appropriately.
   *  The variable "all_zero" is used as an early exit point before   
   *  entering the write loop.                                        
   */                                                                 
  all_zeros = true;                                                   
  for ( old=0, total=0, v=0 ; v < iovcnt ; v++ ) {                    
    6e8c:	e2811001 	add	r1, r1, #1                                    
                                                                      
    /*                                                                
     *  iov[v].iov_len cannot be less than 0 because size_t is unsigned.
     *  So we only check for zero.                                    
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
    6e90:	0a000022 	beq	6f20 <writev+0x10c>                           
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
    6e94:	e5920004 	ldr	r0, [r2, #4]                                  
      all_zeros = false;                                              
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    6e98:	e0803007 	add	r3, r0, r7                                    
    if ( total < old || total > SSIZE_MAX )                           
    6e9c:	e1570003 	cmp	r7, r3                                        
    6ea0:	d3a07000 	movle	r7, #0                                      
    6ea4:	c3a07001 	movgt	r7, #1                                      
     */                                                               
    if ( iov[v].iov_base == 0 )                                       
      rtems_set_errno_and_return_minus_one( EINVAL );                 
                                                                      
    if ( iov[v].iov_len )                                             
      all_zeros = false;                                              
    6ea8:	e3500000 	cmp	r0, #0                                        
    6eac:	13a06000 	movne	r6, #0                                      
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
    6eb0:	e1977fa3 	orrs	r7, r7, r3, lsr #31                          
    6eb4:	1a000019 	bne	6f20 <writev+0x10c>                           
   *  this loop does that check as well and sets "all-zero" appropriately.
   *  The variable "all_zero" is used as an early exit point before   
   *  entering the write loop.                                        
   */                                                                 
  all_zeros = true;                                                   
  for ( old=0, total=0, v=0 ; v < iovcnt ; v++ ) {                    
    6eb8:	e1510004 	cmp	r1, r4                                        
    6ebc:	e2822008 	add	r2, r2, #8                                    
    6ec0:	1affffee 	bne	6e80 <writev+0x6c>                            
  }                                                                   
                                                                      
  /*                                                                  
   * A writev with all zeros is supposed to have no effect per OpenGroup.
   */                                                                 
  if ( all_zeros == true ) {                                          
    6ec4:	e3560000 	cmp	r6, #0                                        
    6ec8:	1a000018 	bne	6f30 <writev+0x11c>                           
    6ecc:	e1a07006 	mov	r7, r6                                        
    6ed0:	ea000002 	b	6ee0 <writev+0xcc>                              
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    6ed4:	e1560004 	cmp	r6, r4                                        
    6ed8:	e2855008 	add	r5, r5, #8                                    
    6edc:	0a000013 	beq	6f30 <writev+0x11c>                           
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
    6ee0:	e5952004 	ldr	r2, [r5, #4]                                  
    6ee4:	e3520000 	cmp	r2, #0                                        
  }                                                                   
                                                                      
  /*                                                                  
   *  Now process the writev().                                       
   */                                                                 
  for ( total=0, v=0 ; v < iovcnt ; v++ ) {                           
    6ee8:	e2866001 	add	r6, r6, #1                                    
    /* all zero lengths has no effect */                              
    if ( iov[v].iov_len == 0 )                                        
    6eec:	0afffff8 	beq	6ed4 <writev+0xc0>                            
      continue;                                                       
                                                                      
    bytes = (*iop->pathinfo.handlers->write_h)(                       
    6ef0:	e5951000 	ldr	r1, [r5]                                      
    6ef4:	e5983020 	ldr	r3, [r8, #32]                                 
    6ef8:	e1a00008 	mov	r0, r8                                        
    6efc:	e1a0e00f 	mov	lr, pc                                        
    6f00:	e593f00c 	ldr	pc, [r3, #12]                                 
      iop,                                                            
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
    6f04:	e3500000 	cmp	r0, #0                                        
    6f08:	ba00000f 	blt	6f4c <writev+0x138>                           
                                                                      
    if ( bytes > 0 ) {                                                
      total       += bytes;                                           
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
    6f0c:	e5953004 	ldr	r3, [r5, #4]                                  
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
                                                                      
    if ( bytes > 0 ) {                                                
      total       += bytes;                                           
    6f10:	10877000 	addne	r7, r7, r0                                  
    }                                                                 
                                                                      
    if (bytes != iov[ v ].iov_len)                                    
    6f14:	e1500003 	cmp	r0, r3                                        
    6f18:	0affffed 	beq	6ed4 <writev+0xc0>                            
    6f1c:	ea000003 	b	6f30 <writev+0x11c>                             <== NOT EXECUTED
                                                                      
    /* check for wrap */                                              
    old    = total;                                                   
    total += iov[v].iov_len;                                          
    if ( total < old || total > SSIZE_MAX )                           
      rtems_set_errno_and_return_minus_one( EINVAL );                 
    6f20:	eb001d84 	bl	e538 <__errno>                                 
    6f24:	e3a03016 	mov	r3, #22                                       
    6f28:	e5803000 	str	r3, [r0]                                      
    6f2c:	e3e07000 	mvn	r7, #0                                        
    if (bytes != iov[ v ].iov_len)                                    
      break;                                                          
  }                                                                   
                                                                      
  return total;                                                       
}                                                                     
    6f30:	e1a00007 	mov	r0, r7                                        
    6f34:	e8bd81f0 	pop	{r4, r5, r6, r7, r8, pc}                      
  bool           all_zeros;                                           
                                                                      
  rtems_libio_check_fd( fd );                                         
  iop = rtems_libio_iop( fd );                                        
  rtems_libio_check_is_open( iop );                                   
  rtems_libio_check_permissions_with_error( iop, LIBIO_FLAGS_WRITE, EBADF );
    6f38:	eb001d7e 	bl	e538 <__errno>                                 
    6f3c:	e3a03009 	mov	r3, #9                                        
    6f40:	e5803000 	str	r3, [r0]                                      
    6f44:	e3e07000 	mvn	r7, #0                                        
    6f48:	eafffff8 	b	6f30 <writev+0x11c>                             
      iov[v].iov_base,                                                
      iov[v].iov_len                                                  
    );                                                                
                                                                      
    if ( bytes < 0 )                                                  
      return -1;                                                      
    6f4c:	e3e07000 	mvn	r7, #0                                        <== NOT EXECUTED
    6f50:	eafffff6 	b	6f30 <writev+0x11c>                             <== NOT EXECUTED